哪位能把下面的BCB的代码转换一下。封成Delphi Dll,在线等待。(20分)

  • 主题发起人 主题发起人 YFeral
  • 开始时间 开始时间
Y

YFeral

Unregistered / Unconfirmed
GUEST, unregistred user!
BOOL APIENTRY DllMain(HANDLE hModule, DWORD reason, LPVOID lpReserved)
{
char szProcessId[64] ;
switch ( reason )
{
  case DLL_PROCESS_ATTACH:
  {
   //获取当前进程ID
   _itoa ( GetCurrentProcessId(), szProcessId, 10 );
   MessageBox ( NULL, szProcessId, "RemoteDLL", MB_OK );
  }
  default: return TRUE;
}
}
 
procedure DllMain(dwReason : DWORD);
begin
case dwReason of
DLL_PROCESS_ATTACH :
begin
ShowMessage(inttostr(GetCurrentProcessId));
end;
end;
end;
 
高手到哪去了,是不是嫌分少啊。
 
真让人失望。
 
我希望转换后的函数与原函数参数相同。
 
没这么严重吧,其实象我那用写,作为DllMain是可以的。如果你非要照样翻,当然也可以。
function DllMain(hModule: THANDLE;
reason: DWORD;
lpReserved: Pointer): BOOL;stdcall;
begin

case Reason of
DLL_PROCESS_ATTACH :
begin
Windows.MessageBox(0,pchar(inttostr(GetCurrentProcessId)),'RemoteDLL',MB_OK);
end;
end;

end;
 
是阿,zw84611刚开始已经给了你回答,并且也很正确,信不过就算了
 
其实我简单的翻译是没问题的。zw84611的先提的译文我当然明白其正确性,
只不过想体现原译的妙处所以才那样说。
 
units MyDLL;
interface
uses Windows, Messages, SysUtils,...;
procedure DllMain(Reason: Integer);
// this procedure for your dll myproc
implementation
{ something in this ....}
procedure DllMain(Reason: Integer);
begin
case Reason of
DLL_PROCESS_ATTACH:
{ Example ShowMessage('Hello')}
MessageBox(0,pchar(inttostr(GetCurrentProcessId)),'RemoteDLL',MB_OK);
DLL_PROCESS_DETACH:
{ Example ShowMessage('Quit')}
DLL_THREAD_ATTACH:;
DLL_THREAD_DETACH:;
end;
end;
begin
DLLProc := @DllMain;
DllMain(DLL_PROCESS_ATTACH);
end.
 
rainsea 答的很好!!
 
多人接受答案了。
 
后退
顶部