Что нового

Как отловить событие, когда изменяется курсор мыши на иконку песочных часов

beaver

Новичок
Сообщения
58
Репутация
2
Всем привет.
Мне надо отловить состояние программы, когда она "задуывается" - физически это момент когда вид курсора мыши на экране изменяется на песочные часы.
Подскажите правильно это сделать?

Сейчас у меня скрипт смотрит на свойство элементов enabled/disabled внутри окна и в принципе работает, но хочется получить более правильный способ.
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
219
Можно узнать с помощью MouseGetCursor.
Но эта функция работает глобально, к конкретному окну её особо не привяжешь.
 
Автор
B

beaver

Новичок
Сообщения
58
Репутация
2
dwerf сказал(а):
Можно узнать с помощью MouseGetCursor.
Но эта функция работает глобально, к конкретному окну её особо не привяжешь.

А зачем мне привязывать к какому-то окну?
У меня параллельно никаких глобальных процессов не запущено и курсор меняет свой вид в 99% от того окна, которое мне требуется.

Спасибо за помощь. Щас попробую завязаться.
 
Автор
B

beaver

Новичок
Сообщения
58
Репутация
2
ну что ж... работает прекрасно - надо было мне внимательней читать хелп
Код:
Do
sleep(500)
Until MouseGetCursor()=2
 

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
Может ЭТО поможет...
В моем случае не помогло т.к. программа не зависала, а запрашивала данные из sql и меняла курсор.

UPD: Вообще то код работет, только изменить надо его
Код:
$hWnd= WinGetHandle("", "")
Func _ProcessIsHang($hWnd, $iSleep = 1000)
    Local $aResult = DllCall("user32.dll", "int", "SendMessageTimeout", _
        "hwnd", $hWnd, "int", 0, "ptr", 0, "ptr", 0, "uint", 3, "uint", $iSleep, "ptr", 0)
	If Not IsArray($aResult) then Return 0
	Return $aResult[0]
EndFunc
Если же все таки именно курсор интересует, то так:
Код:
$cur = _WinAPI_GetCursorInfo()

Стандартная фунция мне иногда неверные данные выдавала.
 
Верх