我有一个EXE调用DLL,EXE设置一个CALLBACK函数,DLL中启动,但是执行的时候CALLBACK函数中不能对EXE的窗口进行操作,错误是Access is denied.如何解决????

解决方案 »

  1.   

    如果你开发dll,exe的工具都是一样的,比如都是VC,可以考虑用C++的虚函数,晚绑定,很方便的.
      

  2.   

    DLL调用EXE中的函数(就是回调机制麽)本身是没有任何问题的,windows不会对它做什么限制,问题就可能出在楼主的代码里了,楼主用单步调试一下看看是哪句话产生访问违规了?
      

  3.   

    define a user message
    in your dll
    UINT uret=RegisterWindowMessage("GET_ZWZ_EXE_BOOL");
    BSTR bstrret;
    SendMessage(wnd_of_exe,uret,0,(LPARAM)&bstrret);
    bool bdata;
    if(SysStringLen(bstrret)==4)
    bdata=true;
    else
    bdata=false;
    SysFreeString(bstrret);in your exe
    also UINT uret=RegisterWindowMessage("GET_ZWZ_EXE_BOOL");
    handle the messageBSTR* pbdata=(BSTR*)lParam;
    if(bTrue)
    {
    *pbdata=_bstr_t("True").copy();
    }
    else
    {
    *pbdata=_bstr_t("False").copy();
    }