windows 下隱藏 system 函數彈窗

來源:互聯網
上載者:User

標籤:system   brief   receive   不能   info   ring   sizeof   div   read   

概述

下面的程式是解決windows 下面調用 system() 函數的時候,會有視窗彈出的問題

標頭檔
#include <windows.h>
源碼
/*** @brief 一般字元轉寬字元** @param lpcszStr 一般字元* @param lpwszStr 轉換後的寬字元* @param dwSize 儲存寬字元的緩衝區大小** @return */BOOL MByteToWChar(LPCSTR lpcszStr, LPWSTR lpwszStr, DWORD dwSize){// Get the required size of the buffer that receives the Unicode // string. DWORD dwMinSize;dwMinSize = MultiByteToWideChar (CP_ACP, 0, lpcszStr, -1, NULL, 0);if(dwSize < dwMinSize){return FALSE;}// Convert headers from ASCII to Unicode.MultiByteToWideChar (CP_ACP, 0, lpcszStr, -1, lpwszStr, dwMinSize); return TRUE;}
/*** @brief 寬字元轉一般字元** @param lpcwszStr 寬字元* @param lpszStr 轉換後的一般字元* @param dwSize 儲存一般字元的緩衝區大小** @return */BOOL WCharToMByte(LPCWSTR lpcwszStr, LPSTR lpszStr, DWORD dwSize){DWORD dwMinSize;dwMinSize = WideCharToMultiByte(CP_OEMCP,0,lpcwszStr,-1,NULL,0,NULL,FALSE);if(dwSize < dwMinSize){return FALSE;}WideCharToMultiByte(CP_OEMCP,0,lpcwszStr,-1,lpszStr,dwSize,NULL,FALSE);return TRUE;}
/*** @brief * WinExec 和 ShellExecute 兩個函數在執行的時候不會等待命令執行完成,* 會造成檔案沒有解壓完就執行完了,不符合我們的需求* ret=WinExec(cmd,SW_HIDE);* ShellExecute((HWND)"open", LPCWSTR(cmd), NULL, NULL,NULL,SW_HIDE); ** system 函數調用可以,但是會有視窗彈出* ret = system(cmd);** 採用下面的方式** @param cmd 這裡面不能出現 > 符號** @return * */int nb_system (char *cmd){wchar_t cmd_w[2048] = {0};MByteToWChar(cmd, cmd_w, sizeof(cmd_w)/sizeof(cmd_w[0]));STARTUPINFO si;ZeroMemory(&si, sizeof(si));si.cb = sizeof STARTUPINFO;PROCESS_INFORMATION pi={0};if(CreateProcess(NULL,cmd_w,NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW,NULL,NULL,&si,&pi)){//等待進程執行完畢 WaitForSingleObject(pi.hProcess ,INFINITE);//釋放資源CloseHandle(pi.hProcess ); CloseHandle(pi.hThread ); }else{//運行失敗return -1;}return 0;}
測試
int main(){   nb_system("dir");}

 

windows 下隱藏 system 函數彈窗

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.