Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


beve,
Цитата:
Дочернее окно прилепляется к любому окну которое активно в этот самый час и которое я двигаю мышкой
Ну и правильно, ведь первая строчка почему то пытается получить позицию окна, а не хендл - там возвращается массив, а для Win* функции это тоже самое что и пустая строка (""), т.е текущее (активное) окно. Нужно использовать WinGetHandle...

Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Timers.au3>
;

Run("Notepad.exe")
WinWait("[REGEXPCLASS:Notepad.*]")

$hParentWnd = WinGetHandle("[REGEXPCLASS:Notepad.*]")
$aParent_Pos = WinGetPos($hParentWnd)

$hChildWnd = GUICreate("Дополнительное окно", 600, 70, $aParent_Pos[0], $aParent_Pos[1] + $aParent_Pos[3] - 380, _
    BitOR($WS_POPUP, $WS_BORDER), $WS_EX_TOPMOST, $hParentWnd)

GUISetBkColor(0x09FF00)
GUICtrlCreateLabel("Дочернее окно", 5, 5, 185, 25)

$iTimer_ID = _Timer_SetTimer($hChildWnd, 10, "_WinMove_Proc")

GUISetState(@SW_SHOW, $hChildWnd)

While 1
    Sleep(100)
WEnd

Func _WinMove_Proc($hWnd, $nMsg, $iIDTimer, $dwTime)
    If Not WinExists($hParentWnd) Then Exit _Timer_KillTimer($hChildWnd, $iTimer_ID)

    Local $aParent_Pos = WinGetPos($hParentWnd)
    If @error Then Return

    Local $aChild_Pos = WinGetPos($hWnd)
    If @error Then Return

    If WinGetHandle("[Active]") <> $hParentWnd Then
        WinSetOnTop($hChildWnd, "", 0)
    Else
        WinSetOnTop($hChildWnd, "", 1)
    EndIf

    If $aParent_Pos[0] <> $aChild_Pos[0] Or $aParent_Pos[1] <> ($aChild_Pos[1] - $aParent_Pos[3] - 10) Then _
        WinMove($hWnd, "", $aParent_Pos[0], $aParent_Pos[1] + $aParent_Pos[3] - 380, $aParent_Pos[2])
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:13, 09-02-2009 | #4