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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2009, 16:54   #1
damned20
Пользователь
 
Аватар для damned20
 
Регистрация: 20.05.2009
Сообщений: 24
По умолчанию

Привет все! У меня стоит задача : с моей проги открыть приложение с новыми параметрами (например форму с уже введёнными textbox). Я понял что нужно запустить процес , но как правильно передать параметры в открываемое мною приложение без понятия ... Помогите плиз.

вот так я создаю процес:
Код:
if(MaxUser==Options::TConnectionOptions::MAX_USER){
			STARTUPINFO cif;
			ZeroMemory(&cif,sizeof(STARTUPINFO));
			cif.dwFlags=STARTF_USESTDHANDLES;
			cif.hStdInput=GetStdHandle(STD_INPUT_HANDLE);
			PROCESS_INFORMATION pi;
			if (CreateProcess("ClientLoadTest.exe",NULL,
				NULL,NULL,FALSE,NULL,NULL,NULL,&cif,&pi)==TRUE)break;
		}
Как мне правильно передать cif.hStdInput ?

Последний раз редактировалось MaTBeu; 10.08.2009 в 20:46.
damned20 вне форума Ответить с цитированием
Старый 10.08.2009, 20:51   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Смотрите на параметры функции CreateProcess, второй параметр - командная строка. Туда можно передавать char * строки. Потом еще есть переменная окружения, туда можно передавать указатель на все что хочешь с преобразованием к указателю на область памяти.
Код:
CreateProcess("ClientLoadTest.exe",NULL(командная строка),NULL,NULL,FALSE,NULL,NULL(переменная окружения),NULL,&cif,&pi)
В приложении которое вы запускаете, извлечь параметры командной строки можно из функции WinMain(если Win приложение), и из функции main, если консольное приложение
Код:
int WINAPI WinMain(HINSTANCE hPrev, hInst, LPTSTR lpCmdLine, int nShowCmd)
Код:
int main(int argc, char **argv)
Переменные окружения почти так же
Код:
int main(int argc, char **argv, void **envp)
Для WinMain я не помню как делается.

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

Мне не нужна командная строка я работая с окнами. Мне нужно в дочернем окне поменять значение textbox как это зделать ??? Окно я уже вызываю норм ... а вот как изменить значения незнаю (мож как то с помощью SendMessage).
damned20 вне форума Ответить с цитированием
Старый 11.08.2009, 12:20   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Через FindWindow находите хэндл нужного Edit'a и SendMessage(handle, WM_SETTEXT,NULL,"Новый текст")
pu4koff вне форума Ответить с цитированием
Старый 11.08.2009, 13:19   #5
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Можно при создании дочернего окна считывать текст из командной строки или переменной окружения и сразу заполнять ним textbox.

Вообще, яснее нужно выражаться.
MaTBeu вне форума Ответить с цитированием
Старый 11.08.2009, 13:35   #6
damned20
Пользователь
 
Аватар для damned20
 
Регистрация: 20.05.2009
Сообщений: 24
По умолчанию

оо вотет мне и нужно. А как мне правильно передать текст в командную строку, ну или в переменную??
damned20 вне форума Ответить с цитированием
Старый 11.08.2009, 13:48   #7
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Приложение, которое запускаете - вашего изготовления или чужая прога и исходников её нету?
Если ваша, то в её WinMain проверяйте какие параметры передали и заполняйте нужные edit'ы, а если чужая, то только через SendMessage получится.
pu4koff вне форума Ответить с цитированием
Старый 11.08.2009, 13:54   #8
damned20
Пользователь
 
Аватар для damned20
 
Регистрация: 20.05.2009
Сообщений: 24
По умолчанию

прога наша .. но в WinMain нету доступа к эдитам ини зашиты в других класах, а WinMain просто запукает наш метод RunApplication()!
damned20 вне форума Ответить с цитированием
Старый 11.08.2009, 14:24   #9
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

я показал как вытянуть в WinMain командную строку, запоминаете ее в строку и потом посылаете сообщение WM_SETTEXT нужному эдиту или контролу.
Передать командную строку можно так
Код:
CreateProcess("ClientLoadTest.exe","Ваша строка",NULL,NULL,FALSE,NULL,NULL,NULL,&cif,&pi)
MaTBeu вне форума Ответить с цитированием
Старый 11.08.2009, 15:09   #10
damned20
Пользователь
 
Аватар для damned20
 
Регистрация: 20.05.2009
Сообщений: 24
По умолчанию

я показал как вытянуть в WinMain командную строку, запоминаете ее в строку и потом посылаете сообщение WM_SETTEXT нужному эдиту или контролу.
Передать командную строку можно так

вы же написали что : Для WinMain я не помню как делается.

и подскажите пожалуйста ка правильно отправить WM_SETTEXT в нужный мне класс.

Последний раз редактировалось damned20; 11.08.2009 в 15:22.
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