Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#47

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 11. Nov 2003, 17:27
Zitat:
der WndProcDispatcher braucht doch sicherlich dieselben Parameter, wie MyWndProc oder ?
Nein, auf gar keinen Fall. Er hat zwar diese Aufrufparamter aber du solltest sie NICHT deklarieren. Es ist dann nämlich durchaus möglich das der Compiler einen Stackframe, auch für den Assemblercode, anlegt. Da wir im Assemblerpart direkt den Stack manipulieren würde dies zu Abstürtzen führen. Also: WindowProcDispatcher so lassen wie er ist.

Zitat:
function MyWndProc(hWnd: HWND; Msg: WORD; wParam: WPARAM; lParam: LPARAM; Memory: PHookData): lResult; stdcall;
Ist richtig, da unser WindowProcDispatcher() ja den letzten Parameter Memory in die Parameterlist hinzufügt.

Zitat:
Memory.SetWindowLong(Memory.hWnd, gwl_WindowProc, @Memory.WndProcDispatcher); ?
Richtig. Oder besser,

Memory.SetWindowLong(Memory.hWnd, gwl_WindowProc, Memory); da im letzten meiner Beispiele der Dispatcher am Anfang von Memory steht.

Gruß Hagen
  Mit Zitat antworten Zitat