GetMessage
От: Blacker77  
Дата: 25.09.02 23:23
Оценка:
Уважаемые Гуру хэндлинга! Прошу грандиозной помощи в обуздании Subja!
Есть такой код:


procedure TForm1.Button5Click(Sender: TObject);
var
Msg:TMsg;
h:hwnd;
begin
h:=FindWindow('WMPlayerApp',nil);
GetMessage(Msg,h,0,0);
ShowMessage(inttostr(Msg.message));
end;


Получаем Handle Windows Media Player. И запрашиваем любые события с ентого хэндлу! Но нет...нет событий и получасовые шаманские движения над плеером мышой не помогают. В чем проблема?
Может в руках?
Заранее Tahks!
Re: GetMessage
От: Alex Fedotov США  
Дата: 26.09.02 01:53
Оценка:
Здравствуйте Blacker77, Вы писали:

B>
B>procedure TForm1.Button5Click(Sender: TObject);
B>var
B>Msg:TMsg;
B>h:hwnd;
B>begin
B>h:=FindWindow('WMPlayerApp',nil);
B>GetMessage(Msg,h,0,0);
B>ShowMessage(inttostr(Msg.message));
B>end;
B>


B>Получаем Handle Windows Media Player. И запрашиваем любые события с ентого хэндлу! Но нет...нет событий и получасовые шаманские движения над плеером мышой не помогают. В чем проблема?


Проблема в том, что сообщения, предназначенные WMP, посылаются в поток WMP, а не в твой поток. Поэтому вызывать в твоем потоке GetMessage, передавая туда хэндл окна WMP, бессмысленно.

Если ты хочешь перехватить все или некоторые сообщения, идущие в окно WMP, то тебе прямиком в хуки:
http://www.rsdn.ru/?summary/?292
-- Alex Fedotov
Re[2]: GetMessage
От: Blacker77  
Дата: 26.09.02 19:30
Оценка:
Угу. А вот такая задача HLP PLS!!!!! Нужно отловить сообщение WM_DEVICECHANGE (сообщение о смене CD-ROMa в приводе) которое приходит на Shell_TrayWnd (Explorer). и вот как эту гадость отловить? Таже фигня — нет событий! Если кто знает и пробовал HEEEELP! И желательно и кодом.
Re[3]: GetMessage
От: Alex Fedotov США  
Дата: 27.09.02 05:07
Оценка:
Здравствуйте Blacker77, Вы писали:

B>Угу. А вот такая задача HLP PLS!!!!! Нужно отловить сообщение WM_DEVICECHANGE (сообщение о смене CD-ROMa в приводе) которое приходит на Shell_TrayWnd (Explorer). и вот как эту гадость отловить? Таже фигня — нет событий! Если кто знает и пробовал HEEEELP! И желательно и кодом. :???:


На событие смены носителя WM_DEVICECHANGE приходит всем окнам верхнего уровня, так что вовсе не обязательно охотиться за окном Shell_TrayWnd — обрабатывай сообщение в своем окне.
-- Alex Fedotov
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.