AutoHotKey WinGetText ruft keinen Text ab

AutoHotKey WinGetText ruft keinen Text ab

Ich lerne AutoHotKey und versuche herauszufinden, ob ich damit bestimmte Prozesse automatisieren kann, die wir durchführen müssen. Es öffnet ein Browserfenster mit MS Edge (sobald es funktioniert, kann ich es so codieren, dass es mit anderen Browsern funktioniert), standardmäßig wird eine Startseite angezeigt, ich drücke Ctrl+ U, um eine Registerkarte zu öffnen und das HTML der Seite zu überprüfen, suche dann nach MyTech Support Portal, dann rückwärts nach :sptth( https:), damit ich die URL extrahieren kann. Ich bin mir nicht sicher, ob ich mit mehreren Browser-Registerkarten richtig umgehe.

Auf der Homepage gibt es unter „Technische Hilfe“ ein Dropdown-Menü, auf das ich den Cursor setze, das sich öffnet und dann „MyTech Support Portal“ auswähle. Ich konnte nicht herausfinden, wie ich AutoHotKey dazu bringe, den Text „Technische Hilfe“ zu finden, die Maus auf „MyTech Support Portal“ zu bewegen und darauf zu klicken. Ich dachte, wenn ich mir den HTML-Quellcode mit Inspect ansehen kann, kann ich eine Suche ausführen und diese spezifische URL extrahieren.. Deshalb versuche ich, WinGetText zu verwenden, damit ich die URL „MyTech Support Portal“ extrahieren kann.

Dropdown-Beispiel

Hier ist ein Teil der Zeile, die die URL enthält: ,\"Url\":\"https://xxxxx365.sharepoint.com/sites/ServiceManagementSVCDesk\",\"Type\":\"Group\",\"Title\":\"MyTECH Support Portal\",

Das Problem, das ich habe, tritt auf, wenn ich Folgendes ausführe:

WebText1 := WinGetText(WebTitle2)

anstelle des Inspect-Textes wird Folgendes zurückgegeben:

WebText1=Chrome Legacy-Fenster

In Zeile 15 gibt die MsgBox Folgendes zurück:

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

Hier ist mein Programmcode (ich verwende nur Ctrl+ Alt+, Rum meinen Code zu testen):

#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

}

Antwort1

Hier ist eine mögliche Lösung für Sie:

  1. Öffnen Sie die Quelle wie jetzt.
  2. Drücken Sie Ctrl+ A, um alles auszuwählen:
Send, ^a

Wenn die Auswahl nicht erfolgt,Clickin der Mitte der Seite, um den Fokus zu erhalten.

  1. CtrlMit + in die Zwischenablage kopieren C:
Send, ^c
  1. VerwendenClipboardVariable, um auf den vollständigen Wert zuzugreifen.
  2. Führen Sie dazu eine beliebige Zuordnung durch. Ich empfehle einfacheRegExMatchfür das gewünschte URL-Format anstelle des seltsamen umgekehrten Vorgangs, den Sie versuchen. Erfassen Sie es mit einer ()Gruppe. httpsAlleiniges Abgleichen ist auch keine gute Idee, da ich nicht glaube, dass dies die einzige URL auf der Seite ist.

verwandte Informationen