AutoHotKey WinGetTextがテキストを取得しない

AutoHotKey WinGetTextがテキストを取得しない

私は AutoHotKey を学習しており、これを使用して、実行する必要がある特定のプロセスを自動化できるかどうかを確認しようとしています。これは、MS Edge を使用してブラウザー ウィンドウを開き (動作するようになれば、他のブラウザーを処理するようにコーディングできます)、デフォルトでホーム ページに移動し、Ctrl+を押しUてタブを開いてページの HTML を調べ、 を検索し、( )MyTech Support Portalを逆方向に検索してURL を抽出します。複数のブラウザー タブを正しく処理しているかどうかはわかりません。:sptthhttps:

ホーム Web ページには、「Tech Help」の下にドロップダウンがあり、そこにカーソルを置くとドロップダウンが開き、「MyTech Support Portal」を選択します。AutoHotKey で「Tech Help」というテキストを見つけ、マウスを「MyTech Support Portal」に移動してクリックする方法がわかりません。Inspect を使用して HTML ソース コードを確認できれば、検索を実行して特定の URL を抽出できると思いました。そのため、WinGetText を使用して、「MyTech サポート ポータル」の URL を抽出しようとしています。

ドロップダウンの例

以下は URL を含む行の一部です。 ,\"Url\":\"https://xxxxx365.sharepoint.com/sites/ServiceManagementSVCDesk\",\"Type\":\"Group\",\"Title\":\"MyTECH Support Portal\",

問題は、次を実行するときに発生します:

WebText1 := WinGetText(WebTitle2)

Inspect テキストの代わりに次のテキストが返されます:

WebText1=Chrome レガシーウィンドウ

15 行目では、MsgBox は次を返します。

WebTitle1=GNIE HOME - Home - Work - Microsoft Edge
WebPage1=36604
WebTitle2=view-source:https://xxxxx365.sharepoint.com and 1 more page - work - Microsoft Edge
WebPage2=36604

これが私のプログラム コードです (コードをテストするためにCtrl++Altを使用しています)。R

#Requires AutoHotkey v2.0

^!r::
{
    Run "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe", , , &OutputVarPID
    winWaitActive "ahk_pid" OutputVarPID, , 3
    WebTitle1 := WinGetTitle("A")
    WebPage1 := OutputVarPID

    Send "^u"
    winWaitActive "ahk_pid" OutputVarPID, , 3
    WebTitle2 := WinGetTitle("A")
    WebPage2 := OutputVarPID

    MsgBox "WebTitle1=" WebTitle1 "`nWebPage1=" WebPage1 "`nWebTitle2=" WebTitle2 "`nWebPage2=" WebPage2
/*
    Send "^f"
    SendText "MyTech Support Portal"

    send "^f"
    sendText "https:"
    Send "^+g"
*/
    WebText1 := WinGetText(WebTitle2)
    msgbox "WebText1=" WebText1
    Pos1 := instr(WebText1, "MyTech Support Portal")
    if Pos1 = 0 {
        msgbox "'MyTech Support Portal' was not found"
        exit
    }
    Pos2 := instr(WebText1,":sptth:", , Pos1, -1)
    if Pos2 = 0 {
        msgbox "'https:' was not found"
        exit
    }
    url := SubStr(WebText1, Pos2, (Pos1 - Pos2 + 1))
    msgbox "url=" url

}

答え1

考えられる解決策は次のとおりです:

  1. 今と同じようにソースを開きます。
  2. Ctrlすべてを選択するには+を押しますA:
Send, ^a

選択しない場合は、Click最初にページの中央に焦点を置きます。

  1. Ctrl+でクリップボードにコピーC:
Send, ^c
  1. 使用Clipboard完全な値にアクセスするための変数。
  2. それを何らかの形でマッチングします。私はシンプルをお勧めしますRegExMatch奇妙な逆引きではなく、目的の URL 形式を検索してください。グループでキャプチャします()httpsページ上の URL がそれだけではないと思うので、単独で一致させることも良い考えではありません。

関連情報