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.
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:
- Öffnen Sie die Quelle wie jetzt.
- Drücken Sie Ctrl+ A, um alles auszuwählen:
Send, ^a
Wenn die Auswahl nicht erfolgt,Click
in der Mitte der Seite, um den Fokus zu erhalten.
- CtrlMit + in die Zwischenablage kopieren C:
Send, ^c
- Verwenden
Clipboard
Variable, um auf den vollständigen Wert zuzugreifen. - Führen Sie dazu eine beliebige Zuordnung durch. Ich empfehle einfache
RegExMatch
für das gewünschte URL-Format anstelle des seltsamen umgekehrten Vorgangs, den Sie versuchen. Erfassen Sie es mit einer()
Gruppe.https
Alleiniges Abgleichen ist auch keine gute Idee, da ich nicht glaube, dass dies die einzige URL auf der Seite ist.