Zitat von
Luckie:
26 Zeilen sind dir zu lang? Ja da wird der Autor wohl extra eine umstädliche Methode implementiert haben, um den Code extra lang zu machen.
Hat er auch
So isses kürzer.
Delphi-Quellcode:
Function MouseProc(nCode: Integer; wParam, lParam: Longint): Longint; stdcall;
Var
szClassName: Array[0..255] Of Char;
Const
ie_name = 'Internet Explorer_Server';
Begin
If (nCode >= 0) And ((wParam = WM_RBUTTONDOWN) Or (wParam = WM_RBUTTONUP)) Then Begin
GetClassName(PMOUSEHOOKSTRUCT(lParam)^.HWND, szClassName, SizeOf(szClassName));
If lstrcmp(@szClassName[0], @ie_name[1]) = 0 Then Begin
Result := HC_SKIP;
Exit;
End;
End;
Result := CallNextHookEx(HookID, nCode, wParam, lParam)
End;
So ist es -finde ich- auch besser, da die Alternative (nächsten Hook aufrufen) nur 1x im Code vorkommt, und nicht 3x, wie in der SDC-Variante.
Etwas übersichtlicher wäre es so (allerdings mit einer ganzen Zeile mehr (!!) Code):
Delphi-Quellcode:
Begin
If (nCode >= 0) Then
If (wParam = WM_RBUTTONDOWN) Or (wParam = WM_RBUTTONUP) Then Begin
....