一个MFC的程序,比如我要打开一个文件然后运行,但需要使用菜单上的"打开",然后在磁盘中选择一个文件,然后才能运行.如何才能使此MFC程序一运行,就直接打开了磁盘中的一个文件直接运行了?不用再去选中这个文件然后再运行?

解决方案 »

  1.   


      方法1
    void OnButton()
    {
        system("C:\\...\\xxx.exe");
    }
    方法2 创建进程
    void C...Dlg::OnButton() {
    STARTUPINFO StartupInfo; 
    PROCESS_INFORMATION ProcessInfo; 
    memset(&StartupInfo,0,sizeof(STARTUPINFO)); 
    StartupInfo.cb=sizeof(STARTUPINFO); 
    StartupInfo.dwFlags=STARTF_USESHOWWINDOW; 
    StartupInfo.wShowWindow=SW_SHOWMINIMIZED; 
    char* path="C:\\...\\xxx.exe";
    ::CreateProcess(NULL,path,NULL,NULL,FALSE,0,NULL,NULL,&StartupInfo,&ProcessInfo); 

     
      

  2.   

    希望对你有帮助:q:  在MDI中,如果设置了多个DocTemplate,那么,在新建文档时,总会有一个默认的对话框里让选择使用哪个模板。如何能避开这一环节,我想实现的是,如在菜单中有一项叫“打开模板一”,之后,就打开模板一.另有一项,“打开模板二”,就打开模板二,。。这是这样一个要求。
    简单地说,就是想绕过默认的那个土土的对话框。谢谢。
    A: 资源中String Table的IDR_XXXX_TYPE=\n服务器日志\n\n\n\nMServer.Log\nMServer Log
    TypeStr="MServer.Log"void CMainFrame::OpenSingleDocType(CString TypeStr)
    {
        POSITION pos;
        pos=((CMServerApp*)AfxGetApp())->m_pDocManager->GetFirstDocTemplatePosition();
        CDocTemplate *pDocTemplate;
        CString Str;
        while(1)
        {
            pDocTemplate=((CMServerApp*)AfxGetApp())->m_pDocManager->GetNextDocTemplate(pos);
            pDocTemplate->GetDocString(Str,CDocTemplate::regFileTypeId);
            if(Str==TypeStr)break;
        }
        pDocTemplate->OpenDocumentFile(NULL);
    }使用:
    void CMainFrame::OnSystemLog() 
    {
        // TODO: Add your command handler code here
        OpenSingleDocType("MServer.Log");
    }
      

  3.   

    在注册表之键
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices
    下添加字符串REG_SZ值:“C:\\...\\xxx.exe”