Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2009, 16:33   #11
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Для WinMain я не написал как вытянуть переменную окружения, а как вытятнуть командную строку я написал.
Отправить сообщение -
Код:
SendMessage(<дескриптор вашего контрола>, WM_SETTEXT, (WPARAM)-1, (LPARAM)lpCmd);
MaTBeu вне форума Ответить с цитированием
Старый 11.08.2009, 17:51   #12
damned20
Пользователь
 
Аватар для damned20
 
Регистрация: 20.05.2009
Сообщений: 24
По умолчанию

ЗА этое спс . Терь проблема в следуещем:
Цитата:
char * displacement= new char[5];
wsprintf(displacement, "%d", i);
if (CreateProcess("ClientLoadTest.exe" ,displacement,
NULL,NULL,FALSE,NULL,NULL,NULL,&cif ,&pi)==TRUE){
эт я так создаю процес в главноё проге и на этом этапе displacement равен тому что мне нужно!!!

и как мне в дочерной
Цитата:
_tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow){
if(strlen(lpCmdLine) != 0)
{
String* temp(lpCmdLine);
testGui->displacement=temp;
}
}
А здесь параметр lpCmdLine равен "". Или мож его как то считать нужно ?? Или приведение к String не правильное , но по другому вобще ошибка была не получается ??(( Помогите плиз!!

Последний раз редактировалось damned20; 11.08.2009 в 18:41.
damned20 вне форума Ответить с цитированием
Старый 11.08.2009, 18:35   #13
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

а lpCmdLine это разве уже не char* ?
pu4koff вне форума Ответить с цитированием
Старый 11.08.2009, 19:03   #14
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Да, LPCTSTR это typedef над char *. То есть никакого преобразования не нужно.
MaTBeu вне форума Ответить с цитированием
Старый 11.08.2009, 19:12   #15
damned20
Пользователь
 
Аватар для damned20
 
Регистрация: 20.05.2009
Сообщений: 24
По умолчанию

переобразование убрал всёравно параметр lpCmdLine равен "". Мож его как то нужно считывать или я незнаю ((( помогите мне завтра уже нуна отдать прогу. осталось ток это доделать. пожалуйста.
damned20 вне форума Ответить с цитированием
Старый 12.08.2009, 11:29   #16
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

А если через командную строку приложение вызвать, а не через CreateProcess, то всё равно lpCmdLine будет пустым?
Попробуй в общем так:
Код:
char sss[1024];
strcpy(sss, "\"ClientLoadTest.exe\" ");
strcat(sss, displacement);

if (CreateProcess(NULL, sss,
NULL,NULL,FALSE,NULL,NULL,NULL,&cif ,&pi)==TRUE){

Последний раз редактировалось pu4koff; 12.08.2009 в 11:35.
pu4koff вне форума Ответить с цитированием
Старый 12.08.2009, 11:49   #17
damned20
Пользователь
 
Аватар для damned20
 
Регистрация: 20.05.2009
Сообщений: 24
По умолчанию

Так как ты сказал я ещё не пробывал, а поставил проверочку :
if(strlen(lpCmdLine)!=0){
::Sleep(10000);
TLoadTestGui *testGui = new TLoadTestGui();
testGui->displacement=lpCmdLine;
}
то задержка сработала. Тойсть lpCmdLine приходит не пустым. так почему же тогда displacement равно "". Или мож в lpCmdLine просто какойто мусор валяется потому и условие проходит??

Попробывал с твоим вариантом, тоже самое , в условие заходит а displacement всёравно равно "" !! Значит проблема наверное в конвертации LPTSTR в String ?

Последний раз редактировалось MaTBeu; 12.08.2009 в 12:41.
damned20 вне форума Ответить с цитированием
Старый 12.08.2009, 12:09   #18
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Строки копируют вообще-то посредством strcpy.
Попробовал сейчас создал новый проект. Написал в начале WinMain:
Код:
strcpy(szTitle, lpCmdLine);
и в заголовке окна выводится то,что передали в CreateProcess:
Код:
	STARTUPINFO si;
	PROCESS_INFORMATION pi;

	ZeroMemory( &si, sizeof(si) );
	si.cb = sizeof(si);
	ZeroMemory( &pi, sizeof(pi) );

	if (!CreateProcess(
			NULL,
			"\"WinApp.exe\" preved",
			NULL,
			NULL,
			FALSE,
			NULL,
			NULL,
			NULL,
			&si,
			&pi))
	{
		std::cout << "Error: " << GetLastError() << std::endl;
	}
т.е. заголовок моего WinApp стал "preved"
pu4koff вне форума Ответить с цитированием
Старый 12.08.2009, 12:43   #19
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Попробуйте вот так
Код:
char *temp = new char[strlen(lpCmdLine[0])+1];
strcpy(temp, lpCmdLine[0]);
strcat(temp, "\0");


testGui->displacement = temp;
Дело в том, что командная строка - это массив строк, в которых слова без пробелов

Последний раз редактировалось MaTBeu; 12.08.2009 в 12:46.
MaTBeu вне форума Ответить с цитированием
Старый 12.08.2009, 12:52   #20
damned20
Пользователь
 
Аватар для damned20
 
Регистрация: 20.05.2009
Сообщений: 24
По умолчанию

error C2664: 'strlen' : cannot convert parameter 1 from 'CHAR' to 'const char *'
error C2664: 'strcpy' : cannot convert parameter 2 from 'CHAR' to 'const char *'

блин я уже не могу .. уже фиг зна сок порпобывал способов переобразования типов и в пустую ((

и так testGui->displacement у меня String* , lpCmdLine получается char* как правильно передать lpCmdLine в displacement что б textbox1->Text = displacement; хоть что то вывело? На даный момент textbox1 выводит пустым!!!

Последний раз редактировалось damned20; 12.08.2009 в 13:16.
damned20 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с DLL в C++ (Microsoft Visual C++) MaTBeu Visual C++ 27 15.07.2019 16:33
Вопрос по Microsoft Visual C++ DiZZZ Visual C++ 3 06.04.2009 18:45
Microsoft Visual C++ 6.0 saleens7 Помощь студентам 6 26.12.2008 16:16
Работа с окнами в Microsoft Visual Studio 2005 M@STeR Visual C++ 1 24.09.2008 14:44
Visual J# from Microsoft Visual Studio .NET Flash_ Общие вопросы по Java, Java SE, Kotlin 2 28.12.2006 10:16