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.
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 9 von 13
  1. #1
    Registriert seit
    01.2010
    Beiträge
    113

    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

    Gandalf
    42

  2. #2
    Avatar von VB-Coder
    VB-Coder ist offline Megabyte
    Mein System
    MainboardMSI P35 Neo (MS-7360)
    ProzessorIntel QuadCore Q6600 - 2400 Mhz - 2x 4MB L2 Cache
    GrafikkarteGainward GeForce 8600 GT - 1024 MB DDR2 - 128bit - PCIe
    RAM2x 2GB Transcend JM4GDDR2-8K - DDR2-800 (400 MHz)
    Festplatte(n)WesternDigital WD5000AAKS-65YGA0 (500 GB - SATA) Seagate ST3120022A (120 GB - IDE)
    Andere LaufwerkeHL-DT-ST DVD-RAM GSA-H55L
    Netzteil (inkl. Spannungswerte)Apevia ATX-AS600W-BK Input: 230V | 50 Hz | 5A Total Output: 600W max +12,+5,+3.3 Combine: 580W
    SoundkarteonBoard Sound
    BetriebssystemWindows 7 Home Premium 64bit
    AV-SoftwareAvira AntiVir Personal
    FirewallComodo Firewall Pro
    System-/OptimierungstoolsSpybot - Search & Destroy HijackThis Malwarebytes' Anti-Malware
    Art des InternetzugangsDSL-16000
    Router/ModemArcor SpeedModem200
    MonitorVideoSeven 19" TFT
    Registriert seit
    04.2007
    Ort
    406XX / NRW
    Beiträge
    1.684
    Hier mal ein Beispiel Code

    PHP-Code:
    Public Class Form1

        
    Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtrByVal id As IntegerByVal fsModifier As IntegerByVal vk As Integer) As Integer
        
    Private Declare Sub UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtrByVal 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 ObjectByVal e As System.Windows.Forms.FormClosingEventArgsHandles Me.FormClosing
            UnregisterHotKey
    (Me.Handle1)
            
    UnregisterHotKey(Me.Handle2)
            
    UnregisterHotKey(Me.Handle3)
        
    End Sub

        
    Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
            RegisterHotKey
    (Me.Handle1Key_NONEKeys.F9)
            
    RegisterHotKey(Me.Handle2Key_NONEKeys.F10)
            
    RegisterHotKey(Me.Handle3Key_NONEKeys.A)
            
    MessageBox.Show("Das Programm wird unsichtbar gemacht. Mit F10 kannst du es sichtbar machen")
            
    Me.Hide()
        
    End Sub
    End 
    Class 
    Es gibt momentan 3 vordeffinierte Tasten

    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-Coder
    Geändert von VB-Coder (10.12.2010 um 15:55 Uhr)
    MfG VB-Coder

  3. #3
    Registriert seit
    01.2010
    Beiträge
    113
    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

    Gandalf
    Geändert von Gandalf87 (10.12.2010 um 16:32 Uhr)
    42

  4. #4
    Avatar von VB-Coder
    VB-Coder ist offline Megabyte
    Mein System
    MainboardMSI P35 Neo (MS-7360)
    ProzessorIntel QuadCore Q6600 - 2400 Mhz - 2x 4MB L2 Cache
    GrafikkarteGainward GeForce 8600 GT - 1024 MB DDR2 - 128bit - PCIe
    RAM2x 2GB Transcend JM4GDDR2-8K - DDR2-800 (400 MHz)
    Festplatte(n)WesternDigital WD5000AAKS-65YGA0 (500 GB - SATA) Seagate ST3120022A (120 GB - IDE)
    Andere LaufwerkeHL-DT-ST DVD-RAM GSA-H55L
    Netzteil (inkl. Spannungswerte)Apevia ATX-AS600W-BK Input: 230V | 50 Hz | 5A Total Output: 600W max +12,+5,+3.3 Combine: 580W
    SoundkarteonBoard Sound
    BetriebssystemWindows 7 Home Premium 64bit
    AV-SoftwareAvira AntiVir Personal
    FirewallComodo Firewall Pro
    System-/OptimierungstoolsSpybot - Search & Destroy HijackThis Malwarebytes' Anti-Malware
    Art des InternetzugangsDSL-16000
    Router/ModemArcor SpeedModem200
    MonitorVideoSeven 19" TFT
    Registriert seit
    04.2007
    Ort
    406XX / NRW
    Beiträge
    1.684
    Dann zeig mal deinen Code. Denn mit dem Hellsehen hab ich's nicht so ;-)
    MfG VB-Coder

  5. #5
    Registriert seit
    01.2010
    Beiträge
    113
    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 Class
    Mein Programm hat auf der Oberfläche 2 Buttons (Aktivieren & Deaktivieren) und 2 Label (Aktiviert/Deaktiviert & Anleitung)
    42

  6. #6
    Avatar von VB-Coder
    VB-Coder ist offline Megabyte
    Mein System
    MainboardMSI P35 Neo (MS-7360)
    ProzessorIntel QuadCore Q6600 - 2400 Mhz - 2x 4MB L2 Cache
    GrafikkarteGainward GeForce 8600 GT - 1024 MB DDR2 - 128bit - PCIe
    RAM2x 2GB Transcend JM4GDDR2-8K - DDR2-800 (400 MHz)
    Festplatte(n)WesternDigital WD5000AAKS-65YGA0 (500 GB - SATA) Seagate ST3120022A (120 GB - IDE)
    Andere LaufwerkeHL-DT-ST DVD-RAM GSA-H55L
    Netzteil (inkl. Spannungswerte)Apevia ATX-AS600W-BK Input: 230V | 50 Hz | 5A Total Output: 600W max +12,+5,+3.3 Combine: 580W
    SoundkarteonBoard Sound
    BetriebssystemWindows 7 Home Premium 64bit
    AV-SoftwareAvira AntiVir Personal
    FirewallComodo Firewall Pro
    System-/OptimierungstoolsSpybot - Search & Destroy HijackThis Malwarebytes' Anti-Malware
    Art des InternetzugangsDSL-16000
    Router/ModemArcor SpeedModem200
    MonitorVideoSeven 19" TFT
    Registriert seit
    04.2007
    Ort
    406XX / NRW
    Beiträge
    1.684
    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

  7. #7
    Registriert seit
    01.2010
    Beiträge
    113
    Danke!
    Echt nett.
    Mit der Hotkey Funktion kann man bestimmt viel machen.

    Gandalf
    42

  8. #8
    Avatar von VB-Coder
    VB-Coder ist offline Megabyte
    Mein System
    MainboardMSI P35 Neo (MS-7360)
    ProzessorIntel QuadCore Q6600 - 2400 Mhz - 2x 4MB L2 Cache
    GrafikkarteGainward GeForce 8600 GT - 1024 MB DDR2 - 128bit - PCIe
    RAM2x 2GB Transcend JM4GDDR2-8K - DDR2-800 (400 MHz)
    Festplatte(n)WesternDigital WD5000AAKS-65YGA0 (500 GB - SATA) Seagate ST3120022A (120 GB - IDE)
    Andere LaufwerkeHL-DT-ST DVD-RAM GSA-H55L
    Netzteil (inkl. Spannungswerte)Apevia ATX-AS600W-BK Input: 230V | 50 Hz | 5A Total Output: 600W max +12,+5,+3.3 Combine: 580W
    SoundkarteonBoard Sound
    BetriebssystemWindows 7 Home Premium 64bit
    AV-SoftwareAvira AntiVir Personal
    FirewallComodo Firewall Pro
    System-/OptimierungstoolsSpybot - Search & Destroy HijackThis Malwarebytes' Anti-Malware
    Art des InternetzugangsDSL-16000
    Router/ModemArcor SpeedModem200
    MonitorVideoSeven 19" TFT
    Registriert seit
    04.2007
    Ort
    406XX / NRW
    Beiträge
    1.684
    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

  9. #9
    Registriert seit
    01.2010
    Beiträge
    113
    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
    Gandalf
    Geändert von Gandalf87 (13.12.2010 um 15:17 Uhr)
    42

Seite 1 von 2 1 2 LetzteLetzte

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
12
Content Management by InterRed