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

Вниз

Как отследить действия над сторонним окном?   Найти похожие ветки 

 
Morgan128   (2009-10-28 14:28) [0]

Есть стороннее окно, которое я отслеживаю:

var h: HWND;
begin
h := findwindow(nil, Pchar(key));

Как отследить действия над этим окном? Например мне надо отследить момент, когда это окно сворачивается/разворачивается (SW_HIDE, SW_RESTORE так сказать).
Например: если окно h свернулось -> показать сообщение.


 
Сергей М. ©   (2009-10-28 14:40) [1]

1. Получить ID треда-владельца окна (GetWindowThreadProcessId)
2. Установить хук WH_CBT  на этот поток (SetWindowsHookEx)


 
Morgan128   (2009-10-28 14:45) [2]

Я извиняюсь, а потоки надо отдельно создавать? Они по CreateProcess не создаются?


 
Morgan128   (2009-10-28 14:51) [3]

А без потоков можно как-нить реализовать?


 
Сергей М. ©   (2009-10-28 14:52) [4]


> потоки надо отдельно создавать?


Зачем их создавать-то ?


 
Сергей М. ©   (2009-10-28 14:52) [5]


> без потоков можно как-нить реализовать?


Можно.
Но не нужно.


 
Morgan128   (2009-10-28 15:12) [6]

Сергей, я в потоках полный ноль. CreateProcess создает окно в новом потоке, так?


 
Morgan128   (2009-10-28 15:13) [7]

Если у меня создано 5 окон с помощью CreateProcess, они будут в разных потоках?


 
Сергей М. ©   (2009-10-28 15:14) [8]


> CreateProcess создает окно в новом потоке, так?
>


Не так.
Да и причем тут CreateProcess ?
С какого боку и зачем его ты хотел его приспособить ?


 
Сергей М. ©   (2009-10-28 15:18) [9]


> Если у меня создано 5 окон с помощью CreateProcess, они
> будут в разных потоках?


CreateProcess НЕ создает никаких окон.
Окно создает ф-ция CreateWindow[Ex], которая вызывается в каком либо потоке процесса, созданного вызовом CreateWindow[Ex].
Этот поток и становится владельцем созданного им окна.
GetWindowThreadProcessId возвращает TID и PID потока, создавшего окно.


 
Сергей М. ©   (2009-10-28 15:22) [10]

Если ты создал 5 процессов, каждый из которых в каком-либо потоке создал окно с интересующим тебя именем, то разумеется каждым из этих окон будет владеть отдельный поток.


 
Morgan128   (2009-10-28 15:24) [11]


> Да и причем тут CreateProcess ?
> С какого боку и зачем его ты хотел его приспособить ?

Потому что недавно ты же мне и советовал:
"...CreateProcess из отдельного потока. Запомнить полученные хэндлы нового процесса и его главного потока...."


 
Morgan128   (2009-10-28 15:25) [12]

Ладно, для простоты пока что: а как отследить без потока?


 
Morgan128   (2009-10-28 15:26) [13]

Просто времени на изучение потоков ща нет, а для альфа версии проги сойдет и без потоков.


 
Сергей М. ©   (2009-10-28 15:31) [14]


> как отследить без потока?


Ну тогда вызывай GetWindowPlacement по таймеру в темпе ошпаренного кота)
Только ведь дурней варианта чем этот не придумать ..


> недавно ты же мне и советовал


Думаешь я помню , про что и в каком контексте ты там вел речь ?
Ссылку бы привел ..


 
Сергей М. ©   (2009-10-28 15:32) [15]


> времени на изучение потоков ща нет


А чего их изучать ?
Все что нужно - выяснить ID потока, создавшего интересующее окно, и повесить на него упомянутый выше хук ..


 
Юрий Зотов ©   (2009-10-28 15:37) [16]

> Morgan128

В Вашей задаче не надо создавать никаких спецпотоков. Над поставить хук на УЖЕ существующий ЧУЖОЙ поток - то, которому принадлежит отслеживаемое окно.

Но, судя по возникшим у Вас вопросам, есть большие сомнения, что это получится. Может быть, все же стоит заняться изучением хотя бы основ Windows? Честное слово, в результате Вы не потеряете время, а, наоборот, сэкономите его.


 
Morgan128   (2009-10-28 15:37) [17]

Сергей, пардон, советовал не ты :)
http://delphimaster.net/view/4-1256278384/


 
Leonid Troyanovsky ©   (2009-10-28 15:53) [18]


> Morgan128   (28.10.09 15:26) [13]

> Просто времени на изучение потоков ща нет, а для альфа версии
> проги сойдет и без потоков.

Да и без слежения сойдет.
Приходи, когда время будет, на изучение хуков.

--
Regards, LVT.



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

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

Наверх





Память: 0.51 MB
Время: 0.006 c
15-1255680988
TUser
2009-10-16 12:16
2009.12.13
Сейчас. Про интернет в РФ


2-1256209981
Dmitriy
2009-10-22 15:13
2009.12.13
Как создать правильный POST-запрос для E-port?


15-1255863244
POOP
2009-10-18 14:54
2009.12.13
Если в bat файле


2-1256315797
xyz
2009-10-23 20:36
2009.12.13
WriteFile не компилируется


10-1121666059
YuriS
2005-07-18 09:54
2009.12.13
Borland Socket Server





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