我用VC写了一个DLL,里面导出这样一个函数:BOOL _stdcall Text(HWND hWnd)
{
char buffer[128]; //
sprintf(buffer, "The parameter of OpenFwMode is %d.", hWnd); // 这里三行是想输出传入的参数hWnd,以确认传入的值
MessageBox(NULL, buffer, "Firewall", MB_OK); // return TRUE;
}然后我用Delphi编了一个EXE,其中如此声明以上函数:function Test(hWnd: HWND): LongBool; external '以上DLL的名字' name 'Test';我在EXE中调用Test函数的代码:
MessageBox(0, PChar(IntToStr(hWnd)), PChar('Test'), MB_OK); // 在把hWnd传给DLL的Test函数之前先输出它的值,以确认传给Test函数的值
Test(hWnd); // 我把程序里的一个hWnd传给DLL的Test函数,hWnd是程序里一个窗口的句柄
奇怪的问题来了:EXE程序执行完以上的代码,会两次弹出MessageBox窗口。
一次是调用Test函数之前弹出的,
一次是调用Test函数的代码弹出的,按理说两次弹出窗口显示的值应该一样啊,可是我调试了很久,两次输出的值总是不同,太郁闷了,请大家帮我看看这是为何,错在哪里了???
解决方案 »
- 如何获得DLL所在的宿主进程
- ClientDataSet1过滤方法filter
- 在NT服务程序中使用TWebBrowser控件异常(高手请多多帮忙........)
- xp 下使用IMGEDIT加载JPG文件的问题
- 关于调用存储过程返回的多数据集问题?
- 有关intraweb的active sessions 的问题!
- Delphi7里新增的Rave Designer是什么用的?
- 谁知道IE浏览器的前进后退按钮的纪录变化在那里写代码呀,谁有能答出100分。
- 寻求一些经典的加密算法单元。。。>>>>>>>>>>>>>>>
- 如何在DELPHI中将ADOStoredProc1连接( SQLSERVER)中的数据传人变量中?(带原码)
- 小弟有一事相求 各位兄弟们帮帮我呀
- 一个很简单的问题
function Test(hWnd: HWND): LongBool; stdcall; external '以上DLL的名字' name 'Test';
to Maple119:哈,感谢啊。我真是太粗心了。在VC中用了_stdcall,却忘了在Delphi里加stdcall;这问题害得我搞了一个下午。经你一说就解决了,谢谢:)