![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Timer & Messages BUG !!!
AndreyRus © (2006-09-11 04:55:00)Я обнаружил, что сообщение (возможно не только WM_POWERBROADCAST) обрабатывается дважды, если в программе используется таймер.
function TForm1.KOLForm1Message(var Msg: tagMSG; var Rslt: Integer): Boolean;
begin
Result:= false;
if Msg.message = WM_POWERBROADCAST then
begin
MsgOk('APM Event detected - ' + UInt2Str(Msg.wParam));
result:= true;
end;
end;
AndreyRus (2006-09-30 04:51:00) [21]
> Владимир, не могли бы Вы описать диспечеризацию событий
> в КОЛ?
И какое отношение к нему имеет таймер?
AndreyRus (2006-09-27 22:09:00) [22]
if Msg.message = WM_POWERBROADCAST then
begin
MsgOk('APM Event detected - ' + UInt2Str(Msg.wParam) + '. hWnd - ' + UInt2Str(Msg.hwnd));
result:= true;
end;
Msg.hwnd отличается.
Владимир, не могли бы Вы описать диспечеризацию событий в КОЛ?
Vladimir Kladov (2006-09-27 15:59:00) [23]Тогда проверьте отправителя в Msg.hwnd. Видимо, оно приходит нескольким окнам в приложении, но у нас Applet ловит все сообщения, от всех окон.
AndreyRus (2006-09-27 04:40:00) [24]
> в VCL смотрели?
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure PWRSUSPENDRESUME (var Message: TMessage); message WM_POWERBROADCAST;
procedure Timer1Timer(Sender: TObject);
end;
procedure TForm1.PWRSUSPENDRESUME (var Message: TMessage);
begin
ShowMessage('APM Event detected - ' + IntToStr(Message.wParam));
end;
Попробовал.... Ошибки нет.
> Вообще-то, это широковещательное оповещение. Не факт, что
> оно должно приходить ровно 1 раз.
Несогласен.
> А вы его на форме ловите? Может, лучше на Applet'е.
Попробовал... Вообще прикол - сообщение приходит 3 раза.
Vladimir Kladov (2006-09-26 15:14:00) [25]в VCL смотрели?
Вообще-то, это широковещательное оповещение. Не факт, что оно должно приходить ровно 1 раз. А вы его на форме ловите? Может, лучше на Applet'е.
AndreyRus (2006-09-25 22:03:00) [26]Люди добрые, да помогите! Подскажите, где копать?
AndreyRus (2006-09-15 14:27:00) [27]Делал, конечно. Все равно приходит два события.
homm (2006-09-15 06:13:00) [28]
> MsgOk('APM Event detected - ' + UInt2Str(Msg.wParam));
Замени на запись лога в файл, если все равно 2 записи будет, тогда есть о чем говорить.
AndreyRus (2006-09-15 00:31:00) [29]
> А ты уверен, что это сообщение идет не двум разным объектам,
> а одному?
Вы хотите сказать, что Windows посылает сообщения как окну, так и таймеру? :)
Unknown Mystic (2006-09-14 11:01:00) [30]А ты уверен, что это сообщение идет не двум разным объектам, а одному?
Если не ошибаюсь, то, например, форма получает и все сообщения идущие объектам на ней...
AndreyRus (2006-09-14 10:56:00) [31]Уважаемый Владимир Кладов, пожалуйста, обратите внимание на эту тему.