![]() |
DLL Funktionen einer Klasse exportieren
hab eine Klasse in fremder Unit die so aussieht
Delphi-Quellcode:
Die soll jetzt in eine DLL exportieren
Type
TScanHook = Class Public constructor Create; Procedure InstallHook(dwThreadId: DWord); Procedure RemoveHook; End;
Delphi-Quellcode:
type
CScanHook = class(TScanHook) public Procedure InstallHook; Override; Procedure RemoveHook; Override; end; function CreateMWStObj: CScanHook; stdcall; begin Result := CScanHook.Create; end; Procedure CScanHook.RemoveHook; Override; stdcall; ....................... Procedure CScanHook.InstallHook(dwThreadId: DWord); Override; stdcall; .................... exports CreateMWStObj resident; InstallHook, RemoveHook; begin end. was aber zu Zitat:
weiß jemand weiter |
AW: DLL Funktionen einer Klasse exportieren
Dann mach die Methoden doch virtuell
Delphi-Quellcode:
type
TFoo = class procedure MyMethod; virtual; end; |
AW: DLL Funktionen einer Klasse exportieren
Manchmal isses auch einfach Danke erstmal was aber zum nächsten Problem Führt
Delphi-Quellcode:
Procedure CScanHook.InstallHook(dwThreadId: DWord); Override; stdcall;
Zitat:
|
AW: DLL Funktionen einer Klasse exportieren
Override hat allein in der Klassendeklaration zu stehen, nicht aber in der Implementation. BTW: DLL und Klassen, wenn das man gut geht.
|
AW: DLL Funktionen einer Klasse exportieren
Das gibt man ja auch nur in der Klassendeklaration an und nicht in der Implementation.
[edit] Mist, da wollte ich schon die Klassenvervollständigung vorsachlagen und dann sah ich ein Starter. :wall: |
AW: DLL Funktionen einer Klasse exportieren
Da guttenbergt jemand :tongue:
|
AW: DLL Funktionen einer Klasse exportieren
Der rote kistige Gutenbergwarner funktioniert halt nicht. :cry:
Zitat:
|
AW: DLL Funktionen einer Klasse exportieren
Ist ne C Project wo ich mir was Borgen will was mich zumnächsten Problem Führt
Code:
übersetzt zu
LRESULT WINAPI GetMsgProc(int code, WPARAM wParam, LPARAM lParam)
{ // AfxMessageBox("12345"); if(g_hHook == NULL) { // Read the data from the shared resources DWORD dwData = 0, dwSize = sizeof(DWORD); g_obIPC.Lock(); g_obIPC.OpenIPCMMF(); g_obIPC.ReadIPCMMF((LPBYTE)&dwData, dwSize); g_obIPC.Unlock(); g_hHook = (HHOOK)dwData; } if(code>=0) { //if(wParam==WM_SCANPWD) { CString strTemp; strTemp="catch the Windows Message\n"; MSG *msg=(MSG *)lParam; HWND hWnd, hWndPwdDlg; hWnd=(HWND)msg->wParam ; hWndPwdDlg=(HWND)msg->lParam; //MessageBox(hWndPwdDlg,strTemp,"tip",MB_OK); char szBuffer[100]; SendMessage(hWnd,WM_GETTEXT,sizeof(szBuffer),(LPARAM)szBuffer); //MessageBox(hWndPwdDlg,"asdf","dafasdf",MB_OK); COPYDATASTRUCT cds; cds.cbData=sizeof(cds); cds.dwData=(DWORD)hWnd; cds.lpData =szBuffer; SendMessage(hWndPwdDlg, WM_COPYDATA, (WPARAM)hWnd, (LPARAM)&cds); //MessageBox(hWndPwdDlg,"asdf","dafasdf",MB_OK); //TRACE("aljflajfl;ajkfla\n"); } } return CallNextHookEx(g_hHook,code,wParam,lParam); }
Delphi-Quellcode:
wird aufgerufen mit
function GetMsgProc(code: integer; ewParam: WPARAM; elParam: LPARAM): LResult;
// hook code//removal flag//address of structure with message var dwData, dwSize: DWord; strTemp: String; chWnd, hWndPwdDlg: HWND; msg: Windows.TMsg; szBuffer: Array [0 .. 99] of AnsiChar; cds: COPYDATASTRUCT; Begin // AfxMessageBox("12345"); if g_hHook = 0 then begin // Read the data from the shared resources dwData := 0; dwSize := sizeof(DWord); LockIPCMMF; OpenIPCMMF; ReadIPCMMF(@dwData, dwSize); UnLockIPCMMF; g_hHook := dwData; end; if code >= 0 then begin if ewParam = WM_SCANPWD then begin strTemp := 'catch the Windows Message'; msg.message := elParam; chWnd := Windows.PMsg(ewParam)^.message; hWndPwdDlg := Windows.PMsg(elParam)^.message; MessageBox(hWndPwdDlg, PWideChar(strTemp), 'tip', MB_OK); SendMessage(chWnd, WM_GETTEXT, sizeof(szBuffer), LPARAM(@szBuffer)); // MessageBox(hWndPwdDlg,'asdf','dafasdf',MB_OK); cds.cbData := sizeof(cds); cds.dwData := chWnd; cds.lpData := @szBuffer; SendMessage(hWndPwdDlg, WM_COPYDATA, WPARAM(chWnd), LPARAM(@cds)); // MessageBox(hWndPwdDlg,'asdf','dafasdf',MB_OK); end; end; Result := CallNextHookEx(g_hHook, code, ewParam, elParam); end;
Code:
was ich zu
g_hHook=SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,g_hInstance,dwThreadId);
Delphi-Quellcode:
übersetzt hab
g_hHook :=SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,g_hInstance,dwThreadId);
wobei er natürlich bei GetMsgProc meckert |
AW: DLL Funktionen einer Klasse exportieren
Zitat:
Währe ja zu praktisch, wenn man uns die Fehlermeldung verraten würde. :roll: PS: Strg+C funktioniert an sehr vielen Stellen. Die Aufrufkonvention? stdcall |
AW: DLL Funktionen einer Klasse exportieren
Ja das wars danke, nun hör ich auf für heute
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz