Willkommen im PC-Welt-Forum
Liebe Leser,
Wenn dies Ihr erster Besuch hier ist, lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Sie müssen sich vermutlich registrieren, bevor Sie Beiträge verfassen können. Klicken Sie rechts auf 'Jetzt registrieren.', um den Registrierungsprozess zu starten.
Wenn dies Ihr erster Besuch hier ist, lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Sie müssen sich vermutlich registrieren, bevor Sie Beiträge verfassen können. Klicken Sie rechts auf 'Jetzt registrieren.', um den Registrierungsprozess zu starten.
Ergebnis 1 bis 9 von 13
-
09.12.2010, 19:14 #1
VB 2008 Systemweit Tastendruck registrieren und dann Aktion ausführen
Hallo zusammen
Tja, der Titel sagt eigentlich schon alles.
Es sollen Tastenanschläge registriert werden, egal ob ich Spiele, Surfe oder Sonstwas mache.
Danach soll eine bestimmte Aktion ausgeführt werden.
Da ich davon wenig Ahnung (das mit den Hooks hab ich gar nicht geschnallt) habe wäre ein einfaches, funktionierendes Beispielprogramm sicher hilfreich.
Danke
Gandalf42
-
10.12.2010, 15:51 #2
Hier mal ein Beispiel Code
Es gibt momentan 3 vordeffinierte TastenPHP-Code:Public Class Form1
Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifier As Integer, ByVal vk As Integer) As Integer
Private Declare Sub UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer)
Private Const Key_NONE As Integer = &H0
Private Const WM_HOTKEY As Integer = &H312
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_HOTKEY Then
Select Case m.WParam
Case 1
MessageBox.Show("Du hast die F9-Taste gedrückt!" & vbCrLf & "Das Programm wird ausgeblendet!" & vbCrLf & "Mit F10 kannst du es wieder einblenden")
Me.Hide()
Case 2
MessageBox.Show("Du hast die F10-Taste gedrückt!" & vbCrLf & "Das Programm wurde eingeblendet!" & vbCrLf & "Mit F9 kannst du es wieder ausblenden")
Me.Show()
Case 3
MessageBox.Show("Du hast die Taste A gedrückt!" & vbCrLf & "Hier würde jetzt eigentlich etwas passieren" & vbCrLf & "Als Beispiel wird hier Notepad gestartet.")
Process.Start("Notepad.exe")
End Select
End If
MyBase.WndProc(m)
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
UnregisterHotKey(Me.Handle, 1)
UnregisterHotKey(Me.Handle, 2)
UnregisterHotKey(Me.Handle, 3)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.F9)
RegisterHotKey(Me.Handle, 2, Key_NONE, Keys.F10)
RegisterHotKey(Me.Handle, 3, Key_NONE, Keys.A)
MessageBox.Show("Das Programm wird unsichtbar gemacht. Mit F10 kannst du es sichtbar machen")
Me.Hide()
End Sub
End Class
F9 -> Blendet das Programmfenster aus
F10 -> blendet das Programmfenster ein
A -> startet Notepad
Das Programmfenster wird beim Start automatisch ausgeblendet !
Falls an dem Code was unklar ist, einfach fragen.
MfG VB-CoderGeändert von VB-Coder (10.12.2010 um 15:55 Uhr)
MfG VB-Coder
-
10.12.2010, 16:26 #3
Super!
Danke!
Ich hab den Code mal für meine Zwecke abgeändert und jetzt bekomme ich eine Exeption bei der Erstellung des Fensterhandles.
Woran könnte das liegen?
Muss ich noch was erstellen oder was an Form oder Namen ändern?
Dein original Code funktioniert aber.
Wahrscheinlich ein dummer Anfängerfehler.
Danke für den Code und weitere Hilfe
GandalfGeändert von Gandalf87 (10.12.2010 um 16:32 Uhr)
42
-
10.12.2010, 17:10 #4
Dann zeig mal deinen Code. Denn mit dem Hellsehen hab ich's nicht so ;-)
MfG VB-Coder
-
10.12.2010, 17:22 #5Mein Programm hat auf der Oberfläche 2 Buttons (Aktivieren & Deaktivieren) und 2 Label (Aktiviert/Deaktiviert & Anleitung)Code:
Public Class Form1 ''Hotkeys aktivieren Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifier As Integer, ByVal vk As Integer) As Integer Private Declare Sub UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer) Private Const Key_NONE As Integer = &H0 Private Const WM_HOTKEY As Integer = &H312 Dim enable As Boolean = False Dim dark As Boolean = False Protected Overrides Sub WndProc(ByRef m As Message) If enable = True Then If m.Msg = WM_HOTKEY Then Select Case m.WParam Case 1 ''Minimieren MsgBox("Minimieren") Case 2 ''Bildschirm aktivieren/deaktivieren je nach Boolean Wert If dark = False Then MsgBox("Bildschirm abdunkeln") Else MsgBox("Bildschirm aktivieren") End If End Select End If MyBase.WndProc(m) End If End Sub ''Hotkeybindings löschen wenn Programm geschlossen wird Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing UnregisterHotKey(Me.Handle, 1) UnregisterHotKey(Me.Handle, 2) End Sub ''Hotkeys registrieren wenn das Programm gestartet wird Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.F11) RegisterHotKey(Me.Handle, 2, Key_NONE, Keys.F12) End Sub Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click MsgBox("Hotkeys:" & vbCrLf & "F11: Minimieren" & vbCrLf & "F12: Bildschirm aktivieren/deaktivieren" & vbCrLf & "Bevor diese Funktionen genutzt werden können, muss der Button Aktivieren gedrückt werden." & vbCrLf & " Zum Vorübergehenden Deaktivieren der Deaktivieren Button.") End Sub Private Sub cmdActivate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdActivate.Click enable = True lblendis.Text = "Aktiviert" End Sub Private Sub cmdDeactivate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDeactivate.Click enable = False lblendis.Text = "Deaktiviert" End Sub End Class42
-
11.12.2010, 13:09 #6
ich bastel dir gerade ein Beispiel Projekt zusammen. Momentan grübel ich nur, wie ich es unter VB anstelle, den Monitor abzudunkeln. Sobald ich eine Lösung habe, poste ich dir das ganze Beispielprojekt.
MfG VB-Coder
-
11.12.2010, 14:31 #7
Danke!
Echt nett.
Mit der Hotkey Funktion kann man bestimmt viel machen.
Gandalf42
-
12.12.2010, 09:19 #8
Also das mit dem Bildschirm abdunkeln kannst du vergessen. Das funktioniert nicht. Alles was geht, sind irgendwelche drittklassigen Versuche, das ganze wirken zu lassen, als würde man den Bildchirm abdunkeln. In Wahrheit passiert aber nichts der gleichen.
Das fängt an bei irgendwelchen vollflächigen schwarzen Formen, die in einer Halbtransparenz über den Bildschirm gelegt werden und es so aussehen lassen, als würde man den Bildschirm abdunkeln, geht bis hin zum Versuch die Gamma Werte einzustellen. Was ich jetzt garnicht erst versucht habe, da es aus logischer Sicht eh nicht funktionieren dürfte.
Was man machen könnte, wäre den Monitor in den Stand By Modus versetzen. Sprich also der Monitor schaltet ab. Aber auch dieser Versuch hat einen Haken. Sobald nämlich irgendwas aktiv wird, wird der Monitor automatisch aus dem Stand By Modus geholt. Also ist auch das wohl ehr eine mittelmäßige Lösung.
Zumal fraglich bleibt, für welche Zwecke du den Monitor verdunkeln willst. Wenn du weiterhin daran arbeiten willst, also noch was sehen willst, dann fällt die Stand By Methode genauso wie das überblenden mit einer Vollflächigen Form aus. Denn im Stand by Modus ist der Monitor ganz aus und bei der halbtransparenten Form, liegt der Focus immer auf dieser. Was heisst, du kannst nichts was sich hinter dieser Form befindet bedienen.
Also müsste eine Lösung her, mit der du die Helligkeit runter drehen kannst. Und die gibt es nicht, oder ist mir nicht bekannt. Der einzigste Lösungsansatz der mir einfällt, wäre die Grafikkarten-Einstellungen bezüglich der "Desktop Farbeinstellungen" anzusprechen und dort die Helligkeit zu regulieren. Wobei hier auch wieder fraglich bleibt, in wie weit sich das überhaupt unter VB umsetzen lässt.MfG VB-Coder
-
13.12.2010, 15:12 #9
Ich meinte nicht abdunkeln sondern ausschalten/schwarzer Bildschirm/Standby.
Hier schon geguckt?
Hab mich nicht ganz klar ausgedrückt.
Fehler gefunden?
Danke für deine Hilfe
GandalfGeändert von Gandalf87 (13.12.2010 um 15:17 Uhr)
42
Stichworte
12

Zitieren

Lesezeichen