BOOL CSystemInfo::OpenMailApplication(CWnd *pParentWnd)
{
ASSERT(pParentWnd);
// Read defaul mail application name
CString strMailApp;
if(FLRegQueryValue(HKEY_LOCAL_MACHINE, "Software\\Clients\\Mail", NULL, strMailApp) > 0)
{
CString strKeyName = "Software\\Clients\\Mail\\" + strMailApp + "\\shell\\open\\command";
CString strShellCmd;
if(FLRegQueryValue(HKEY_LOCAL_MACHINE, strKeyName, NULL, strShellCmd) > 0)
{
STARTUPINFO startinfo = {0};
PROCESS_INFORMATION pinfo;
startinfo.cb = sizeof(startinfo);
startinfo.wShowWindow = SW_SHOW;
TCHAR lpszCmd[MAX_PATH];
ExpandEnvironmentStrings(strShellCmd, lpszCmd, MAX_PATH);
if(!CreateProcess(NULL, lpszCmd, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &startinfo, &pinfo))
{
CString strPrompt;
strPrompt.LoadString(IDS_ERROR_FAILED_START_MAIL);
strPrompt += strMailApp;
DisplayErrorMessage(pParentWnd->m_hWnd, strPrompt);
return FALSE;
}
return TRUE;
}
}
DisplayErrorMessage(NULL, IDS_ERROR_FAILED_READ_DEFAULT_MAIL);
return FALSE;
}

解决方案 »

  1.   

    试一试CreateProcess("notepad.exe c:\\NETLOG.TEXT" ,"",NULL,NULL,true,DEBUG_ONLY_THIS_PROCESS,NULL,NULL,NULL,NULL); 
      

  2.   

    CreateProcess("notepad.exe","c:\\NETLOG.TXT",NULL,NULL,true,DEBUG_ONLY_THIS_PROCESS,NULL,NULL,NULL,NULL);中的c:要大写,"C:\\..."
      

  3.   

    STARTUPINFO stStartUpInfo = { sizeof(STARTUPINFO),NULL};
    PROCESS_INFORMATION stProcessInfo;
    char temp[]= _T("notepad.exe C:\\NETLOG.TXT");
    CreateProcess(NULL,temp,NULL,NULL,TRUE,
    NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE,
    NULL,NULL,&stStartUpInfo,&stProcessInfo);
      

  4.   

    你为什么要使用DEBUG_ONLY_THIS_PROCESS标志呢?STARTUPINFO si;
    PROCESS_INFORMATION pi;
    ZeroMemory(&si, sizeof(si));
    ZeroMemory(&pi, sizeof(pi));si.cb = sizeof(si);BOOL bResult = CreateProcess("c:\\winnt\\system32\\notepad.exe",
        "c:\\NETLOG.TXT", NULL, 
        NULL, true, DEBUG_ONLY_THIS_PROCESS, 
        NULL, NULL, &si, &pi);CreateProcess中的第一个参数必须指定确切的路径,而且最后两个参数都不能是NULL。
    MSDN看清楚了再来吧!
      

  5.   

    STARTUPINFO stinfo;
    memset(&stinfo, 0, sizeof(STARTUPINFO));
    stinfo.cb = sizeof(STARTUPINFO);
    stinfo.dwFlags = STARTF_USESHOWWINDOW;
    stinfo.wShowWindow = SW_SHOWDEFAULT;    
    PROCESS_INFORMATION  procinfo ;
    ::CreateProcess(NULL,_T("C:\\WINDOWS\\NOTEPAD.EXE c:\\netlog.txt.log"),NULL,NULL,false,NORMAL_PRIORITY_CLASS,NULL,NULL,&stinfo,&procinfo))
      

  6.   

    很感谢nichang 
    但你带的参数是2000下专有的,下面我又把它简化了一下
    不懂的不要问我哟,自己找找MSDN吧
    STARTUPINFO stinfo={sizeof(stinfo)};
    PROCESS_INFORMATION  procinfo ;
    CreateProcess(NULL,"NOTEPAD.EXE",NULL,NULL,false, DETACHED_PROCESS,NULL,NULL,&stinfo,&procinfo);