能力值:
( LV2,RANK:10 )
|
-
-
2 楼
dllmain写得不对
正确的写法
BOOL WINAPI DllMain(HINSTANCE hInst, DWORD dwReason, LPDWORD pdwRes)
{
// 如果在这里写messagebox 就会调用很多次
switch ( dwReason )
{
case DLL_PROCESS_ATTACH:
{
// 初始化代码应该写在这里
}
break;
case DLL_THREAD_ATTACH:
// 这里是每创建一个线程会调用一次
break;
case DLL_THREAD_DETACH:
// 这里线程结束会调用一次
break;
case DLL_PROCESS_DETACH:
// 这里自身DLL被卸载会调用
break;
}
return TRUE;
}
|
能力值:
( LV5,RANK:60 )
|
-
-
3 楼
我估计楼主也是写在DllMain里的,如果是的话,可以使用DisableThreadLibraryCalls。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
谢谢,我按你说的方法再做一次。。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
谢谢你,这样做确实好,但是我想知道为什么。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
DisableThreadLibraryCalls怎么弄,能说一下嘛?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
,,,,, 什么叫为什么? 这个是操作系统是这样设计的。。没有为什么。。要问为什么这么设计的话 得问问微软的程序员了
DisableThreadLibraryCalls是禁止系统创建线程的回调 用了之后创建线程就不会弹messagebox 了 不过 进程结束或者自己的dll卸载的时候还是一样会弹一次
具体用法可以百度之
|
能力值:
( LV5,RANK:60 )
|
-
-
8 楼
楼上已经替我解答了,可以MSDN之。
|
能力值:
( LV5,RANK:70 )
|
-
-
9 楼
DllMain里少放MessageBox.
要善用工作者线程,异步处理.
|
|
|