![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при обращении к свойствам TMessage [D5, Win95/98]
plaha999 © (2002-12-10 01:46:00)Уважаемые мастера, почему происходит ошибка, когда я в своем приложении реагирую на событие посланное мне из моей DLLки с HOOKом. Вот текст процедурки:
const
WM_MOUSEACTIVE = WM_USER + 133;
...
procedure MouseActive(var Msg: TMessage); message WM_MOUSEACTIVE;
...
procedure TfrmNetAdmin.MouseActive(var Msg: TMessage);
begin
if Msg.WParam=GetDesktopWindow then {<- EAccessViolation}
Beep;
end;
plaha999 (2002-12-10 15:44:00) [1]ОК! С этим разобрался, спасибо :-)
Digitman (2002-12-10 15:17:00) [2]Я тебя спросил, Контролировал ты ссылку на Msg в момент брейкпойнта на этой строчке при условии, что "если кто-то другой" ? Чему она равна ?
plaha999 (2002-12-10 14:55:00) [3]Да!!! Все проходит нормально, если сообщение посылает моя форма, но если кто-то другой, тогда возникает ошибка...
Digitman (2002-12-10 14:39:00) [4]ок.
Access violation at address XXXXX ...
Чему равен XXXXX ? Действительно ли XXXXX - это run-time-адрес строки "if Msg.WParam=GetDesktopWindow then ..." ?
Брейкпойнт ставил на этой строке ? Ловил его ? Контролировал ссылку на Msg ?
plaha999 (2002-12-10 14:34:00) [5]
type
TfrmNetAdmin = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
procedure MouseActive(var Msg: TMessage); message WM_MOUSEACTIVE;
public
{ Public declarations }
end;
Digitman (2002-12-10 13:51:00) [6]в "EXEшнике", не в "EXEшнике")... да по-барабану - где !
Ничем "EXEшник" от "DLLшника" не отличается (по большому счету), кроме тонкостей механизма загрузки.
Приведи декларацию класса TfrmNetAdmin
plaha999 (2002-12-10 13:26:00) [7]в EXEшние, а ошибка EAccessViolation, и происходит она не из-за Beep, он там так, чисто для примекра стоит...
SottNick (2002-12-10 12:01:00) [8]2 Digitman
конечно фигурирует
она от туда сюда и процетирована...
2 plaha999
в этой части кода ошибки возникнуть не может
....разве что на "BEEP;" :o)
что за ошибка?
в какой строке?
в DLLке или в EXEшнике?
Digitman (2002-12-10 11:40:00) [9]вот эта строчка
procedure MouseActive(var Msg: TMessage); message WM_MOUSEACTIVE;
надеюсь, не сама по себе ? она фигурирует в декларации класса TfrmNetAdmin ?