簡體   English   中英

AppWinStyle不適用於Process.start

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM