Hotkey für beliebige Funktionen

GreenDie

Lieutenant
Registriert
März 2021
Beiträge
626
Hallo

Ich habe einige Funktionen, denen Die Programme keine Hotkey/Schnellzugriffsfunktion bereitstellen.
Ich muss immer das Programm öffnen und hätte das gerne praktisch gelöst.

Mit dem Programm "Hotkey PRO" habe ich die Möglichkeit Key oder CMD Skripte zu aktivieren.
Wie finde ich jetzt heraus, welcher Befehl hinter der/einer anderen beliebigen Funktion steckt?

Oder gibt es einen anderen Weg, beliebige Funktionen mit Hotkeys zu hinterlegen?

Danke im Voraus
 

Anhänge

  • Fuhnktion.PNG
    Fuhnktion.PNG
    524,4 KB · Aufrufe: 315
Dachte ist der falsche Bereich.. wie kann ich jetzt einen löschen?
 
GreenDie schrieb:
[...] wie kann ich jetzt einen löschen?
Ich glaub', das könnte nur ein Mod - der andere wurde schon geschlossen.
Ansonsten hätte man das Anliegen über den "Melden"-Link den Mods schildern können.
 
Wenn es seitens Hersteller nichts gibt, dann nur so:

Programm ist gestartet bzw. minimiert in der Taskleiste > per Drücken eines Hotkeys wird es in den Vordergrund gebracht > der entsprechend Button gedrückt > Programm wird wieder minimiert (optional).
Exemplarisch am Windows Taschenrechner per Autoit folgendes Skript:
Code:
HotKeySet("!z", "_7druecken")
HotKeySet("!y", "_8druecken")

While 1
    Sleep(100)
WEnd

Func _7druecken()
     WinActivate("Rechner")
     ControlClick("Rechner", "", "[CLASS:Button; INSTANCE:3]")
     WinSetState ("Rechner", "", @SW_MINIMIZE)
EndFunc

Func _8druecken()
     WinActivate("Rechner")
     ControlClick("Rechner", "", "[CLASS:Button; INSTANCE:9]")
     WinSetState ("Rechner", "", @SW_MINIMIZE)
EndFunc
Durch Drücken von ALT+z wird der Rechner in den Vordergrund geholt > die Zahl 7 gedrückt > Rechner wieder minimiert
Durch Drücken von ALT+y wird der Rechner in den Vordergrund geholt > die Zahl 8 gedrückt > Rechner wieder minimiert

Fürs Skript müssen Informationen wie Programmtitel, sowie Klasse und Instanz der Knöpfe ausgelesen werden. AutoIT hat hierzu ein Tool enthalten : Au3Info.exe

Au3Info.exe starten > das andere Programm starten (hier : Taschenrechner)

Programmtitel : einfach in die Titelleiste klicken => Title : Rechner
Klasse : das Fadenkreuz vom Finder Tool auf die Zahl 7 ziehen => Class : Button
Instanz : das Fadenkreuz vom Finder Tool auf die Zahl 7 ziehen => Instance : 3

für die Zahl 8 entsprechend wiederholen und im Quellcode hinterlegen

auslesen.gif
 
An AutoIt hatte ich vorhin ich schon gedacht. Aber das kann schon knifflig werden all das zu erwischen was man erwiischen will.

z.B. Thunderbrid, Mail-Dialg. Ziel ist die Rechtschreib-Sprache zu ändern. Aus unerfindlichen Gründen kann ich tippen, aber der Fokus der Maus ist außerhalb. Das Umschalten erfolgt aber über das Kontextmenü des Eingabefeldes. Ein emulierter Mausklick aber geht dann fehl. Schlechtes Design weil nicht über Menüs greifbar…

Letztlich bleibt es aber bei so einem Do-It-Yourself Maus- und Tastaturmakros abzusenden.

CN8
 
@ cumulonimbus8
WinWait, WinWaitActive und ControlClick sind von der Maus-Position unabhängig. Wenn das Programm bestimmte Text-Inhalte zur Verfügung stellt (Visible Text) dann können Knöpfe noch gezielter automatisiert werden.

Angenommen man würde 7-Zip per AutoIT installieren wollen:

EXE per Silentparameter installieren:
Code:
; 7z1900-x64.exe /S

;Installationsdatei
$InstallFile = "7z1900-x64.exe"

;Installationsparameter für Silent Installation
$InstallParameter = " /S"

