vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Warte bis tastendruck 
Autor: Nock
Datum: 24.10.05 13:21

k hab jetzt ne lösung meines Probelems ^^(endlich)
Private Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal _
  id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, _
ByVal id As Long) As Long
Private Declare Function GlobalAddAtom Lib "kernel32" Alias "GlobalAddAtomA" ( _
ByVal lpString As String) As Integer
Private Declare Function GlobalDeleteAtom Lib "kernel32" (ByVal nAtom As _
Integer) As Integer
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg _
As Msg, ByVal hwnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As _
Long, ByVal wRemoveMsg As Long) As Long
Private Declare Function WaitMessage Lib "user32" () As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal _
  hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
  ByVal cy As Long, ByVal wFlags As Long) As Long
 
 
 
Private Type POINTAPI
   x As Long
   y As Long
End Type
 
Private Type Msg
   hwnd As Long
   Message As Long
   wParam As Long
   lParam As Long
   time As Long
   pt As POINTAPI
End Type
 
'RegisterHotKey fsModifiers-Konstanten
Private Const MOD_ALT = &H1 'Alt-Taste
Private Const MOD_SHIFT = &H4 'Shift-Taste
Private Const MOD_CONTROL = &H2 'STRG-Taste
Private Const MOD_WIN = &H8 'Windows-Taste
 
'Einige Standard Fensternachrichten
Private Const WM_HOTKEY = &H312 'Hotkey wird übermittelt
Private Const WM_NCLBUTTONDOWN = &HA1 'Linksklick im Nicht-Client bereich ( 
' Beenden Button in der Titelleiste)
 
'PeekMessage wRemoveMsg-Konstanten
Private Const PM_NOREMOVE = &H0 'Nachricht soll nicht an das Fenster gesendet 
' werden
Private Const PM_NOYIELD = &H2 'Befreit wartende Threads vom Wartestatus wenn 
' es mit einem der PM-Flags Kombiniert wird
Private Const PM_REMOVE = &H1 'Nachricht soll an das Fenster gesendet werden
 
'einige SetWindowPos-Konstanten
Private Const HWND_TOP = 0 'In den Vordergrund bringen
Private Const SWP_NOMOVE = &H2 'Nicht bewegen
Private Const SWP_NOSIZE = &H1 'Nicht in der Größe verändern
Private Const SWP_SHOWWINDOW = &H40 'Fenster anzeigen
 
Dim hAtom As Long, ExitForm As Boolean
 
'Benötigte Deklarationen
Private Declare Sub mouse_event Lib "user32" _
 (ByVal dwFlags As Long, ByVal dx As Long, _
 ByVal dy As Long, ByVal cButtons As Long, _
 ByVal dwExtraInfo As Long)
 
Const MOUSE_LEFT = 0
Const MOUSE_MIDDLE = 1
Const MOUSE_RIGHT = 2
 
'Die nachfolgende Prozedur simuliert den gewünschten Mausklick.
Public Sub SendMausklick(ByVal mButton As Long)
  Const MOUSEEVENTF_LEFTDOWN = &H2
  Const MOUSEEVENTF_LEFTUP = &H4
  Const MOUSEEVENTF_MIDDLEDOWN = &H20
  Const MOUSEEVENTF_MIDDLEUP = &H40
  Const MOUSEEVENTF_RIGHTDOWN = &H8
  Const MOUSEEVENTF_RIGHTUP = &H10
 
  If (mButton = MOUSE_LEFT) Then
    Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
  ElseIf (mButton = MOUSE_MIDDLE) Then
    Call mouse_event(MOUSEEVENTF_MIDDLEDOWN, 0, 0, 0, 0)
    Call mouse_event(MOUSEEVENTF_MIDDLEUP, 0, 0, 0, 0)
  Else
    Call mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
    Call mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)
  End If
End Sub
 
 
'Hotkey Registrieren
Private Sub Form_Load()
   Dim Retval As Long
 
   'Eindeutigen ID erzeugen
   hAtom = GlobalAddAtom("Hotkey_Beispiel")
 
   'Hotkey Registrieren
   Retval = RegisterHotKey(Me.hwnd, hAtom, MOD_CONTROL, Asc(UCase("M")))
   If Retval = 0 Then
      MsgBox "Registrieren des Hotkeys Fehlgeschlagen"
      Call GlobalDeleteAtom(hAtom)
   End If
End Sub
 
 
 
'Auf Hotkey warten
Private Sub Form_Activate()
   Dim wMsg As Msg, Retval As Long
 
   wMsg.hwnd = Me.hwnd
   Do
      DoEvents
 
      'Auf eine Nachricht warten
      Call WaitMessage
 
      'War es die WM_HOTKEY-Nachricht ?
      Retval = PeekMessage(wMsg, Me.hwnd, 0&, 0&, PM_NOREMOVE)
 
      'Nachricht auswerten
      With wMsg
         If .Message = WM_HOTKEY Then
            Call SetWindowPos(Me.hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE Or _
              SWP_NOSIZE Or SWP_SHOWWINDOW)
            If Timer2.Interval = 0 Then
                Timer1.Enabled = True
                Timer2.Interval = 1
            Else
                Timer1.Enabled = False
                Timer2.Interval = 0
            End If
            .Message = 0
         End If
      End With
   Loop Until wMsg.Message = WM_NCLBUTTONDOWN
End Sub
 
 
 
'Hotkey entfernen
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
 
   'Hotkey Deregistrieren
   Debug.Print UnregisterHotKey(Me.hwnd, hAtom)
 
   'Atom-ID zerstören
   Call GlobalDeleteAtom(hAtom)
End Sub
 
Private Sub Timer1_Timer()
SendMausklick MOUSE_LEFT
End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Warte bis tastendruck1.429Nock14.10.05 08:50
Re: Warte bis tastendruck1.327wincnc14.10.05 09:17
Re: Warte bis tastendruck1.159Nock14.10.05 19:45
Re: Warte bis tastendruck1.183Nock20.10.05 18:48
Re: Warte bis tastendruck1.102flo121220.10.05 21:02
Re: Warte bis tastendruck1.245Nock22.10.05 12:07
Re: Warte bis tastendruck1.177HarryC22.10.05 14:39
Re: Warte bis tastendruck1.084Nock22.10.05 17:09
Re: Warte bis tastendruck1.186Nock22.10.05 17:53
Re: Warte bis tastendruck1.152HarryC22.10.05 19:54
Re: Warte bis tastendruck1.086HarryC22.10.05 20:27
Re: Warte bis tastendruck1.105Nock23.10.05 14:15
Re: Warte bis tastendruck1.151HarryC23.10.05 14:49
Re: Warte bis tastendruck1.099Nock23.10.05 16:56
Re: Warte bis tastendruck1.383Nock24.10.05 13:21
Re: Warte bis tastendruck1.173Nock24.10.05 13:22

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel