急问,大家帮帮忙!!!!

解决方案 »

  1.   

    Q: 如何打开一个应用程序?
    ShellExecute(this->m_hWnd,"open","calc.exe","","", SW_SHOW );

    ShellExecute(this->m_hWnd,"open","notepad.exe",
        "c:\\MyLog.log","",SW_SHOW );
    As you can see, I haven't passed the full path of the programs. 
     
    Q: 如何打开一个同系统程序相关连的文档?
    ShellExecute(this->m_hWnd,"open",
        "c:\\abc.txt","","",SW_SHOW );
     
    Q: 如何打开一个网页?
    ShellExecute(this->m_hWnd,"open",
        "http://www.google.com","","", SW_SHOW );
     
    Q: 如何激活相关程序,发送EMAIL?
    ShellExecute(this->m_hWnd,"open",
        "mailto:[email protected]","","", SW_SHOW );
     
    Q: 如何用系统打印机打印文档?
    ShellExecute(this->m_hWnd,"print",
        "c:\\abc.txt","","", SW_HIDE);
     
    Q: 如何用系统查找功能来查找指定文件?
    ShellExecute(m_hWnd,"find","d:\\nish",
        NULL,NULL,SW_SHOW);
     
    Q: 如何启动一个程序,直到它运行结束?
    SHELLEXECUTEINFO ShExecInfo = {0};
    ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
    ShExecInfo.hwnd = NULL;
    ShExecInfo.lpVerb = NULL;
    ShExecInfo.lpFile = "c:\\MyProgram.exe";             
    ShExecInfo.lpParameters = "";     
    ShExecInfo.lpDirectory = NULL;
    ShExecInfo.nShow = SW_SHOW;
    ShExecInfo.hInstApp = NULL;       
    ShellExecuteEx(&ShExecInfo);
    WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
    或:
    PROCESS_INFORMATION ProcessInfo; 
    STARTUPINFO StartupInfo; //This is an [in] parameter
    ZeroMemory(&StartupInfo, sizeof(StartupInfo));
    StartupInfo.cb = sizeof StartupInfo ; //Only compulsory field
    if(CreateProcess("c:\\winnt\\notepad.exe", NULL, 
        NULL,NULL,FALSE,0,NULL,
        NULL,&StartupInfo,&ProcessInfo))

        WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
        CloseHandle(ProcessInfo.hThread);
        CloseHandle(ProcessInfo.hProcess);
    }  
    else
    {
        MessageBox("The process could not be started...");
    }
     
     
    Q: 如何显示文件或文件夹的属性?
    SHELLEXECUTEINFO ShExecInfo ={0};
    ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    ShExecInfo.fMask = SEE_MASK_INVOKEIDLIST ;
    ShExecInfo.hwnd = NULL;
    ShExecInfo.lpVerb = "properties";
    ShExecInfo.lpFile = "c:\\"; //can be a file as well
    ShExecInfo.lpParameters = ""; 
    ShExecInfo.lpDirectory = NULL;
    ShExecInfo.nShow = SW_SHOW;
    ShExecInfo.hInstApp = NULL; 
    ShellExecuteEx(&ShExecInfo);
      

  2.   

    我目前需要定时的打开一个exe文件,执行一段时间后强行关闭它,该怎么做呢?
      

  3.   

    如果执行EXE文件使用WINEXEC,SHELLEXECUTE它们的坏处是无法进行后续的控制,如果要关闭的话使用FINDWINDOW然后发送关闭消息也能达到你的要求,但最好的方法是使用CREATEPROCESS来创建进程。等需要结束时调用TERNINATEPROCESS强制结束进程。
      

  4.   

    那你需要用定时器,
    在某一个时刻触发事件.
    关闭时用该程序的句柄来关闭.
    可以用FindWindow()来找到其句柄 ,
      

  5.   

    我目前需要定时的打开一个exe文件,执行一段时间后强行关闭它,该怎么做呢?
    打开.exe程序:CreateProcess(...);
    用CreateProcess()返回的进程句柄关闭被打开的进程:TeminateProcess(...)。
    具体内容请参考MSDN。
      

  6.   

    使用FindWindow()来找到其句柄 ,
    然后发消息