[英]AppWinStyle does not work with Process.start
我正在嘗試將AppWinStyle與Process.start一起使用,但是它沒有按我的預期工作。 下面的代碼將打開文件1.txt,並將其最小化,而無需重點關注。
Shell("notepad D:\1.txt", AppWinStyle.MinimizedNoFocus)
但是下面的代碼將打開重點放在1.txt上的內容。
Process.Start("D:\1.txt", AppWinStyle.MinimizedNoFocus)
為什么會發生? 請幫我解決這個問題
樣例:
using System;
using System.Diagnostics;
class Program {
static void Main(string[] args) {
var psi = new ProcessStartInfo("notepad.exe");
//psi.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(psi);
}
}
運行一次以確保其有效,然后刪除注釋並觀察結果。 您將短暫看到“記事本”窗口閃爍,但它立即再次終止。 可能取決於Windows版本,我描述了Windows 8.1的情況
GUI應用程序通過其WinMain()入口點獲取您指定的ProcessWindowStyle,nCmdShow參數傳遞您指定的值。 應用程序實際使用該值所做的一切完全取決於應用程序。 Boilerplate實現是將其傳遞給ShowWindow()調用,該調用使其主窗口可見。
使用ProcessWindowStyle.Hidden通常存在很大問題,正確編寫的GUI應用程序會忽略它,就像記事本一樣。 因為您要求它執行的是啟動程序但不顯示任何窗口,甚至沒有任務欄按鈕。 換句話說,您要求它變成一個僵屍 ,這是一個過程,用戶無法進行任何操作。 用戶唯一可能做的就是運行任務管理器並終止該進程。
所以肯定的是,肯定想到這不行 。 不應該這樣
Process.Start
沒有這樣的重載:
Process.Start("D:\1.txt", AppWinStyle.MinimizedNoFocus)
在這里查看所有重載: Process.Start方法
為了使用Process.Start
實現它,請使用ProcessStartInfo.WindowStyle
,將其設置為ProcessWindowStyle.Minimized
。
順便說一句, AppWinStyle
枚舉器特定於Shell
函數:
指示在調用
Shell
函數時用於所調用程序的窗口樣式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.