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

Вниз

Объясните тупому: после CreateProcess(......., si, pi)   Найти похожие ветки 

 
@andrew   (2002-09-18 12:53) [0]

что у меня лежит в pi.hProcess и как мне это преобразовать в нормальный хендл процесса, чтобы потом SendMessage(?? и т.д.
Большое спасибо. Или я вообще "не о том". А как тогда?


 
Alx2   (2002-09-18 13:05) [1]

SendMessage хендл окошка просит.

Я после того, как процесс приготавливался к обработке сообщений, смотрел окошки, порождденные его потоками и запоминал их хэндлы. Через них и общались


 
@andrew   (2002-09-18 13:08) [2]

А на пальцах :-)


 
Digitman   (2002-09-18 13:11) [3]

В pi.hProcess "лежит" хэндл процесса, а не хэндл окна.
Ф-ция SendMessage() же, будучи предназначенной для посылки сообщений некоему потенциально существующему в системе окну, требует именно хэндл целевого окна (которое может быть создано - а может и не создано - одним из кодовых потоков процесса; например, "пустое" конс.приложение не создает никаких окон, но процесс такого приложения тем не менее имеет хэндл)

Если ты уверен (или предполагаешь), что некий процесс, созданный тобой ф-цией CreateProcess(), создает некое окно, которому ты желаешь послать некое сообщение, ты должен найти это окно среди прочих окон, регистрируемых системой всякий раз, когда некий процесс в некоем своем код.потоке успешно выполняет ф-цию CreateWindow[Ex](). При регистрации окна система фиксирует класс и титульную строку окна (последняя в последствии может быть и изменена процессом-создателем этого окна в любой момент времени).
Эти параметры (оба или хотя бы какой-то один) как раз и следует использовать для поиска существующего окна в системе. Для поиска окна существует ф-ция FindWindow[Ex](), принимающая параметрами ссылки на образцы класса и подписи искомого окна, и возвращающая хэндл окна, если таковое обнаружено системой. Вот этот самый хэндл и следует использовать во всех ф-циях, предназначенных для посылки/приема оконных сообщений.


 
Alx2   (2002-09-18 13:20) [4]

Также можно попробовать GetWindowThreadProcessId и EnumWindows, если о процессе только его хэндл и известен.


 
@andrew   (2002-09-18 13:32) [5]

А.а.а.а.а.а
Ну тогда не подскажите:
Мне бы надо отловить конец этого процесса. Можно ли поставить на завершение процесса хук: какой тип хука должен быть и какой месседж я должен ловить?


 
Digitman   (2002-09-18 13:42) [6]

Никакой хук ставить не требуется. Просто вызови одну из ф-ций ожидания сигналов сист.объектов синхронизации (WaitForSingleObject, MsgWaitForMultipleObjects и т.п.), передав ей в кач-ве параметра хэндл процесса, чье завершение ты ожидаешь. Возрат такой ф-цией результата WAIT_OBJECT_0 (в ряде случаев - WAIT_ABANDONED) есть факт завершения интересующего тебя процесса, чей хэндл ты передал в ф-цию в кач-ве параметра - объекта синхронизации.


 
@andrew   (2002-09-18 13:50) [7]

>Digitman
Родной мой! :-) Где же ты был раньше. А я уж изучил хуки :-) ok. Стоп а я получу что хочу: мне надо, чтобы мое приложение работало как работало и лишь в случае завершения запущенного процесса выкидывало месседж. Тобишь как мне дожидаться WAIT_OBJECT_0?


 
Alx2   (2002-09-18 13:57) [8]

Можно попробовать завести дополнительно ждущий поток, цель которого - дождаться завершения твоего процесса.


 
Digitman   (2002-09-18 14:10) [9]

>@andrew

Воспользуйся советом от <Alx2> - это одно из вполне приемлемых решений.

P.S.
>>Где же ты был раньше

Да покурить выходил).. Пока ты про "хуки" изучал, начитавшишь местных знатоков и поддавшись бездумному ажиотажу : "хукать" вся и все, одним крючком да без разбору)))))


 
Yegor Derevenets   (2002-09-18 16:34) [10]

Постараюсь в ближайшее время выложить прогу Run. Там все демонстрируется - и под NT и под W9Х.



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

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

Наверх




Память: 0.47 MB
Время: 0.01 c
14-101463
pasha_golub
2002-09-20 13:47
2002.10.31
Delphi vs C++ Builder


1-101190
neodiX
2002-10-11 15:46
2002.10.31
Hook на PopUp ы.


3-101075
Azbul
2002-10-13 17:31
2002.10.31
проблема с table1.Post


3-101110
saf
2002-10-09 18:26
2002.10.31
Exel-Paradox


3-101099
soni
2002-10-09 15:27
2002.10.31
Уважаемые! IBDataSet - как он работает?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский