Откройте новое окно Chrome с пользовательским URL, а затем получить то же самое окно с Autohotkey?

Я пытаюсь открыть экземпляр Chrome с флагом-app, а затем переместить это окно и вообще делать что-то с ним. Вот мой код:

#!NumpadMult::
{
    Gui, Show , w260 h150, Window title
    Gui, Add, Edit, w100 vCustomUrl, http://
    Gui, Add, Button, default, OK  ; The label ButtonOK (if it exists) will be run when the button is pressed.

    ButtonOk:
    Gui, Submit
    Gui, Destroy
    URL = %customUrl%

    MyWidth = 639
    MyHeight = 389
    Run C:Program Files (x86)GoogleChromeApplicationchrome.exe --app=data:text/html`,<html><body><script>window.resizeTo(%MyWidth%`,%MyHeight%)`;window.location='%URL%'`;</script></body></html>

    return
}

это лучший способ, который я нашел до сих пор, чтобы открыть окно Chrome и переместить его, потому что я не могу понять, как на самом деле сделать WinWait в конкретном окне Chrome, для которого я не знаю названия. Если я попытаюсь иметь Run выплюнь pid,pid такой же, как и любые существующие хром процессы, так в окно Я не тот, кого я создал.

какие идеи? Я рад предоставить больше информации, если это необходимо.

16
задан Jake
08.01.2023 11:00 Количество просмотров материала 3038
Распечатать страницу

1 ответ

MyWidth = 639
MyHeight = 389

InputBox, customUrl, Custom Url, Enter an URL., , 1000, 120
if ErrorLevel
    return
run % "chrome.exe" ( winExist("ahk_class Chrome_WidgetWin_1") ? " --new-window " : " " ) customUrl      ; https://autohotkey.com/board/topic/82062-open-google-chrome-in-new-instance/
ID := WinWaitCreated("ahk_class Chrome_WidgetWin_1")
WinWait, ahk_id %ID%
WinMove, ahk_id %ID%,,,,%MyWidth%,%MyHeight%
IfWinNotActive, ahk_id %ID%, ,WinActivate,ahk_id %ID%
return


WinWaitCreated( WinTitle:="", WinText:="", Seconds:=0, ExcludeTitle:="", ExcludeText:="" ) {
    ; HotKeyIt - http://ahkscript.org/boards/viewtopic.php?t=1274
    static Found := 0, _WinTitle, _WinText, _ExcludeTitle, _ExcludeText 
         , init := DllCall( "RegisterShellHookWindow", "UInt",A_ScriptHwnd )
         , MsgNum := DllCall( "RegisterWindowMessage", "Str","SHELLHOOK" )
         , cleanup:={base:{__Delete:"WinWaitCreated"}}
  If IsObject(WinTitle)   ; cleanup
    return DllCall("DeregisterShellHookWindow","PTR",A_ScriptHwnd)
  else if (Seconds <> MsgNum){ ; User called the function
    Start := A_TickCount, _WinTitle := WinTitle, _WinText := WinText
    ,_ExcludeTitle := ExcludeTitle, _ExcludeText := ExcludeText
    ,OnMessage( MsgNum, A_ThisFunc ),  Found := 0
    While ( !Found && ( !Seconds || Seconds * 1000 < A_TickCount - Start ) ) 
      Sleep 16                                                         
    Return Found,OnMessage( MsgNum, "" )
  }
  If ( WinTitle = 1   ; window created, check if it is our window
    && ExcludeTitle = A_ScriptHwnd
    && WinExist( _WinTitle " ahk_id " WinText,_WinText,_ExcludeTitle,_ExcludeText))
    WinWait % "ahk_id " Found := WinText ; wait for window to be shown
}
0
отвечен user3419297 2023-01-09 18:48

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх