首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

delphi转成 bcb 出錯,大家帮忙一下。该怎么解决

2012-03-27 
delphi转成 bcb 出錯,大家帮忙一下。 - C++ Builder / Windows SDK/API原delphi的代码:...InstallHook: fun

delphi转成 bcb 出錯,大家帮忙一下。 - C++ Builder / Windows SDK/API
原delphi的代码:
...
  InstallHook: function (MainHandle: HWND):Boolean; stdcall;
...

procedure TfrmCannotKill.btn1Click(Sender: TObject);
var 
  ModuleHandle: THandle;
begin
  ModuleHandle := LoadLibrary('Hook.dll');
  if ModuleHandle = 0 then Exit;
  @InstallHook := GetProcAddress(ModuleHandle, 'InstallHook');
  if InstallHook(0) then
  begin
  btn1.Enabled := False;
  ShowMessage('安装HOOK成功,现在任务管理器已经关不掉我了.');
  end;
end;

我改成bcb的。
在.h文件里加上了
typedef int(__stdcall *INSTALLHOOK)(HWND MainHandle);

按钮代码:
HINSTANCE ModuleHandle;

  INSTALLHOOK InstallHook;

  ModuleHandle = LoadLibrary("Hook.dll");
  if(ModuleHandle == 0) return;
  InstallHook = (INSTALLHOOK)GetProcAddress(ModuleHandle, "InstallHook");
  if(InstallHook(0))
  {
  Button1->Enabled = False;
  ShowMessage("安装HOOK成功,现在任务管理器已经关不掉我了.");
  }

delphi重新编译之后,调用dll,是禁止被任务管理器终止的。
但是bcb的确不能被禁止。
我哪里搞错了?
谢谢各位!



[解决办法]
加断点,判断ModuleHandle和InstallHook是否为NULL
[解决办法]
刚才我不是说了吗?加断点,依次查看:ModuleHandle是否为NULL,InstallHook是否为NULL,另外就是:InstallHook的返回值,和Delphi调用时的返回值是否一样?

热点排行