1. 程式人生 > >以不彈黑框的方式執行cmd命令

以不彈黑框的方式執行cmd命令

參考的這裡
但是有問題,主要是微軟拋棄了一些介面
修改如下

static DWORD RunSilent(char* strFunct, char* strstrParams)
{
    STARTUPINFO StartupInfo;
    PROCESS_INFORMATION ProcessInfo;
    char Args[4096];
    char *pEnvCMD = NULL;
    char *pDefaultCMD = "CMD.EXE";
    ULONG rc;

    memset(&StartupInfo, 0, sizeof(StartupInfo));
    StartupInfo.cb
= sizeof(STARTUPINFO); StartupInfo.dwFlags = STARTF_USESHOWWINDOW; StartupInfo.wShowWindow = SW_HIDE; Args[0] = 0; //pEnvCMD = getenv("COMSPEC"); size_t t_requiredSize; //errno_t t_err = _dupenv_s(&pEnvCMD,&len,"COMSPEC"); //獲取cmd的路徑 getenv_s(&t_requiredSize, NULL
, 0, "COMSPEC"); if (0 == t_requiredSize) { printf("robin:not found this comspec\n"); return -1; } pEnvCMD = (char *)malloc(t_requiredSize * sizeof(char)); getenv_s(&t_requiredSize, pEnvCMD, t_requiredSize, "COMSPEC"); if (pEnvCMD){ //strcpy(Args, pEnvCMD);
strcpy_s(Args, pEnvCMD); } else{ //strcpy(Args, pDefaultCMD); strcpy_s(Args, pDefaultCMD); } // "/c" option - Do the command then terminate the command window //strcat(Args, " /c "); strcat_s(Args, " /c "); //the application you would like to run from the command window //strcat(Args, strFunct); //strcat(Args, " "); strcat_s(Args, strFunct); strcat_s(Args, " "); //the parameters passed to the application being run from the command window. strcat_s(Args, strstrParams); if (!CreateProcess(NULL, Args, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &StartupInfo, &ProcessInfo)) { return GetLastError(); } WaitForSingleObject(ProcessInfo.hProcess, INFINITE); if (!GetExitCodeProcess(ProcessInfo.hProcess, &rc)) rc = 0; CloseHandle(ProcessInfo.hThread); CloseHandle(ProcessInfo.hProcess); free(pEnvCMD); return rc; }

這些安全的函式沒有驗證返回值是否正確,我懶~~

相關推薦

方式執行cmd命令

參考的這裡 但是有問題,主要是微軟拋棄了一些介面 修改如下 static DWORD RunSilent(char* strFunct, char* strstrParams) { S

程序方式執行CMD命令及使用CMD命令一次建立多級錄

void exceCmd(LPCTSTR cmdLines) { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(STARTUPIN

selenium+python自動化80-文件下載(詢問

manager browser cat odi TP cto show 默認 AS 前言 上一篇是點彈出框上的按鈕去保存文件,本篇介紹一種更加優雅的方法,加載Firefox和Chrome的配置文件,不彈出詢問框後臺下載。 一、FirefoxProfile 1.點下載的時

Qt 中執行cmd命令失敗,無許可權,需要提升程式管理員執行 vs2013設定

程式中有些 地方 需要執行windows cmd 命令, 如 taskkill 程序命令 (QString c = "taskkill /im osk.exe /f";m_pProcess->execute(c);)  這種 命令是需要管理員身份的, 因此程式必須以管理員身份執行

java執行cmd命令

spa dbca script dmgr share pub pdm meeting 碎片 從網上找的java執行cmd命令的文章,摘抄一段。 java的Runtime.getRuntime().exec(commandStr)可以調用執行cmd指令。cmd /c dir

ASP.Net執行cmd命令的實現代碼

als command tex exc spa red new tar send using System; using System.Collections; using System.Configuration; using System.Data;

java執行cmd命令並獲取輸出結果

cat result ring stream jarsigner blog gin org common 1.java執行cmd命令並獲取輸出結果 1 import java.io.BufferedReader; 2 import java.io.InputStrea

java調用執行cmd命令

pla println output ces 執行cmd console null catch director 未經允許,禁止轉載!!! package practice; import java.io.BufferedReader; import java.io.F

C++ 執行 cmd 命令 刪除文件 刪除註冊表項

執行 window pda ech current info 等待 bsp clu #include <Windows.h> WinExec("cmd /C \"del C:\\Windows\\secretWin.ini\"",SW_HIDE)

專案中執行cmd命令時報錯(provider load failure,UNKNOWN ERROR 0XFFFFFFFF)

專案中有用到關閉瀏覽器的操作,正常執行瀏覽器退出 driver.quiet()方法時有時會出現異常,不能正常退出。這樣瀏覽器再次啟動時,因為指定的資料資料夾相同,會導致啟動異常。 解決方法是每次退出瀏覽器時,在呼叫driver.quiet()之後,同時呼叫cmd命令來關閉瀏覽器程序,這樣就能

Java程式執行cmd命令

一:編寫程式實現執行cmd指令.       1.1 思路分析:使用Process的exec()將cmd的執行結果通過java的IO流輸出到IDE的控制檯即可.       Process

windows批處理指令碼bat命令解析【10】如何執行cmd命令

說來慚愧,感覺這個本來就不是問題。 先公佈答案: 你在cmd黑視窗下輸入什麼,就把這行命令寫入到bat指令碼中,九江。 前面和後面什麼也不用加。 比如,要在cmd下通過node執行某個hello.js檔案,命令為 node hello.js 那麼在bat指令碼中,只需要作如下

JAVA執行cmd命令(包含執行批處理檔案)

如下是java執行cmd命令的程式碼,以作記錄: 內容包括執行單個cmd命令或者呼叫bat檔案的方法; import java.io.BufferedReader; import java.io.InputStreamReader; /** * 執行wind

golang執行cmd命令

[win32]下 原始命令 sc delete AIReciver (PS:這裡"/C",不能刪除) 還有命令取名儘量不要有空格,比如 sc delete AIReciver CC,這裡就會很要命了 直接上程式碼: func delRec() {

在IIS7.5中呼叫執行cmd命令生成檔案失敗

專案是這樣的,C++人員寫了一個dll,便於跨平臺呼叫,所以用的是控制檯介面傳參呼叫,目的是生成一個檔案。程式碼編寫完成後,本機沒問題,釋出到阿里雲伺服器始終呼叫不成功,而直接在cmd介面是可以呼叫執行成功的。程式碼主要如下: /// <summar

C# 呼叫命令執行Cmd命令

1.不知道為啥   process.StartInfo.Arguments = "/c" + "start D:/Tim/Bin/QQScLauncher.exe";  這個執行命令一定要加/c ,/c ,/c,重要的事說3遍 才能正常編譯並執行 cmd /c dir:是執

DOS視窗中直接執行cmd命令執行sql檔案

有時我們會在沒有裝有相應資料庫的情況下我們還是要去執行資料庫語句 , 這時的資料庫就是在別的電腦上,我們只需知道他資料庫的IP地址,使用者名稱,密碼和所需用到的資料庫名即可。 在dos下執行 :   cmd /c osql -S"127.0.0.1" -U"sa" -P

C#隱式執行CMD命令(隱藏命令視窗)

Process p = new Process();//設定呼叫的程式名,不是系統目錄的需要完整路徑 p.StartInfo.FileName = "cmd.bat";//傳入執行引數 p.StartInfo.Arguments = ""; p.StartInfo.UseShellExecute = fa

用ShellExecute執行cmd命令遇到的問題總結

1、如果命令中的路徑包含空格,要把路徑去掉頭尾用雙引號包含起來。 例:strPath = “”D:\\\"te st\\\"test.exe;(用“\”進行字元轉義) 2、用變數傳命令的時候,要在命令字元開始加上"/c",不然命令不會執行。 例:strComman