1

Тема: AHK: Owned Windows

Как изменить окно владелец для окна стороннего приложения?

Owned Windows.

After creating an owned window, an application cannot transfer ownership of the window to another window.

Может я не правильно понял, вроде как написано что окно владелец уже нельзя изменить, но пример со своим окном меняет.

Gui, +HWNDhParentGui 
Gui, Show, w333 h333

Gui, New
Gui, +HWNDhGui +Owner%hParentGui%  
Gui, Show, w222 h222

Sleep 1000
Gui, %hParentGui%:Minimize

Sleep 1000
Gui, %hParentGui%:Show 

Sleep 1000
Gui, %hGui%:-Owner
Gui, %hParentGui%:Minimize
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

2

Re: AHK: Owned Windows

Возможно, имелось в виду, что если окно изначально создано функцией CreateWindowEx как принадлежащее другому, тогда сменить нельзя, не проверял. Попробуй SetWindowLongPtr с ключом GWLP_HWNDPARENT.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

3 (изменено: serzh82saratov, 2019-04-07 19:11:56)

Re: AHK: Owned Windows

Неработает, видимо оно работает только с ключами перечисленными для SetWindowLongPtr.


Gui, +HWNDhParentGui 
Gui, Show, w333 h333

Gui, New
Gui, +HWNDhGui +Owner%hParentGui%  
Gui, Show, w222 h222

DllCall("SetWindowLongPtr", "Ptr", hGui, "Int", GWLP_HWNDPARENT := -8, "Ptr", A_ScriptHwnd)
Sleep 1000
Gui, %hParentGui%:Minimize
Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

4

Re: AHK: Owned Windows

Работает:

Gui, Parent:New, +hwndhParent, Owner
Gui, Show, w300 h300

Gui, Owned:New, +hwndhOwned, Child
Gui, Show, w200 h200

DllCall("SetWindowLongPtr", Ptr, hOwned, Int, GWLP_HWNDPARENT := -8, Ptr, hParent)

Sleep, 1000
Gui, Parent:Minimize
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

5

Re: AHK: Owned Windows

Что работает?

Gui, Parent:New, +hwndhParent, Owner
Gui, Show, w300 h300

Gui, Owned:New, +hwndhOwned, Child
Gui, Show, w200 h200 

Sleep, 1000
Gui, Parent:Minimize
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

6

Re: AHK: Owned Windows

А у тебя мой и твой последний примеры работают одинаково?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

7

Re: AHK: Owned Windows

Да. А как должно, если нигде нет окна владельца.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

8

Re: AHK: Owned Windows

У меня в моём примере сворачиваются оба окна. Ты уверен, что правильно скопировал?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

9

Re: AHK: Owned Windows

На х32 неработает, х64 работает.

Но мне надо наоборот открепить окно.

Причём  Gui, +Owner%OwnedId% работает со сторонними окнами, а вот в обратную сторону только со своими.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

10

Re: AHK: Owned Windows

А, всё, на х64 работает со сторонними окнами!

Её можно ка то запустить под х32?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

11

Re: AHK: Owned Windows

А, на 32 нужно получать адрес этой функции, напрямую вызывать нельзя.

serzh82saratov пишет:

а вот в обратную сторону только со своими

Ну может это как раз тот самый оговорённый выше случай.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

12

Re: AHK: Owned Windows

Note  This function has been superseded by the SetWindowLongPtr function. To write code that is compatible with both 32-bit and 64-bit versions of Windows, use the SetWindowLongPtr function.

Туплю, понял. Спасибо за помощь!

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

13

Re: AHK: Owned Windows

teadrinker пишет:

А, на 32 нужно получать адрес этой функции, напрямую вызывать нельзя.

Не понял?

DllCall("SetWindowLong" . (A_PtrSize = 8 ? "Ptr" : ""), Ptr, hOwned, Int, GWLP_HWNDPARENT := -8, Ptr, hParent)
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

14

Re: AHK: Owned Windows

Так у меня же она и используется?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

15

Re: AHK: Owned Windows

?
У тебя SetWindowLongPtr. На х32 надо SetWindowLong.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

16

Re: AHK: Owned Windows

А, ну да, правильно. Не адрес получить, а название заменить.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

17

Re: AHK: Owned Windows

Я тебя немного запутал, ремарка отсюда https://docs.microsoft.com/en-us/window … indowlonga.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.03 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

18 (изменено: teadrinker, 2019-04-07 20:32:45)

Re: AHK: Owned Windows

Такая же есть и в SetWindowLongPtrA/W.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg