zoukankan      html  css  js  c++  java
  • 好久没折腾mfc了

    这段时间在看@李瑞民的《网络扫描技术揭秘》,刚好前几天重装的系统,于是装vs2012,跟着书中的代码练练手。

    一折腾发现各种悲剧,好久没动mfc了,很多东西都忘记了。还好有各种百度谷歌……

    于是当年初学时的菜鸟问题,现在还值得看,囧。。。 都不知道怎么调程序了。

     1 void CRedirectDlg::OnBnClickedButtonExec()
     2 {
     3     // TODO: 在此添加控件通知处理程序代码
     4     UpdateData(TRUE);
     5     CString strCommand, strFilename = _T("Redirect.txt");
     6     m_strCommand.TrimRight(_T(" "));
     7     if(m_strCommand == "") 
     8         return;
     9     strCommand.Format(_T("cmd.exe /c \"%s\">%s"),m_strCommand,strFilename);
    10         
    11     //创建线程执行dos命令
    12     STARTUPINFO si;
    13     ZeroMemory(&si,sizeof(si));
    14     si.cb = sizeof(STARTUPINFO);
    15     si.wShowWindow = SW_HIDE; //隐藏窗口
    16     si.dwFlags = STARTF_USESHOWWINDOW || STARTF_USESTDHANDLES;
    17      
    18     PROCESS_INFORMATION pi;
    19     BOOL res = CreateProcess(NULL,strCommand.GetBuffer(0),NULL,NULL,NULL,NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW,NULL,NULL,&si,&pi);
    20     if (!res){
    21         MessageBox(_T("创建线程出错!"));
    22         return ;
    23     }
    24     //等待线程执行完毕
    25     WaitForSingleObject(pi.hProcess,INFINITE);
    26 
    27     //处理结果文件
    28     char buff[MAXREADBUFFLEN];
    29     BOOL bSucess = FALSE;
    30     try{
    31         CFile file;
    32         if ( file.Open(strFilename,CFile::modeReadWrite,NULL))
    33         {
    34             //MessageBox(_T("创建文件"));
    35             file.Read((char *)buff,MAXREADBUFFLEN);
    36             //MessageBox((LPCTSTR) buff);
    37             file.Close();
    38             bSucess = TRUE;
    39             //MessageBox(_T("bSucess = TRUE;"));
    40         }
    41     }
    42     catch (CFileException e){
    43         e.m_cause;
    44         Sleep(1000);
    45     }
    46     if (bSucess){
    47 
    48         DeleteFile(strFilename);
    49         //    MessageBox(_T("delete"));
    50             //问题出在这里,输出的是乱码
    51         //m_strResult.Format(_T("%s"),(char *)buff);
    52             m_strResult.Format(_T("%s"),CStringW(buff));
    53         //http://lgb168.blog.163.com/blog/static/49674438201210146522687/
    54 
    55 
    56         //MessageBox(m_strResult);
    57     } 
    58     else
    59         MessageBox(_T("程序执行出错"),_T("错误提示"));
    60 
    61     //换行显示
    62     CEdit *pedit_rst = (CEdit*)GetDlgItem(IDC_EDIT_RST);
    63     pedit_rst->SetWindowTextW(m_strResult);
    64     pedit_rst->LineScroll(pedit_rst->GetLineCount());
    65     UpdateData(FALSE);
    66 }

    代码比较简单,还有些细节未完善。

    先不折腾了,明天去旅游。

  • 相关阅读:
    进程和线程的一个简单形象的解释
    java流的性能优化1-文件复制
    JAVA修饰符类型(public,protected,private,friendly)
    Codeforces Round #252 (Div. 2) 441B. Valera and Fruits
    游戏开场镜头拉近(Unity3D开发之四)
    P1282 多米诺骨牌
    P1280 尼克的任务
    求最小生成树(暴力法,prim,prim的堆优化,kruskal)
    暴力求最短路
    用MyEclipse将java文件转换成UML类图
  • 原文地址:https://www.cnblogs.com/vman/p/3099139.html
Copyright © 2011-2022 走看看