typedef int (CALLBACK *SHUTDOWNDLG)(int); //显示关机对话框函数的指针
HINSTANCE hInst = LoadLibrary("shell32.dll"); //装入shell32.dll
SHUTDOWNDLG ShutDownDialog; //指向shell32.dll库中显示关机对话框函数的指针
if(hInst != NULL)
{
    //获得函数的地址并调用之
    ShutDownDialog = (SHUTDOWNDLG)GetProcAddress(hInst,(LPSTR)60);
    (*ShutDownDialog)(0);
}
上面的程序从网上得到,调试通过,我用depend打开shell32.dll文件,发现60的地方,也就是0x003c的地方Hint为N/A,Fucntion也为N/A,可以看出我们根本无法去猜测这种全为N/A的地址能实现什么功能,所以还请哪位有这方面资料的同志贴一些上来。
另外,像shell32.dll之样的动态库有没有.h文件啊,如果没有.h文件,怎么知道如何调用提供的函数?

解决方案 »

  1.   

    用工具先查看一下dll里面的函数。得到函数名称后再调用GetProcAddress()
      

  2.   

    adamx(吃矢的猫)你看过我的问题吗?那你告诉我,这个关机对话框在dll里叫什么函数名?
    用什么工具查看?我想好多函数是没有函数名的,不然为什么这样用呢?
    GetProcAddress(hInst,(LPSTR)60);
    他为什么不这样用呢?
    GetProcAddress(hInst,"funname");
    他吃饱了撑着了?
      

  3.   

    的确, 有很多DLL, 在DEPEND中查看函数名都是 N/A的我想那些都是比较重要的函数, 所以M$将它们隐藏起来有些东西还是需要上网查的, 就算你用 Depend函数查到它的函数名, 你不知道它的参数照样无法使用