Link aus Chrome per Kontextmenü in Programm kopieren
ich bin erst vor ein paar Tage auf AutoHotkey gestoßen und schon steht eine für mich recht großes Projekt an.
Ich hab durch einige Tutorials gelesen doch noch bin ich auf keinen grünen Zweig gekommen, wie ich mein Projekt am besten angehen sollte. Ich hoffe ihr könnt mir da helfen!
Mein Ziel ist Folgendes:
Ich möchte einen Link aus Chrome mit dem Kontextmenü kopieren etwas verändern und diesen automatisch in ein anderes Programm einfügen: Derzeit sind meine Arbeitsschritte folgende:
Rechtsklick - Adresse des Links Kopieren (dieser wäre dann z.B. tel:xxxx-xxxx) - verändern der des Links in eine Telefonnummer nach dem Schema (00xxxxxxxx) - Öffnen des entsprechenden Programms - Einfügen der veränderten Nummer - klick auf eine weitere Oberfläche um einen Anruf zu tätigen.
Noch hilfreicher wäre es, wenn ich direkt mit einem Rechtsklick, im Kontextmenü einen Anruf auf die Nummer starten könnte.
Vielen Dank im Voraus für jede Hilfe dir ihr mir geben könnt!
Es sollte aber möglich sein, durch das Markieren der Telefonnummer und dem Drücken eines Hotkeys das selbe zu erledigen.
Translated AHK v2-changelog/Übersetzter AHK v2-Changelog [German/Deutsch]
Du brauchst dann eigentlich nur die Kommandos
- Send
- ControlSend
Lies dich mal ein, bei Fragen kriegst du hier immer Hilfe.
Danke für eure Antworten!
Schade, die meisten Personen für die das ganze erstellt werden soll, nutzen leider ungerne Tastenkombinationen, aber vorerst sollte es als Tastenkombination ausreichen. Besser so als gar nicht.
Ich bin heute schon ein ganze Stückchen weiter gekommen. Bisher sieht es ganz gut aus und die Wahrscheinlichkeit das das ganze nach Weihnachten laufen könnte steigt!
Gruß Green
Wie gesagt, wenn du Fragen oder Probleme hast kannst du dich gerne hier melden.
Nur ein ganzes Script machen wir eher ungern, deine Aussagen hören sich ja schon ganz vielversprechend an
Translated AHK v2-changelog/Übersetzter AHK v2-Changelog [German/Deutsch]
... Nur ein ganzes Script machen wir eher ungern, deine Aussagen hören sich ja schon ganz vielversprechend an
Klar das verlangt auch keiner! Ich zumindest nicht stand am Anfang nur sehr auf dem Schlauch und wollte mal so mehr oder weniger in die Runde fragen ob das schon mal jemand versucht hat.
Ich werde das ganze Skript morgen mal in der Praxis testen.
Hey Leute im großen und ganzen läuft der Skript, mir fehlt nur noch die komplette Automatisierung so das man auf nix mehr achten muss.
Wenn das Fester vorher geöffnet wird startet der Anruf so wie er soll, jedoch ist das Fenster in der Regel nicht nur minimiert sonder ausgeblendet und erscheint nur rechts unten bei der Uhr so wie z.B. Dropbox, Spotify usw. wie kann ich das Fester in dem Fall ansprechen? - IfWinExist scheint nicht auszureichen.
Zudem gibt es noch das Problem, dass wenn das Programm geschlossen wurde der Start etwas länger dauert, (leider immer unterschiedlich) hier hab ich es mit WinWaitActive versucht jedoch scheint da auch etwas nicht zu passen.
RALT & LButton:: { BlockInput, MouseMove Click right Send, {Down 5}{Enter} IfWinExist, ahk_class ahk_class #32770 WinActivate, ahk_class ahk_class #32770 Else Run C:\Program Files (x86)\Aastra\OpenCTI.exe WinActivate, ahk_class ahk_class #32770 WinWaitActive, ahk_class ahk_class #32770 Return StringCaseSense On work := clipboard StringReplace work, work, t, , all StringReplace work, work, e, , all StringReplace work, work, l, , all StringReplace work, work, -, , all StringReplace work, work, :, , all StringReplace work, work, %A_Space%, , all clipboard := work click 90,90 send 0^v send {tab} send {Enter} ;OSD ("Starte Telefon Anruf") BlockInput, Off }
Ich hoffe ihr könnt mir hier weiter helfen! Gruß Green
@Fenster Ansprechen:
Versuchen kannste
DetectHiddenWindows, On
oder du lässt " ifwinexist,... else " weg, häufig wissen die .exen mit anderen Instanzen umzugehen (cpu-load mäßig nicht die beste lsg)
ich seh grad der if else block, ist vllt eher so gemeint:
IfWinExist, ahk_class #32770 WinActivate, ahk_class #32770 Else { Run C:\Program Files (x86)\Aastra\OpenCTI.exe ;WinWait, ahk_class #32770 ;? WinActivate, ahk_class #32770 WinWaitActive, ahk_class #32770 }
Babba
Kommentiere bitte deinen Code mal. Es sind einige Fehler drin, die die Logik leider etwas unverständlich machen. Vor allem kann ich nicht erkennen, wie deine Fragen zu dem Code passen.
Und Vorsicht mit der ahk_class #32770. Diese Klasse hat jeder Windows-Standard-Requester wie z.B. das Druckfenster, das Dateidialogfenster etc.
RALT & LButton:: { BlockInput, MouseMove Click right Send, {Down 5}{Enter}
Öffnet Chrome Kontextmenü und kopiert den Link in die Zwischenablage, dieser entspricht dann dem Muster: tel:xxxx-xxx xxx
IfWinExist, ahk_class #32770 WinActivate, ahk_class #32770 Else { Run C:\Program Files (x86)\Aastra\OpenCTI.exe WinActivate, ahk_class #32770 WinWaitActive, ahk_class #32770 }
Starte bzw. aktivieren des Programmes, eine andere Aktivierung hab bisher nicht funktionier, was würdest du vorschlagen?
StringCaseSense On work := clipboard StringReplace work, work, t, , all StringReplace work, work, e, , all StringReplace work, work, l, , all StringReplace work, work, -, , all StringReplace work, work, :, , all StringReplace work, work, %A_Space%, , all clipboard := work
Löscht die Zeichen aus dem Link, so wird aus ( tel:xxxx-xxx xxx -> xxxxxxxxxx )
click 90,90 send 0^v send {tab} send {Enter}
Aktiviert das Fenster für die Telefonnummer, fügt die Nummer mit einer zusätzlichen "0" ein und startet anschließend den Anruf.
RALT & LButton::
{
SendInput, ^c
Und:
work := SubStr(clipboard, 5)
StringReplace work, work, -, , all
StringReplace work, work, %A_Space%, , all
click 90,90
send 0%work%
Translated AHK v2-changelog/Übersetzter AHK v2-Changelog [German/Deutsch]
@SAPlayer
RALT & LButton:: { SendInput, ^c
Ist nicht einfach so möglich das hierbei kein Text markiert ist, oder täusche ich mich und es funktioniert ohne das ein Text markiert ist?
PS: Wie wird dann aber bei dir der Text ausgewählt?
Translated AHK v2-changelog/Übersetzter AHK v2-Changelog [German/Deutsch]
Wenn das Fester vorher geöffnet wird startet der Anruf so wie er soll, jedoch ist das Fenster in der Regel nicht nur minimiert sonder ausgeblendet und erscheint nur rechts unten bei der Uhr so wie z.B. Dropbox, Spotify usw. wie kann ich das Fester in dem Fall ansprechen? - IfWinExist scheint nicht auszureichen.
Solche Programme besitzen in der Regel auch ein Fenster, nur ist dies versteckt. Erkennen lassen sich diese in der Tat nach DetectHiddenWindows, On
. Du kannst aber auch versuchen, das Fenster anzusprechen, ohne es vorher zu aktivieren. Dies machst du mit ControlSend
.
Ansonsten scheint dein Code jetzt soweit zu passen. Du hast schon die richtigen Stellen korrigiert. Nur deine Fenstersuche nach ahk_class #32770 würde ich noch durch einen eindeutigen Titel (falls das Fenster einen hat) präzisieren.
@SAPlayer kein Google Chrome Nutzer? Bild zu Erklärung: https://www.dropbox..../ChromeLink.png
@rruespe Ich hab es nun mal mit "DetectHiddenWindows, On" gelöst, da das Fenstern vorerst während dem Telefonat aktiv sein soll.
Berichte wie das ganze nun läuft folgen in kürze.