;Installation starten
ShellExecute(@ScriptDir & '\' & $InstallFile, $InstallParameter)

MSI per Silentparameter installieren:
Code:
; msiexec.exe /i 7z1900-x64.msi /qb

;Installationsdatei
$InstallFile = "7z1900-x64.msi"

;Installationsparameter für Silent Installation
$InstallParameter = " /qb"

;Installation starten
ShellExecute("msiexec.exe", '/i ' & @ScriptDir & '\' & $InstallFile & $InstallParameter)

Klick-Installer / Dialog Installation (ohne irgendwelche Silent-Parameter):
Code:
; Click Installer
$InstallFile = "7z1900-x64.msi"

;Installationsdatei starten
ShellExecute(@ScriptDir & '\' & $InstallFile)

;Tastatur- und Mauseingaben blockieren
;BlockInput(1)

;Willkommen
WinWait("7-Zip 19.00 (x64 edition) Setup", "Welcome to the")
WinWaitActive("7-Zip 19.00 (x64 edition) Setup", "Welcome to the")
ControlClick("7-Zip 19.00 (x64 edition) Setup", "Welcome to the", "[CLASS:Button; INSTANCE:1]")

;Lizenzbedingungen
WinWait("7-Zip 19.00 (x64 edition) Setup", "End-User License")
WinWaitActive("7-Zip 19.00 (x64 edition) Setup", "End-User License")
ControlClick("7-Zip 19.00 (x64 edition) Setup", "End-User License", "[CLASS:Button; INSTANCE:3]")

;Installationspfad
WinWait("7-Zip 19.00 (x64 edition) Setup", "Location:")
WinWaitActive("7-Zip 19.00 (x64 edition) Setup", "Location:")
ControlClick("7-Zip 19.00 (x64 edition) Setup", "Location:", "[CLASS:Button; INSTANCE:5]")

;Installation starten
WinWait("7-Zip 19.00 (x64 edition) Setup", "Ready to Install")
WinWaitActive("7-Zip 19.00 (x64 edition) Setup", "Ready to Install")
ControlClick("7-Zip 19.00 (x64 edition) Setup", "Ready to Install", "[CLASS:Button; INSTANCE:1]")

;Fertigstellen
WinWait("7-Zip 19.00 (x64 edition) Setup", "Finish button")
WinWaitActive("7-Zip 19.00 (x64 edition) Setup", "Finish button")
ControlClick("7-Zip 19.00 (x64 edition) Setup", "Finish button", "[CLASS:Button; INSTANCE:1]")

;Eingaben wieder freigeben
;BlockInput(0)

7zip_Installation.gif


Bzw. die Finder-Funktion des AutoIT Window Info benutzen:
Button_finden_mit_Finder-Tool.gif
 
Zuletzt bearbeitet:
Weiß jemand, ob es beim Elgato Stream Desk evtl. diese Funktion gibt?
 
Ich habe genau das gegoogelt aber in dem Video wird leider nichts von einer Funktion berichtet, die bestimmte Programm Funktionen oder Einstellungen auslesen kann, und via Shortcut abspeichert.
Es werden lediglich bestimmte festgelegte und vorgefertigte Funktionen als Shortcut angeboten. Nutzlos..

Ich hab jetzt mal beim Hersteller angefragt.

Die Option, Programme via Shortcut in den Vordergrund zu rufen, dann über Wartezeiten und Koordinaten Knöpfe bedienen zu lassen finde ich schlecht. Ich möchte, dass das alles im Hintergrund passiert & ich bin mir relativ sicher, dass es möglich ist. Natürlich weiß ich nicht was dafür alles nötig ist...

Ich bin etwas verärgert, dass es dafür keine kompromisslose Lösung gibt...

Meiner Vorstellung nach steckt ja hinter jeder Programmfunktion ein Befehl & Theoretisch müsste man diesen nur ja auslesen und gezielt ausführen...
Das wäre dann ganz theoretisch ein Thema für das man Programmieren können müsste. Oder sogar evtl. eine Marktlücke, ein Programm zu erfinden, das End-Usern Benutzerfreundlich eine erleichterte Bedienung verschafft.

Ich bedanke mich trotzdem für den Hilfsansatz und die Codes, ich habe bereits Programme installiert, mit denen mir dieser Weg entgegengebracht wurde. Aber mit dem Sound Commander funktioniert sowas einfach schlecht... Die Wartezeiten sind sonderlich lange, Und so weiter.. Also ich hab's schonmal probiert, es hätte auch funktioniert. aber es hat mir überhaupt gar nicht gefallen!

Aber ich möchte trotzdem danke sagen und höflich zurückgeben, dass ich mich freue sachliche Hilfsbereitschaft entgegen gebracht zu bekommen /(bekommen zu haben!
 
GreenDie schrieb:
Meiner Vorstellung nach steckt ja hinter jeder Programmfunktion ein Befehl
Ja, es kommt aber drauf an, wie der dann aufgerufen wird. Das von Dir angesprochene wird ja im System recht oft genutzt. Nämlich indem mit Hilfe von Rundll32.exe Funktionen ausgeführt werden, die in Bibliotheken hinterlegt sind. Wenn man die genaue Aufrufsyntax und die notwendigen Parameter solcher Funktionen kennt, kann man so manchen Systemdialog auf eine solche Weise mit Hilfe einer Verknüpfung aufrufen. Und Verknüpfungen lässt sich natürlich dann ein Hotkey zuweisen.

Dein Beispiel wäre wohl eher ein Registrywert, der durch den gezeigten Schalter entsprechend gesetzt und vom Programm ausgewertet wird. Den könnte man natürlich einfach ermitteln, indem man mit einem Vergleich der Registry vor und nach dem Umlegen des Schalters seine Position und Werte herausfindet. Dann könnte man das ebenfalls mit einem Script erledigen lassen, das diesen Wert entsprechend in die Registry schreibt. Und dem könnte man ebenfalls wieder einen Hotkey zuweisen.

Die Frage dabei ist einfach, wie viel Aufwand willst Du dafür treiben?
 
Zuletzt bearbeitet:
Geil!
Also ich bin relativ interessiert an solchen Sachen.. Und ich Stelle mir so einen Tag Aufwand vor.

Allerdings fehlt es mir direkt der Ansatz. Ich hab keine Ahnung, wie ich das Auslesen kann.

Ich hab tatsächlich auch schonmal durch die Registry geblättert aber ich könnte mir nichts daraus ausmalen...

Am coolsten wäre natürlich ein Tutorial...

Viuelleicht komme ich mit den gegebenen Schlagworten wie Rundl32 oder Registry Veränderungen protokollieren ja schon etwas weiter.

Aber ich denke da fehlt noch stark die Umsetzung...

Hätte auch schon überlegt, ob ich im Programmordner an ans Ziel Geräte, indem ich die Dateien mit der gewünschten Funktion finde. Aber kein Land in Sicht...

Ich weiß auch nicht wie hilfreich die Anfrage beim Hersteller ist. Mit ggf. Der Sachlich Richtigen Formulierung der Frage könnte man bestimmt die Suche der bestimmten Funktionen / Parameter / Registry Einträge erleichtern...
Ergänzung ()

Von Seiten des Herstellers gibt es bereits eine Antwort, die erstmal logischer ist: "Es gibt keine Möglichkeit die Tasten zu individualisieren bzw. neu zuzuordnen."

Aber vollkommen klar dass der Support Mitarbeiter keine Scripte rumliegen hat😁

Wenn man aber gezielt frägt, hätte ich Hoffnung dass die Frage evtl. Sogar an einen Programmmierer oder Fachmann weitergegeben werden könnte. 😁
 
Zuletzt bearbeitet:
Der Hersteller wird Dir kaum Interna seiner Software verraten :-)
Von daher wirst Du dem auch nicht entlocken können, wie und wo er die Stati seiner Schalterchen hinterlegt, damit sie immer verfügbar sind.

Man kann sowas aber eben herausfinden, indem man einen Vorher/Nachher Vergleich der Registry durchführt. Hier: https://www.der-windows-papst.de/2021/04/23/windows-registry-vergleichen-vorher-nachher/ ist das beschrieben und ein entsprechendes Tool benannt.

Eine andere Möglichkeit, um zu ermitteln, wie man Dialoge direkt aufrufen kann, bietet z.B. der Prozessexplorer der Sysinternals. Damit lassen sich die Prozessstrukturen einsehen und man kann so ebenfalls oft herausfinden wie ein Programm einen externen Dialog öffnete. Und mit etwas Glück kann man die Aufrufbefehlszeile dann in einem Script verwenden, um den Dialog ohne Umweg zu öffnen. Eine weitere Methode wäre, sich vom Prozess Explorer die in einem Programm enthaltenen Strings auflisten zu lassen, die mit / oder - beginnen. Mit diesen beiden Zeichen werden üblicherweise Aufrufparameter gekennzeichnet, über die man einem Programm schon beim Aufruf Parameter übergeben oder es mit bestimmten Einstellungen starten kann. Sowas liesse sich dann natürlich per Verknüpfung nutzen und mit einem Hotkey versehen.

Ein einfaches Beispiel der Windows Scandialog, der sich einfach hinter der Wiaacmgr.exe in C:\Windows\System32 verbirgt. Hat man einen Scanner installiert, dann kann man darüber direkt den Scannerdialog öffnen und ohne Umweg über eine Scannersoftware oder ein Bildbearbeitungsprogramm Scannen. Hier: https://www.win-10-forum.de/threads...r-funktioniert-nicht-mehr.155951/#post-358398, eine ausführlichere Beschreibung dazu. Hab ich mir am PC in die Quickstartleiste gelegt und muss seitdem für einen schnellen Scan nur noch in die Taskleiste klicken.

Ausserdem liegt bei mir in der Taskleiste überall ein Powershellscript, das auf Mausklick einen Screenshot erstellt und ihn anschliessend in Paint öffnet. Weil das Script erst nach einer dreisekündigen Wartezeit auslöst, hab ich auch noch die Möglichkeit Menüs zu öffnen, wenn diese mit abgebildet werden sollen. Gerade auf dem Tablet war das eine echte Innovation, weil ich das ohne Tastatur nutze und die Erstellung von Screenshots dann zum Fingerbrechen ausartet.
 
Ich hab gerade alles mögliche mit den Tipps versucht, aber leider bin ich nicht weiter gekommen..

Ich habe keine veränderungen bei der Registry entdeckt

Ich habe auch keine passenden Strings gesehen...

und im Installationsordner sind auch keine weiteren Exe Dateien enthalten...
 
Zurück
Oben