2 #include "WaitDialog.h"
\r
4 CWaitDialog::CWaitDialog(const CString &commandLine)
\r
6 , m_commandLine(commandLine)
\r
10 CWaitDialog::~CWaitDialog()
\r
14 LRESULT CWaitDialog::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
\r
16 // Disable the close button (the 'X').
\r
17 HMENU hSystemMenu = GetSystemMenu(FALSE);
\r
18 EnableMenuItem(hSystemMenu, SC_CLOSE, MF_BYCOMMAND | MF_GRAYED);
\r
20 // Kick off the thread that actually runs the process.
\r
21 m_hThread = (HANDLE)_beginthreadex(NULL, 0, _ThreadRoutine, this, 0, NULL);
\r
27 LRESULT CWaitDialog::OnProcessStarting(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
\r
32 LRESULT CWaitDialog::OnProcessCompleted(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
\r
34 CloseHandle(m_hThread);
\r
39 unsigned int CWaitDialog::ThreadRoutine()
\r
41 PostMessage(WM_PROCESS_STARTING);
\r
44 memset(&si, 0, sizeof(STARTUPINFO));
\r
45 si.cb = sizeof(STARTUPINFO);
\r
47 PROCESS_INFORMATION pi;
\r
48 memset(&pi, 0, sizeof(PROCESS_INFORMATION));
\r
52 #if defined(UNICODE)
\r
53 WCHAR *temp = _wcsdup(m_commandLine);
\r
54 ok = CreateProcess(NULL, temp, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
\r
57 ok = CreateProcess(NULL, m_commandLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
\r
61 WaitForSingleObject(pi.hProcess, INFINITE);
\r
63 PostMessage(WM_PROCESS_COMPLETED);
\r