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