Здравствуйте ua1zcl, Вы писали:
U>Если программа так решила то ничего не поделаешь. Редактировать код этой програмы надо.
Видимо так :((
Некторые программы правильно запускаются, как им и было сказано.
Хотя есть тому же калькулятору потом послать WM_MINIMIZE, то он всё делает беспрекословно.
Отсель вытекает следующий вопрос:
как отправить сиё сообщение звежезапущенному приложению?
ShellExecute возвращает только свой код возврата,
CreateProcess — hProcess, hThread, dwProcessId, dwThreadId.
Как получить HWND главного окна?
Перебирать все окна и сравнивать hProcess ооочень не хочется.....
:???:
Здравствуйте DeusNoxious, Вы писали:
DN>Здравствуйте ua1zcl, Вы писали:
U>>Если программа так решила то ничего не поделаешь. Редактировать код этой програмы надо. DN>Видимо так ( DN>Некторые программы правильно запускаются, как им и было сказано. DN>Хотя есть тому же калькулятору потом послать WM_MINIMIZE, то он всё делает беспрекословно. DN>Отсель вытекает следующий вопрос: DN>как отправить сиё сообщение звежезапущенному приложению? DN>ShellExecute возвращает только свой код возврата, DN>CreateProcess — hProcess, hThread, dwProcessId, dwThreadId. DN>Как получить HWND главного окна? DN>Перебирать все окна и сравнивать hProcess ооочень не хочется..... DN>
если твое окно стопроцентно становиться активным — GetGUIThreadInfo()
GetGUIThreadInfo() не будет работать в Windows < W98.
Попробуйте послать сообщение после CreateProcess:
PostThreadMessage(ProcInfo->dwThreadId,WM_SYSCOMMAND,SC_MINIMIZE,0);
Последний параметр (координаты окна) нам пока неизвестен, но для пробы ноль послать можно.
Здравствуйте ua1zcl, Вы писали:
U>Здравствуйте Алекс, Вы писали:
А>>Здравствуйте DeusNoxious, Вы писали:
DN>>>Здравствуйте ua1zcl, Вы писали:
А>>если твое окно стопроцентно становиться активным — GetGUIThreadInfo()
U>GetGUIThreadInfo() не будет работать в Windows < W98.
тогда GetForegroundWindow()
Re[5]: Проблема с shellexecute
От:
Аноним
Дата:
25.08.02 08:10
Оценка:
А>>если твое окно стопроцентно становиться активным — GetGUIThreadInfo()
U>GetGUIThreadInfo() не будет работать в Windows < W98. U>Попробуйте послать сообщение после CreateProcess:
PostThreadMessage(ProcInfo->>dwThreadId,WM_SYSCOMMAND,SC_MINIMIZE,0); U>Последний параметр (координаты окна) нам пока неизвестен, но для пробы ноль послать можно.
Не работает.
В цикле делаю PostThreadMessage пока не вернёт True. True возвращает, но окно не минимизируется и GetLastError говорит 'Invalid Thread identifier'...
Re[4]: Проблема с shellexecute
От:
Аноним
Дата:
25.08.02 08:34
Оценка:
А>если твое окно стопроцентно становиться активным — GetGUIThreadInfo()
Насколько я понимаю, активным окно должно быть, только если в idThread передавать NULL. А если передавать ThreadProcessId, то имхо,
это не важно.
Она отрабатывает ОК, но в GUITHREADINFO возвращаются нули....
Для процесса SciCalc GetWindowThreadProcessId возвращает 588(DEC).
А CreateProcess в TProcessInformation возвращает:
ProcInfo.hProcess:=1932
ProcInfo.hThread:=1932
ProcInfo.dwProcessId:=1932
ProcInfo.dwThreadId:=1932
DN>тажа фигня. DN>Пишу в D5 under XP DN>Как же всё-таки запустить его минимизированно??
Процесс не может быть минимизированным. Минимизированным бывает только окно. Окон у процесса может не быть, может быть, может быть иногда, может быть много. Окно создается приожением гдето во время работы, а не при создании процесса.
То что передается в ShellExecute это лишь хинт запускаемому приложению. Это значит что приложение перед созданием окна должно позвать GetStartupInfo и создать окно с теми флагами что вы попросили. Вы делаете так в своих оконных приложениях? Вот и авторы калькулятора значит не сделали и ваш SW_MINIMIZE никто и не смотрит просто. Единственный выход — дожидаться пока приложение создаст окно и минимизировать его явно послав ему WM_SYSCOMMAND, SC_MINIMIZE например. Но сколько ждать появления окна и вообще появиться ли окно — никто не скажет.
Re[2]: Проблема с shellexecute
От:
Аноним
Дата:
03.08.08 13:09
Оценка:
DN>Для процесса SciCalc GetWindowThreadProcessId возвращает 588(DEC). DN>А CreateProcess в TProcessInformation возвращает: DN>ProcInfo.hProcess:=1932 DN>ProcInfo.hThread:=1932 DN>ProcInfo.dwProcessId:=1932 DN>ProcInfo.dwThreadId:=1932 DN>Чего то я не понимаю....
у вас гдето ошибка.