本篇文章屬于《518超市播音軟體開發日志》系列文章的一部分。
我在開發《518超市播音軟體》()的時候,有一個例外捕獲的要求,就是說如果用戶用的是盜版破解,那可能會引起軟體例外退出,程式最后要捕獲這個例外,并提示用戶不要用盜版。開發工具是 VC2015。
程式代碼 __try, __except
__try
{
if (!g_app.init_app(bTray, bLockWorkStation)) {
OleUninitialize();
return 0;
}
MSG msg;
HWND hLvPgmsA = GetDlgItem(g_app.m_hPanelaA, IDC_panel_lvPgms);
HWND hLvPgmsB = GetDlgItem(g_app.m_hPanelB, IDC_panel_lvPgms);
HACCEL hAccelA = LoadAccelerators(g_app.m_hInst, (LPCTSTR)IDR_accelA);
HACCEL hAccelB = LoadAccelerators(g_app.m_hInst, (LPCTSTR)IDR_accelB);
while (GetMessage(&msg, NULL, 0, 0))
{
int idx = SendDlgItemMessage(g_app.m_hLeft, IDC_left_list, LB_GETCURSEL, 0, 0);
if (idx == 1 && g_app.m_iTabOfPanelA == 0 && GetFocus() == hLvPgmsA)
{
if (TranslateAccelerator(g_app.m_hPanelaA, hAccelA, &msg))
continue;
}
else if (idx == 2 && GetFocus() == hLvPgmsB)
{
if (TranslateAccelerator(g_app.m_hPanelB, hAccelB, &msg))
continue;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
__except ( 1 )
{
disable_allPgms();
WCHAR msg[MAX_MSG] = { 0 };
DWORD ec = GetExceptionCode();
swprintf(msg, L"軟體例外 (0x%08x)\n\n常見原因:\n軟體為盜版,建議到官網下載軟體重新安裝\n\n如仍有問題:\n找技術支持 - 官網>聯系我們>QQ/電話等\n\n點確定打開官網:\nwww.518boyin.com", ec);
MessageBox(g_app.m_hMain, msg, g_title, MB_OK | MB_ICONERROR | MB_TOPMOST | MB_SETFOREGROUND);
g_app.MyShellExecute(NULL, L"open", URL_HOME, NULL, NULL, SW_SHOWNORMAL);
}
VC2015的例外處理設定
在工程屬性里,找到C++里面的代碼生成。
1. 啟用C++例外: 是,但有SEH例外 /EHa
2.安全檢查: 禁用安全檢查
3.啟用浮點例外: 否
4.啟用函式級鏈接: 否 /Gy-
uj5u.com熱心網友回復:
具體的問題是什么呢轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/280053.html
標籤:進程/線程/DLL
