現象是這樣的,出問題的是 一個用 ATL/WTL編的動態庫, 暫時稱之為B.dll
呼叫環境 , 有一個服務作為程式A的守護行程,IE通過 websocket之類的方法連接到程式A , A呼叫 動態庫B.dll ,B執行相關函式,彈出界面。
通常情況下,界面時可以正常彈出的 。但是在個別用戶 某次啟動電腦后,B的界面就一直無法彈出了 , 直到重啟電腦,或者重啟程式A .
復現概率極低。出現問題的電腦有win7也有win10
通過日志等手段定位到了atl的DoModal處 具體說是 DialogBoxParam 回傳-1 ,LastError = 0
呼叫代碼
CxxxDlg dlg;
INT_PTR Res = dlg.DoModal();

各位大神,請問有人遇到過類似的問題嗎, 或者有什么建議嗎,我實在是想不出有什么可能了
uj5u.com熱心網友回復:
可能是找不到所需的資源,日志中將傳入的引數也做記錄對比看看試試添加一個 匯出介面,呼叫這個匯出介面
#include "TestDlg.h"
extern "C" __declspec( dllexport ) int TestDlg(HWND hParentWnd)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CTestDlg dlg( CWnd::FromHandle(hParentWnd) );
return (INT)dlg.DoModal();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/248726.html
標籤:界面
