[英]Executing tasklist on Windows with popen in C without cmd.exe popup
大家好, 感謝您的時間。
我正在用C開發某種監控應用程序,我需要獲取當前的任務列表。 因此,我正在使用tasklist並獲得輸出,這要歸功於popen();
ptr = popen("tasklist /V", "r");
while(1)
{
if(fgets(temp, 255, ptr) == NULL) break;
fputs(temp, log);
}
問題是,在幾分之一秒內會彈出cmd.exe窗口並且這真的令人不安,因為它將焦點切換到新窗口,它使我的應用程序進入窗口模式而不是全屏模式。
所以,我花了好幾天時間查看popen方式或Windows本身,以“隱藏”模式/窗口啟動該過程,但沒有結果。 我嘗試過的事情包括:
cmd.exe /c tasklist /V
start /b cmd.exe /c tasklist /V
start /min /b cmd.exe /c tasklist /V
start /min cmd.exe /c tasklist /V
tasklist > somefile
我也嘗試了最后一個,所以我會讀取somefile的輸出,但似乎tasklist強制輸出到stdout,因為創建文件后沒有寫入數據。
希望你的回答,無論如何,謝謝你。
您可以通過調用CreateProcess
將SW_HIDE
作為STARTUPINFO
結構的wShowWindow
字段並在dwCreationFlags
包含CREATE_NO_WINDOW
來實現此dwCreationFlags
。
這種方法有點脆弱,因為您可能會發現您的應用程序在具有不同輸出格式的tasklist
版本的計算機上運行。
如果您想要一個正在運行的所有進程的列表,您可以調用EnumProcesses
。
使用EnumProcesses可以輕松實現任務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.