powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Глюк с определением местоположения курсора мыши на форме
5 сообщений из 5, страница 1 из 1
Глюк с определением местоположения курсора мыши на форме
    #39690436
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дельфовой обёртке срабатывает стандартная функция Win API по определению местоположения курсора мыши.
В Делфи это обрабатывается стандартным классом TMouse.
Почему то в какой то момент времени после определённого кол-ва успешных срабатываний возникает исключение на вызове этой функции в методе этого класса GetCursorPos.
Вызов происходит по таймеру в пользовательском классе, в стэке это FUserAlert - просто обыкновенная форма Делфи.
Таймер срабатывает не так часто - раз в 20 сек.

Вот стэк ошибок:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Stack : ### Ошибка функции Win32 API ###
 [0001017D] SysUtils.RaiseLastWin32Error (Line 6878, "sysutils.pas")
 [00010178] SysUtils.RaiseLastWin32Error (Line 6878, "sysutils.pas")
 [000101AF] SysUtils.Win32Check (Line 6885, "sysutils.pas")
 [00053309] Controls.TMouse.GetCursorPos (Line 9734, "Controls.pas")
 [00207447] FUserAlert.TUserAlert.tmUserAlertTimer (Line 327, "Forms\FUserAlert.pas")
 [0006AB9B] ExtCtrls.TTimer.Timer (Line 1322, "ExtCtrls.pas")
 [0006AA07] ExtCtrls.TTimer.WndProc (Line 1280, "ExtCtrls.pas")
 [00056D18] Forms.StdWndProc (Line 1470, "Forms.pas")
 [00061FFC] Forms.TApplication.ProcessMessage (Line 6641, "Forms.pas")
 [00062043] Forms.TApplication.HandleMessage (Line 6660, "Forms.pas")
 [000622C9] Forms.TApplication.Run (Line 6743, "Forms.pas")



Как можно заменить вызов этой функции? Или в чём может быть причина сбоя? Может быть кто-нибудь сталкивался с подобным.
Использую старую Делфи 5.
...
Рейтинг: 0 / 0
Глюк с определением местоположения курсора мыши на форме
    #39690479
лись
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну а код ошибки то какой?


Вообще в доке по getcursorpos сказано:

MSDNThe input desktop must be the current desktop when you call GetCursorPos.

По видимому ф-я будет обламываться когда текущий десктоп не явлется input desktop, например активен скринсейвер или UAC prompt.

Если успех не критичен проще всего в try .. except завернуть.
...
Рейтинг: 0 / 0
Глюк с определением местоположения курсора мыши на форме
    #39690484
может форма в тот момент удалена/удаляется, не?
...
Рейтинг: 0 / 0
Глюк с определением местоположения курсора мыши на форме
    #39690518
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Илья Кислицынможет форма в тот момент удалена/удаляется, не?
Как раз после проверки положения курсора принимается решение удалять форму или нет.
Спасибо, действительно нужно в любом случае перед вызовом функции проверки курсора проверять существует ли форма.
...
Рейтинг: 0 / 0
Глюк с определением местоположения курсора мыши на форме
    #39690519
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лисьну а код ошибки то какой?


Вообще в доке по getcursorpos сказано:

MSDNThe input desktop must be the current desktop when you call GetCursorPos.

По видимому ф-я будет обламываться когда текущий десктоп не явлется input desktop, например активен скринсейвер или UAC prompt.

Если успех не критичен проще всего в try .. except завернуть.

Огромное спасибо! Но как проверить является ли текущий десктоп инпут десктопом?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Глюк с определением местоположения курсора мыши на форме
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]