Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.10.14;
Скачать: [xml.tar.bz2];

Вниз

Как запустить прогу и получить handle её главного окна?   Найти похожие ветки 

 
Deus   (2002-08-29 18:21) [0]

Казалось, что сложного?
делаем
CreateProcess(nil, "C:\WINDOWS\system32\calc.exe", nil, nil, false, 0, nil, nil, StartInfo, ProcInfo);
получаем в ProcInfo хандл процесса, перебираем окна, сравниваем GetWindowThreadProcessId.
Не находим....
GetGUIThreadInfo так же не помогает....


 
Song   (2002-08-30 09:13) [1]

GetActiveWindow()


 
Ученик   (2002-08-30 09:21) [2]

После CreateProcess, наверно надо, WaitForInputIdle


 
Deus   (2002-08-30 11:33) [3]

2Song:
"GetActiveWindow()"
А если оно неактивным запустилось?

2Ученик:
Гм...
А зачем?
Нужное окно я могу найти! Но GetWindowThreadProcessId возвращает иные значения, нежели чем возвращенные в ProcInfo.
Конкретный пример:
Я запускаю "c:\windows\calc.exe". CreateProcess в ProcInfo вернул значения:
ProcInfo.hProcess:=1932
ProcInfo.hThread:=1932
ProcInfo.dwProcessId:=1932
ProcInfo.dwThreadId:=1932

Перебираю окна, нахожу окно с ClassName="SciCalc".
Но GetWindowThreadProcessId=588!


 
Ученик   (2002-08-30 12:00) [4]

>Deus © (30.08.02 11:33)
Может быть не с тем сравниваешь, я проверил ThreadID у окна и запущенного процесса они совпадают.


 
Deus   (2002-08-30 12:33) [5]

2Ученик:
Если не сложно, приведи код.
И, кстати, что ты запускаешь?


 
Ученик   (2002-08-30 12:36) [6]

procedure TForm1.Button1Click(Sender: TObject);
var
pi : TProcessInformation;
si : TStartupInfo;
begin
FillChar(si, SizeOf(TStartupInfo), 0);
si.cb := SizeOf(TStartupInfo);
if CreateProcess(NIL, "calc.exe",
NIL, NIL, False, 0, NIL, NIL, si, pi) then try
WaitForSingleObject(pi.hProcess, INFINITE)
finally
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess)
end
end;


 
Deus   (2002-08-30 12:52) [7]

Опс. У меня оказывается всё правильно было.
Я просто в отладочное окно слал hProcess вместе dwProcess :)))
Сорри за беспокойство....



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.10.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.011 c
6-45497
shelest
2002-08-13 10:41
2002.10.14
Как получить имя пользователя зная IP адрес машины и ее название?


1-45378
Tzota
2002-10-04 16:37
2002.10.14
Выполнение командной строки


3-45176
RDA
2002-09-20 08:16
2002.10.14
Фильтрация


6-45494
kosmach
2002-08-13 08:47
2002.10.14
ServerSocket Connections


8-45476
Makuha
2002-06-06 12:44
2002.10.14
Потоковое видео





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский