Tasten überschreiben

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
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

Hi,
ich möchte in meinem Script Tasten wie STRG,ALT,etc überschreiben,sodass Kombies wie STRG+ALT+ENTF keine Wirkung mehr haben.
Ich hab bereits im Internet gesuch aber nichts hilfreiches gefunden. Nur in einem IRC den Tipp bekommen ctypes zu benutzen,da ich keine 3rd party libs verwenden möchte,doch auch dazu konnte ich nichts genaueres finden...

Also,könnte mir jemand ein Beispiel geben wie man z.B. STRG überschreibt?
-
deets

Na, wieder da? Dachte, du wolltest das alles hier hinter dir lassen, weil hier nur irrelevante Antworten und unmoegliche Rueckfragen kommen.

http://www.python-forum.de/viewtopic.ph ... 88#p224888

Aber wenn man mal wieder nicht weiter weiss, dann interessiert einen das Geschwaetz von gestern natuerlich nicht mehr.

Deine Frage ist viel zu unspezifisch gestellt - welches Betriebssystem zB verwendest du usw.

Aber hier haste was zum lesen:

http://forums.codeguru.com/showthread.p ... 6c961ea504

Oder frag doch nochmal deine IRC-Freunde, was die eigentlich mit ctypes machen wollten. Die scheinen ja recht kompetent zu sein...
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Ich bin einfach mal so böse und werde die Gründe des Threaderstellers hinterfragen:

Warum um Gottes Willen willst du dies tun? Die Wirkung von Strg-Alt-Entf ist betriebssystemspezifisch. Versehentlich wird wohl kaum einer Strg-Alt-Entf betätigen und wenn du Leute aussperren willst, wärst du besser dran eine andere Lösung als ein Python-Skript zu verwenden. Also wozu das Ganze?
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

deets hat geschrieben:Oder frag doch nochmal deine IRC-Freunde, was die eigentlich mit ctypes machen wollten. Die scheinen ja recht kompetent zu sein...
Das war ich btw.

Aus #python.de

Code: Alles auswählen

 Area_13 | hey,jemand ne idee wie ich strg,alt und ähnliche tasten in python überschreiben kann (nicht nur im aktuellen fenster sondern allgemein),sodass
        | kombies wie strg+alt+entf keine wirkung mehr hat?
 Area_13 | *haben
  dav1d | Area_13: evt. über die winapi einen Hook registrieren, ist evt. mit pywin32 möglich
  dav1d | ansonsten ctypes
 Area_13 | ich möcht wenn möglich keine 3rd party libs,also beliebt mir nur ctypes?
  dav1d | wahrscheinlich
 Area_13 | und da auch für jedes os extra,oder?
  dav1d | ja
 Area_13 | k,danke
  dav1d | für linux gibts X11 bindings
  dav1d | aber X macht keinen spass …
 Area_13 | xD
the more they change the more they stay the same
lunar

@Dav1d Danke dafür... bitte recherchiere, anstatt einfach ins Blaue hinein zu raten und ohnehin überforderten Anfängern noch weitere Flöhe ins Ohr zu setzen. :roll:

@graphicsH Unter Windows kann man Strg+Alt+Entf nicht so einfach abfangen. Bei dieser Tastenkombination löst das BIOS einen dedizierten Interrupt aus, der vom Systemkern abgefangen und an den graphischen Anmeldedienst (GINA) delegiert wird. Um die Tastenkombination abzufangen, muss man mithin einen Kernel-Treiber oder eine eigene GINA-Implementierung schreiben. Beides alles andere als trivial und in Python unmöglich.

Verzichte das nächste Mal, wenn Du Dich ärgerst, vielleicht auf die Drohung, das Forum zu verlassen. Ein drittes Mal wäre nicht mehr sonderlich überzeugend...
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

@deets
Windows und Linux wenn möglich

@webspider
Für einen Screenlock,und den sollte man dann ja nicht mit STRG+ALT+ENTF deaktivieren können,ohne das Passwort einzugeben...

@luna
Ich habe mal wo gelesen,dass z.B. bei Öffentlichen Terminals solche Kombinationen von VBS abgefangen werden,und habe gehofft es sei auch in Python möglich...

Und ich bin nur zurück weil in allen anderen Foren seit einigen Tagen noch keine Antwort gekommen ist,und in den IRCs acuh bisher bis auf den ctypes Tipp,keine Antwort bekommen habe...
-
lunar

@GraphicsH Und wo hast Du das gelesen?
deets

Ich denke, das Problem ist zu komplex um es selbst in Python zu loesen:

http://de.wikipedia.org/wiki/Kiosk-Modus

Da kann der OP sich ja bedienen. Kost halt was.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Also Programme fangen STRG+ALT+ENTF nicht ab, nicht mal VMs. Macht aber auch Sinn für den Fall das das Programm crasht.

Man kann aber unter Windows die Key umlegen in der Regestry. Machen viele Gamer mit der Windows Taste.

Du kannst natürlich auch die genannten Tasten machen und sie so deaktivieren. Dann gehen sie aber für die gesamte Laufzeit nicht, den man muss die Änderungen durchführen und neustarten oder zu mindestens Logout/Login.

Du könntest den Bildschirm von Windows sperren lassen, das geht zumindestens mit ctypes.
lunar

@Sr4l Man kann Strg+Alt+Entf nicht "über die Registry umlegen".
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

lunar hat geschrieben:@Dav1d Danke dafür... bitte recherchiere, anstatt einfach ins Blaue hinein zu raten und ohnehin überforderten Anfängern noch weitere Flöhe ins Ohr zu setzen. :roll:
Ich verstehe nicht was du meinst:
SetWindowsHookEx
KeyboardProc

Und ich weiß, dass man unter Linux mithilfe der Xlib (X server vorrausgesetzt), relativ einfach aber mit einer unschönen API Keyboard-Events abfangen und senden kann.
the more they change the more they stay the same
lunar

@Dav1d Mit diesem Funktionen kann man Strg+Alt+Entf nicht abfangen. Ich wiederhole mich: Unter Windows fängt der Systemkern diese Tastenkombination ab, lange bevor sie Win32 oder irgendein anderes höheres Windows-Subsystem erreicht. Mithin kommt man da auch nicht mit den Hooks des Win32-Subsystems heran.

Unter Linux wird diese Tastenkombination zwar an den Userspace und damit an X11 weitergereicht, unter X11 hat man aber nicht unbegrenzten Zugriff auf die Ereignisse anderer Prozesse. Insbesondere kann man mit XRecord nur Ereignisse aufzeichnen, nicht aber unterdrücken. Daher auch der Name...
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

lunar hat geschrieben:@Sr4l Man kann Strg+Alt+Entf nicht "über die Registry umlegen".
Ich kann nicht Strg Alt Entf als Gruppe deaktivieren aber ich kann STRG, ALT wegmappen und damit geht dann auch STRG+ALT+ENTF nicht mehr.

Folgender Code deaktiviert, linkes und rechtes Strg und Alt und die Windows Tasten.
Habe es gerade ausprobiert.

Code: Alles auswählen

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,09,00,00,00,00,00,5b,e0,00,00,5c,e0,00,00,5d,e0,00,00,1d,00,00,00,38,00,00,00,1d,e0,00,00,38,e0,00,00,00,00
PS: ich entschuldige mich für meinen letzen Post der ist ja total wirr! :roll:
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

lunar hat geschrieben:Unter Linux wird diese Tastenkombination zwar an den Userspace und damit an X11 weitergereicht, unter X11 hat man aber nicht unbegrenzten Zugriff auf die Ereignisse anderer Prozesse. Insbesondere kann man mit XRecord nur Ereignisse aufzeichnen, nicht aber unterdrücken. Daher auch der Name...
Ich denke da auch eher an XGrabKey und XGrabKeyboard auf das root-Fenster. Funktioniert in meinem WM einwandfrei...
the more they change the more they stay the same
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Ich erinnere mich an ein AutoIt Skript, mit dem man auch den Bildschirm sperren kann. Hier ist der Link.
Aber Black Viper hat das ganz anders gelöst, er hat einen (durchsichtiges) Fenster in Erstellt und da ein Entry rein gepackt für die Passwort Eingabe. Wenn man den Taskmanager geöffnet hat ist der sofort wieder geschlossen worden und wenn ein anderes Fenster den Focus bekommen hat, hat sich das Skript wieder selbst in den Vordergrund gesetzt.

Das könnte man auch in Python lösen, aber ich kann dir leider nicht helfen weil ich selber nicht weiß wie es geht, ich weiß bloß das es geht.
(Denk daran eine Taste einzubauen mit der du den Inhalt des entrys löschten kannst, sonnst musst du wenn du dich vertippt hast immer auf backspace bleiben ...)
Windows und Linux wenn möglich
Hat Linux nicht so eine Funktion schon eingebaut?
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

Py-Prog hat geschrieben:Aber Black Viper hat das ganz anders gelöst, er hat einen (durchsichtiges) Fenster in Erstellt und da ein Entry rein gepackt für die Passwort Eingabe. Wenn man den Taskmanager geöffnet hat ist der sofort wieder geschlossen worden und wenn ein anderes Fenster den Focus bekommen hat, hat sich das Skript wieder selbst in den Vordergrund gesetzt.
Die Idee ist gut,ich werd's mal mit dem Ansatz probieren. :D
Py-Prog hat geschrieben:Hat Linux nicht so eine Funktion schon eingebaut?
Ich benütze Linux kaum,weil ein Treiber sich nicht installieren lässt,und ich deßhalb nicht mit meinem Rooter verbinden kann,daher kenn ich mich in Linux kaum aus...
-
Antworten