vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 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: Fragen zum Screenshot-Trick 
Autor: Tolwyn
Datum: 22.02.02 20:59

Hi,

zu 1 kann ich so adHoc nix sagen,

zum zweiten Teil Deiner Frage:
Wenn das Programm diesen Tastendruck nicht unbedingt mitbekommen muss geht es so :
Code für ein Modul
Option Explicit
 
' RegisterHotKey API
Public Enum RegisterHotKeyModifiers
   MOD_ALT = &H1
   MOD_CONTROL = &H2
   MOD_SHIFT = &H4
End Enum
 
Public Declare Function RegisterHotKey Lib "user32" _
  (ByVal hWnd As Long, _
   ByVal id As Long, _
   ByVal fsModifiers As RegisterHotKeyModifiers, _
   ByVal vk As KeyCodeConstants) As Long
 
Public Declare Function UnregisterHotKey Lib "user32" _
  (ByVal hWnd As Long, _
   ByVal id As Long) As Long
 
Public Declare Function GlobalAddAtom Lib "kernel32" _
   Alias "GlobalAddAtomA" _
  (ByVal lpString As String) As Long
 
Public Declare Function GlobalDeleteAtom Lib "kernel32" _
   (ByVal nAtom As Long) As Long
 
' WindowProc API
Private Declare Function CallWindowProc Lib "user32" _
   Alias "CallWindowProcA" _
  (ByVal lpPrevWndFunc As Long, _
   ByVal hWnd As Long, ByVal Msg As Long, _
   ByVal wParam As Long, ByVal lParam As Long) As Long
 
Private Declare Function SetWindowLong Lib "user32" _
   Alias "SetWindowLongA" _
  (ByVal hWnd As Long, ByVal nIndex As Long, _
   ByVal dwNewLong As Long) As Long
 
Public Const GWL_WNDPROC As Long = (-4)
Public Const WM_HOTKEY As Long = &H312
 
Private lpPrevWndProc     As Long
Private oForm             As Form
 
Public Sub Hook(ByVal oMainForm As Form)
  If lpPrevWndProc = 0 Then
    ' WindowProc verbiegen
    Set oForm = oMainForm
    lpPrevWndProc = SetWindowLong(oForm.hWnd, GWL_WNDPROC, AddressOf WindowProc)
  Else
    MsgBox "Jeder nur ein Kreuz!"
  End If
End Sub
 
 
Public Sub Unhook()
  On Error Resume Next
  If lpPrevWndProc = 0 Then
    ' ursprüngliche WindowProc wiederherstellen
    Call SetWindowLong(oForm.hWnd, GWL_WNDPROC, lpPrevWndProc)
    Set oForm = Nothing
  End If
End Sub
 
 
Function WindowProc(ByVal hWnd As Long, ByVal uMsg As Long, _
                    ByVal wParam As Long, ByVal lParam As Long) As Long
  ' NIEMALS HIER VERSUCHEN ZU DEBUGGEN!
  Select Case hWnd
    Case oForm.hWnd
      If uMsg = WM_HOTKEY Then
        'Aha ein Hotkey
        Call oForm.HotKeyPressed(wParam)
      End If
    Case Else
  End Select
 
  ' Massage durch den urprünglichen WindowHandler verarbeiten lassen
  WindowProc = CallWindowProc(lpPrevWndProc, hWnd, uMsg, wParam, lParam)
 
End Function
Versuch aber bitte nicht die Funktion WindowProc irgendwie zu debuggen! Dann fliegt Dir die IDE um die Ohren!!!

Code für Dein Hauptform
Option Explicit
 
Private lAtomID1        As Long
Private lAtomID2        As Long
 
Private Sub Form_Load()
  lAtomID1 = GlobalAddAtom(CStr(Now) & "A")
  lAtomID2 = GlobalAddAtom(CStr(Now) & "B")
  Call Hook(Me)
  Debug.Print RegisterHotKey(Me.hWnd, lAtomID1, MOD_CONTROL + MOD_ALT, vbKeyT)
  Debug.Print RegisterHotKey(Me.hWnd, lAtomID2, MOD_ALT, vbKeyU)
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
  ' Hotkey entfernen
  Debug.Print UnregisterHotKey(Me.hWnd, lAtomID1)
  ' WICHTIG!!!!
  ' Das UnHook kann nur weggelassen werden, wenn beim starten auch kein Hook
  ' ausgeführt wurde.
  Call Unhook
End Sub
 
Public Function HotKeyPressed(lID As Long)
  Debug.Print lID
  Me.SetFocus
  Select Case lID
    Case lAtomID1
      ' Hotkey 1
      MsgBox "STRG + ALT + T"
    Case lAtomID2
      ' Hotkey 2
      MsgBox "ALT + U"
  End Select
End Function
Gruß
Tolwyn
PS: Es können 'beliebig' viele HotKeys registriert werden.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Fragen zum Screenshot-Trick58Levis22.02.02 19:51
Re: Fragen zum Screenshot-Trick60Tolwyn22.02.02 20:59
Re: Fragen zum Screenshot-Trick42Levis22.02.02 21:40
Re: Fragen zum Screenshot-Trick41Tolwyn22.02.02 21:55

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