在按鈕點擊事件中嘗試查找記事本窗口並置前台:
void C123Dlg::OnBnClickedButton1() {
www = FindWindow(L"無標題 - 記事本", NULL);
www->SetForegroundWindow(); // 此處拋出 0xC0000005 異常
}
異常信息:0x003c0774 處未經處理的異常,0xc0000005: 讀取位置 0x00000020 時發生訪問衝突。
核心原因:FindWindow 返回 NULL,導致後續對空指針調用 SetForegroundWindow。
CWnd* www 未初始化,若複用可能殘留野指針void C123Dlg::OnBnClickedButton1() {
// 1. 使用類名 "Notepad" 替代標題,提高匹配率
CWnd* pWnd = CWnd::FindWindow(L"Notepad", NULL);
// 2. 必須進行空指針檢查
if (pWnd != NULL && pWnd->GetSafeHwnd() != NULL) {
pWnd->SetForegroundWindow();
} else {
AfxMessageBox(_T("未找到記事本窗口,請確認已打開"));
}
}
#32770 對話框、Notepad)而非標題查找EnumWindows 遍歷所有頂層窗口,通過 GetWindowText 模糊匹配WM_COPYDATA 消息