MFCを起動したときにNotepadを起動させたいのですがうまくできません。
CreateProcessを利用しているのですが、必ずアクセス違反が発生してしまいます。
特に変更点のない、作成したばかりのプロジェクトで発生してます。
ビルドエラーはなく、実行時に下記のエラーが出るだけです。
初回例外が 0x77911E10 (ntdll.dll) で発生しました (myApp.exe 内): 0xC0000005: 場所 0x007D0936 の読み取り中にアクセス違反が発生しました。
ハンドルされない例外が 0x77911E10 (ntdll.dll) で発生しました(myApp.exe 内): 0xC0000005: 場所 0x007D0936 の読み取り中にアクセス違反が発生しました。
CreateProcessは、Dlg.cppの以下のように記述しております。
なぜアクセス違反が起きるのでしょうか?
BOOL myAppDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // "バージョン情報..." メニューをシステム メニューに追加します。 // IDM_ABOUTBOX は、システム コマンドの範囲内になければなりません。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // このダイアログのアイコンを設定します。アプリケーションのメイン ウィンドウがダイアログでない場合、 // Framework は、この設定を自動的に行います。 SetIcon(m_hIcon, TRUE); // 大きいアイコンの設定 SetIcon(m_hIcon, FALSE); // 小さいアイコンの設定 // TODO: 初期化をここに追加します。 TCHAR npad[] = _T("notepad"); STARTUPINFO si; PROCESS_INFORMATION pi; CreateProcess(NULL, npad, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); return TRUE; // フォーカスをコントロールに設定した場合を除き、TRUE を返します。 }
<環境>
使用言語:VC++
開発環境:VisualStudio2013
Windows10(64bit)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/04/10 23:08