STRG+C, STRG+V abfangen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
kribel
User
Beiträge: 2
Registriert: Montag 16. Mai 2011, 09:07

Hallo,

ich würde gerne die beiden Tastenkombinationen Strg+C und Strg+V abfangen können.

Bedingungen:
  • Es ist eine Konsoleanwendung
  • Die Anwendung soll minimiert laufen und die beiden Tastenkombinationen aus beliebigen Fenstern auslesen können. Am besten durch Events.
  • Es ist ein Windows XP System
Kann mir bitte jemand dabei Helfen dies zu realisieren?

Viele Grüße
Konstantin
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Ich könnte mir vorstellen, dass Du mit dem 'signal'-Modul weiterkommen wirst...
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
kribel
User
Beiträge: 2
Registriert: Montag 16. Mai 2011, 09:07

mutetella hat geschrieben:Ich könnte mir vorstellen, dass Du mit dem 'signal'-Modul weiterkommen wirst...
Danke für den Tipp! Folgendes habe ich realisiert:

Code: Alles auswählen

import signal, os

def SignalHandler(signum, frame):
    print "Sighandler CTRL+C, CTRL+V"

def main():
    signal.signal(signal.SIGINT, SignalHandler)
  
    while True:
        try:
            continue
        except (SyntaxError) as e:
            return e
Leider wird der SignalHandler nur bei STRG+C aufgerufen. Bei STRG+V geschieht nichts. Das weitere Problem ist, dass das Fenster in dem das Skript aufgeführt wird aktiv sein muss.

Folgendes wäre also zu lösen:
  1. Wie lässt sich dieses Signal auf das ganze System ausweiten?
  2. Wie kann ich STRG+V abfangen?
Hat jemand eine Idee wie ich weiter verfahren kann?

Danke und viele Grüße
Konstantin
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Das Problem ist ja, dass Du Keyboardevents im System 'abfangen' musst, bevor sie an das aktive Programm weitergeleitet bzw. vom aktiven Programm interpretiert und dann verworfen werden.
Solange Dein Pythonprogramm das aktive Programm ist, funktioniert natürlich alles.
Du bräuchtest also eine Möglichkeit, Keyboardevents direkt in Windows abzufragen, bevor diese im gerade aktiven Programm dann aufgelöst werden.

Schau' Dir dazu mal pyHook an.

Ich hab' das jetzt nur überflogen, aber müsste eigentlich sein, was Du suchst.

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Antworten