• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            沼地一萑專門獻(xiàn)給群內(nèi)各位小白的,老白不要偷看,謝謝。
            有時(shí)候能在vc中執(zhí)行大家熟悉的dos命令可以少寫很多代碼,比如共享/取消共享某個(gè)文件夾,關(guān)閉某個(gè)服務(wù),在局域網(wǎng)隱藏本機(jī)等等.下面干凈利落直接看代碼:
            (大家看的時(shí)候最好是最大化窗口后再看,否則該埋怨我代碼寫的亂,其實(shí)不是,我排的很整齊.)

            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ?????????? CString DosString = "net config server /hidden:yes";
            ?????????? //這個(gè)命令是在網(wǎng)上鄰居上隱藏本機(jī)器 你可以換成你自己感興趣的dos命令 注意空格千萬別錯(cuò)了
            ???????? ?


            ?????????? ///下面是功能部分 多次使用的話可以封裝成函數(shù),當(dāng)然參數(shù)是上面的DosString
            ?????????? #define DOSCMD (LPTSTR)(LPCTSTR)DosString?? ??? ??? ?
            ?? ??? SECURITY_ATTRIBUTES sa;
            ?? ??? HANDLE hRead,hWrite;
            ?? ??? sa.nLength = sizeof(SECURITY_ATTRIBUTES);
            ?? ??? sa.lpSecurityDescriptor = NULL;
            ?????????? sa.bInheritHandle = TRUE;
            ?? ??? if (!CreatePipe(&hRead,&hWrite,&sa,0))
            ?? ??? {
            ?? ??? ?return FALSE;
            ?? ??? ?//MessageBox("fail Creat Pipe");
            ?? ??? } ?? ??? ??? ?
            ?? ??? STARTUPINFO si;
            ?? ??? PROCESS_INFORMATION pi;
            ?? ??? si.cb = sizeof(STARTUPINFO);
            ?? ??? GetStartupInfo(&si);
            ?? ??? si.hStdError = hWrite;
            ?? ??? si.hStdOutput = hWrite;
            ?? ??? si.wShowWindow = SW_HIDE;
            ?? ??? si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;?? ??? ??? ?
            ?? ??? if (!CreateProcess(NULL,DOSCMD,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
            ?? ??? {?? ??? ?
            ?? ??? ?return FALSE;
            ?? ??? ?//MessageBox("fail");
            ?? ??? }
            ?? ??? CloseHandle(hWrite);?? ??? ??? ?
            ?? ??? char buffer[4096] = {0};//自己決定緩存大小 別太浪費(fèi)
            ?? ??? DWORD bytesRead; ?? ??? ??? ?
            ?? ??? while (true)
            ?? ??? {
            ?? ??? ?if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL)//buffer中就是執(zhí)行后的返回結(jié)果,可以自己選擇處理的方式
            ?? ??? ?{break;}?? ??? ??? ??? ?
            ?? ??? ?Sleep(200);
            ?? ???? } ?? ?
            ?? ??? ?
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            代碼不長(zhǎng),直接拷到你程序里好了.?? ????????????????????? ?
            ????????????????????????????????????????????????????????????????

            Feedback

            # re: 在vc中執(zhí)行dos命令--『原著:獾兄』  回復(fù)  更多評(píng)論   

            2007-04-16 23:01 by 迷失的小熊
            嗯,無意中看到你這個(gè)帖子,
            剛好借鑒了2行程序用到我的程序里。
            真的很感激。
            多謝了。

            # re: 在vc中執(zhí)行dos命令--『原著:獾兄』  回復(fù)  更多評(píng)論   

            2007-07-02 15:49 by 好方法
            頂一個(gè),我把他包成function
            delay可以用來完整接收ping 順代做timeout

            void CRunDlg::runcmd(CString cmd, char *buf, unsigned int bufsize, unsigned int delay)
            {
            SECURITY_ATTRIBUTES sa;
            HANDLE hRead, hWrite;
            sa.nLength = sizeof(SECURITY_ATTRIBUTES);
            sa.lpSecurityDescriptor = NULL;
            sa.bInheritHandle = TRUE;

            if (!CreatePipe(&hRead, &hWrite, &sa, 0)) {
            //MessageBox("Create pipe fail");
            return;
            }

            STARTUPINFO si;
            PROCESS_INFORMATION pi;
            si.cb = sizeof(STARTUPINFO);
            GetStartupInfo(&si);
            si.hStdError = hWrite;
            si.hStdOutput = hWrite;
            si.wShowWindow = SW_HIDE;
            si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
            if (!CreateProcess(NULL, (LPTSTR)(LPCTSTR)cmd, NULL, NULL, TRUE, NULL, NULL, NULL, &si, π)) {
            //MessageBox("Create process fail");
            return;
            }
            CloseHandle(hWrite);
            Sleep(delay);
            DWORD bytesRead;
            while (TRUE) {
            memset(buf, 0, bufsize);
            /* If the ReadFile function succeeds, the return value is nonzero. */
            if (ReadFile(hRead, buf, bufsize, &bytesRead, NULL) != NULL) {
            break;
            }
            Sleep(200);
            }
            CloseHandle(hRead);
            return;
            }

            void CRunDlg::OnExec()
            {
            // TODO: Add your control notification handler code here
            CString cmd = "ipconfig";
            char *buf;
            unsigned int bufsize = 1024;
            unsigned int delay = 0;
            if ((buf = (char *)malloc(bufsize)) == NULL) {
            return;
            }

            memset(buf, 0, bufsize);
            runcmd(cmd, buf, bufsize, delay);
            m_opt.Format("%s", buf);
            UpdateData(FALSE);
            free(buf);
            }

            # re: 在vc中執(zhí)行dos命令--『原著:獾兄』  回復(fù)  更多評(píng)論   

            2007-08-07 15:15 by yongshengfree
            就是執(zhí)行速度有點(diǎn)兒慢,不知道有沒有辦法提高提高。

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久无码中文字幕东京热| 久久成人国产精品| 国产精品亚洲美女久久久| 国产精品激情综合久久 | 99久久777色| 久久se精品一区精品二区| Xx性欧美肥妇精品久久久久久| 品成人欧美大片久久国产欧美...| 青青青青久久精品国产h久久精品五福影院1421 | 国产精品久久久亚洲| 久久久久亚洲精品无码网址 | 久久久久久午夜成人影院| 91麻精品国产91久久久久| 亚洲欧美另类日本久久国产真实乱对白 | 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 免费国产99久久久香蕉| 欧美久久亚洲精品| AV无码久久久久不卡蜜桃| 久久久黄色大片| 九九热久久免费视频| 少妇高潮惨叫久久久久久| 开心久久婷婷综合中文字幕| 久久久一本精品99久久精品66| 久久国产视频99电影| 久久综合噜噜激激的五月天| 久久久久久久综合综合狠狠| 欧美一区二区三区久久综| 伊人精品久久久久7777| 国产福利电影一区二区三区,免费久久久久久久精 | 久久性生大片免费观看性| 日韩精品久久无码人妻中文字幕| 欧美亚洲另类久久综合婷婷 | 亚州日韩精品专区久久久| 成人资源影音先锋久久资源网| 无码AV中文字幕久久专区| 国产激情久久久久久熟女老人| 久久久精品波多野结衣| 狠狠精品干练久久久无码中文字幕| 国产精品久久久久影视不卡| 无码人妻少妇久久中文字幕蜜桃| 无码国内精品久久综合88|