vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 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: Ups.VB stürzt ab - neue Version, jetzt sicher 
Autor: Blackbox
Datum: 08.12.13 18:56

Hi reisender,

ist klar. Ich habe von Byref auf Byval geändert ;) Wenn die Event-Signatur nicht dem Original entspricht, löst VB den Fehler aus.

Hier nun das Manual. Viel Spass ;)

CSysMouseLib
 
Bei der COM-Komponenten handelt es sich um einen COM-Server, der
in einer standard Dll eingebettet ist und mit DllGetClassObject
erzeugt werden kann. Classic VisualBasic (VB 6.0) kann als COM-
Client diesen COM-Server wie eine gewöhnliche Klasse verwenden.
 
Im gewissen Sinn ist die Dll eine Brücke zwischen native WindowsAPI
und COM.
 
Aufgabe ist es einen SystemHook zu erzeugen und den Windows Callback
auf einen ConnectionPoint abzubilden, der von VB als Event empfangen
werden kann. WindowsHook benötigt eine standard Dll um systemweite
Inputs in einen Thread zu empfangen.
 
Die Deklaration auf das Object sollte mit dem Zusatz:
 
WithEvents
 
erfolgen, da die Hauptfunktionalität des Servers über einen _
  ConnectionPointContainer und Connectionpoints läuft.
 
Bei der öffentlichen Klasse handelt es sich um die Klasse: CSYSMOUSE.
 
Deklaration in VB (zB in Form1)
 
Private WithEvents osMouse As CSYSMOUSE
 
Somit lassen sich folgende Events in den Code integrieren:
 
Private Sub osMouse_SYSMOUSEACTION(ByVal WPARAM As Long, ByVal LPARAM As Long)
 
End Sub 
 
SYSMOUSEACTION: Fired bei jeder Mouseaktion im gesamten System (nicht nur
im eigenen Thread). wParam gibt die entsprechende Windows-Message zurück und
lParam aber einen Zeiger auf eine Struktur. Dazu später mehr.
 
Die Komponente hat folgende Eigenschaften:
 
COMSVRVERSION: Ein String (read only) das die Versionsbezeichnung beinhaltet.
DLLMODULEHANDLE: Ein Long (read only) das den Modulehandle der geladenen Dll _
  beinhaltet. Der Wert sollte geprüft werden, ob die Dll ordentlich geladen _
  ist. Der Wert ist 0, ging etwas schief.
ISSTARTED: Long (read only). Ist 1 Wenn der Windowshook läuft, ansonst 0.
HOOKTYPE: Long (read/write). Gibt den HookTyp zurück. Standardmäßig ist das: _
  WH_MOUSE. Man kann aber vor dem Start des Hook folgende Werte 
doch noch setzen:
 
Private Const WH_CALLWNDPROC As Long = 4
Private Const WH_CALLWNDPROCRET As Long = 12
Private Const WH_CBT As Long = 5
Private Const WH_DEBUG As Long = 9
Private Const WH_FOREGROUNDIDLE As Long = 11
Private Const WH_GETMESSAGE As Long = 3
Private Const WH_HARDWARE As Long = 8
Private Const WH_JOURNALPLAYBACK As Long = 1
Private Const WH_JOURNALRECORD As Long = 0
Private Const WH_KEYBOARD As Long = 2
Private Const WH_KEYBOARD_LL As Long = 13
Private Const WH_MAX As Long = 11
Private Const WH_MAXHOOK As Long = WH_MAX
Private Const WH_MIN As Long = -1
Private Const WH_MINHOOK As Long = WH_MIN
Private Const WH_MOUSE As Long = 7
Private Const WH_MOUSE_LL As Long = 14
Private Const WH_MSGFILTER As Long = -1
Private Const WH_SHELL As Long = 10
Private Const WH_SYSMSGFILTER As Long = 6
 
Das hat dann die Folge, dass sich die Werte in wParam und lParam im
SYSMOUSACTION-Event andere Werte und andere Strukturen repräsentieren.
Diese können aber aus der MSDN entnommen werden. Ohne Veränderung dieser
Eigenschaft ist WM_MOUSE voreingestellt. Wenn Sie statt Mouse das Keyboard
checken wollen - bitte schön, einfach die Eigenschaft auf WH_KEYBOARD setzen.
 
LParam liefert einen Zeiger auf MouseHookStruct. Um den Zeiger zu _
  dereferenzieren wird die API-Funktion: CopyMemory verwendet:
 
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef _
  Destination As Any, ByRef Source As Any, ByVal Length As Long)
 
Beispiel: Systemweite Auswertung der X-Position des Mousepointer:
 
Private Type POINTAPI
    x As Long
    y As Long
End Type
 
Private Type MOUSEHOOKSTRUCT
    pt As POINTAPI
    hwnd As Long
    wHitTestCode As Long
    dwExtraInfo As Long
End Type
 
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" _
   (ByRef Destination As Any, _
    ByRef Source As Any, _
    ByVal Length As Long)
 
Private WithEvents os As CSYSMOUSE
 
Private Sub Form_Load()
    Set os = New CSysMouseLib.CSYSMOUSE
 
    If os.DLLMODULEHANDLE > 0 Then
        os.START
    End If
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    os.STOP
End Sub
 
Private Sub os_SYSMOUSEACTION(ByVal WPARAM As Long, ByVal LPARAM As Long)
     Dim mS As MOUSEHOOKSTRUCT
 
     CopyMemory ByVal VarPtr(mS), LPARAM, Len(mS)
     Form1.Caption = mS.pt.x
End Sub
 
Method: Start startet den Systemhook
Method: Stop stoppt den Systemhook
Method: u__Port_s: Verwenden Sie bitte besser nicht. Der gehört zum System.
Hier ist der Link zur nun aktuellsten Version (ausführlich getestet)

http://www.file-upload.net/download-8378497/CSysMouseLib.dll.html

Beitrag wurde zuletzt am 08.12.13 um 19:04:08 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
MausPointer 3.904reisender20.11.13 20:10
Re: MausPointer2.861Blackbox21.11.13 14:28
Re: MausPointer2.812reisender21.11.13 18:53
Re: MausPointer2.955Blackbox21.11.13 20:39
Re: MausPointer2.790reisender22.11.13 00:38
Nie aufgeben ;)2.979Blackbox22.11.13 10:02
Re: Nie aufgeben ;)2.755reisender02.12.13 12:10
Cursor Foto2.778reisender06.12.13 16:58
Re: Cursor Foto2.748Blackbox06.12.13 18:24
Re: Cursor Foto2.696reisender06.12.13 22:24
Zwischenstand2.712Blackbox08.12.13 11:53
So jetzt hochgeladen2.792Blackbox08.12.13 12:41
Ups.VB stürzt ab - neue Version, jetzt sicher2.761Blackbox08.12.13 13:45
Re: Ups.VB stürzt ab - neue Version, jetzt sicher2.746reisender08.12.13 18:46
Re: Ups.VB stürzt ab - neue Version, jetzt sicher2.804Blackbox08.12.13 18:56
Re: kein globale Maus-Pointerwechsel2.698reisender10.12.13 14:22
Re: kein globale Maus-Pointerwechsel2.714Blackbox10.12.13 22:45
Re: Wie hast du gesagt ? Nie aufgeben ;)2.753reisender12.12.13 20:39
Re: MausPointer2.861Manfred X21.11.13 22:15
Re: MausPointer2.812reisender22.11.13 00:30

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