Что нового

Прикрепить/Открепить окно Gui от стороннего приложения

Andrey_A

Продвинутый
Сообщения
325
Репутация
68
Подскажите пожалуйста есть ли возможность прикрепления и открепления окна, созданного в Autoit к окну другой программы в одном процессе.

Вот простой пример, где Gui прикрепляется в виде дочернего окна, а вот открепления так и не нашлось. _WinAPI_SetParent($hChildWin,0) поставил для примера , хотя он не срабатывает, да и не должен судя по справке для разных приложений...

Необходимо в процессе работы скрипта несколько раз "прикрепляться" к чужому окну и "открепляться".

Код:
#include <WinAPI.au3>
#Include <WindowsConstants.au3>

Run(@WindowsDir & "\Notepad.exe")
$hWnd = WinWait("[CLASS:Notepad]", "", 5)

$hChildWin = GUICreate('Дочерное окно', 300, 200, -1, -1, $WS_SYSMENU,$WS_EX_MDICHILD, $hWnd)
$Button_1 = GUICtrlCreateButton("Отсоединиться от окна", 10, 20, 120)
$Button_2 = GUICtrlCreateButton("Присоединиться к окну", 10, 60, 120)
GUISetState()

While 1
    $iMd=GUIGetMsg()
    Switch $iMd
      Case -3
        Exit 
    Case $Button_1
      _WinAPI_SetParent($hChildWin,0) ; ???
    Case $Button_2
      ; ???
  EndSwitch
    Sleep(10)
WEnd
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Вот так?
Код:
#include <WinAPI.au3>
#Include <WindowsConstants.au3>

Run(@WindowsDir & "\Notepad.exe")
$hWnd = WinWait("[CLASS:Notepad]", "", 5)

$hChildWin = GUICreate('Дочерное окно', 300, 200, -1, -1, $WS_SYSMENU)
$Button_1 = GUICtrlCreateButton("Присоединиться к окну", 10, 20, 130)
$Button_2 = GUICtrlCreateButton("Отсоединиться от окна", 10, 60, 130)

GUISetState()


While HWnd($hWnd)
    $iMd=GUIGetMsg()
    Switch $iMd
      Case -3
        Exit
    Case $Button_1
      _WinAPI_SetParent($hChildWin,$hWnd) ; ???
	  WinMove($hChildWin,'',0,0)
    Case $Button_2
	  _WinAPI_SetParent($hChildWin,0) ; ???
  EndSwitch
    Sleep(10)
WEnd
 
Автор
A

Andrey_A

Продвинутый
Сообщения
325
Репутация
68
inververs спасибо, это почти то что нужно, но окно прикрепляется внутрь окна программы, что приводит к глюкам. Хотя бы чтобы изменялся атрибут дочернего/не дочернего. Интересует прикрепление к заголовку, к краю окна... и вариант перемещения программы (Notepad) вместе с окном после прикрепления
 
Верх