дак, у меня 10 оконс с этим хендлом! возьмет 1 случайное, да?uritalex сказал(а):Будет работать с тем окном с которого снял хендл вот этим кодомКод:$hWnd = WinGetHandle("GTA:SA:MP")
У каждого окна свой, уникальный хендл. Это нужно запомнить.у меня 10 оконс с этим хендлом!
Skif_off сказал(а):firex
Что такое Z-очередь? Всегда думал, что в таких случаях берётся последнее активное окно.
_WinAPI_CreateEvent
_WinAPI_CreateMutex
_WinAPI_CreateSemaphore
#Include <WinAPIEx.au3>
Func _CaptureWindow($hWnd) ; Захватить окно
Local $fState
; ---
$fState = _CheckWindow($hWnd)
If Not $fState Then _
_WinAPI_SetWindowLong($hWnd, $GWL_USERDATA, @AutoItPID)
; ---
Return (Not $fState)
EndFunc
Func _ReleaseWindow($hWnd, $fCheckOwner = False) ; Освободить окно
Local $fState = True
; ---
If $fCheckOwner Then _
$fState = (_CheckWindow($hWnd) = @AutoItPID)
; *
If $fState Then _
_WinAPI_SetWindowLong($hWnd, $GWL_USERDATA, 0)
; ---
Return $fState
EndFunc
Func _CheckWindow($hWnd) ; Проверить не занято ли окно
Local $iPID
; ---
$iPID = _WinAPI_GetWindowLong($hWnd, $GWL_USERDATA)
If $iPID And ProcessExists($iPID) Then _
Return $iPID
; ---
Return False
EndFunc
$sSemaphoreName = 'MySemaphore_' & $hWnd
Это понятно, но как мне выбрать только одно окно из трёх с одинаковым именем?firex сказал(а):а остальные скрипты уже не смогут его взять.
Func _test_func()
WinWait("dsa")
If Not WinActive("dsa") Then WinActivate("dsa")
WinWaitActive("dsa")
Send("{F5}")
EndFunc