2011-06-09 131 views
0

從我的C#應用​​程序我啓動了其他應用程序,執行前有時顯示對話框/彈出與一些信息。如何禁止剛剛從C#代碼啓動的應用程序的對話框/彈出窗口?

是否可以抑制或隱藏該對話框的對話框和任務欄圖標?

編輯


是否有可能攔截對Win32函數的調用這將顯示此對話框,從而防止彈出?

+0

只是好奇什麼對話框/彈出窗口顯示。這是一個試用應用程序嗎? – abramlimpin 2011-06-09 09:15:06

+0

以這種方式創建意圖的應用程序有時會接受'-quiet'命令行參數或類似內容。沒有其他「正常」的方式來壓制對話框,因爲它們意味着彈出。但是,如果您有創意,有一些方法,比如在一段時間後模擬鼠標點擊活動應用程序,但沒有任何通用的。 – 2011-06-09 09:20:13

+0

@eibhrum:這是一個沒有源代碼或任何支持的「內部」應用程序,我需要它來自動化我們的過程。但是如果有人需要坐在PC後面並點擊這個愚蠢的對話框,就不會有任何自動化。 – Primoz 2011-06-09 09:21:25

回答

1

您可以通過PInvokeFindWindow然後發送消息WM_CLOSE或單擊取消按鈕或其他。

+0

我是否需要循環執行此操作並不斷檢查是否有窗口? 或者我可以對某些事件做出反應嗎? – Primoz 2011-06-09 13:33:28

+1

你必須在一個循環中執行它,是的 - 但是如果它在啓動程序時出現,那麼你有一個相當小的時間窗來「觀察」窗口,所以如果這是一個問題,你不應該循環很長時間 – 2011-06-09 13:55:54

0

爲什麼不確定您的主(父)應用程序完全啓動並顯示其窗口之後,您是否啓動此第二個應用程序?

+0

我的主要應用程序只是調用其他幾個應用程序自動完成一些事情。但其中一個應用程序顯示對話框,阻止這種自動工作。 – Primoz 2011-06-09 10:00:24

+0

所以不能你的主要應用程序延遲此啓動活動? 可能會推送到Form.Shown事件方法加載活動,而不是如果它在ctor中。 – Zenwalker 2011-06-09 10:30:45

+0

什麼?我想你不明白我的問題是什麼。 – Primoz 2011-06-09 10:36:05

0

大多數情況下,此類應用程序提供「運行在後臺(不可見)」參數,您可以在啓動它們時提供參數。檢查你是否有這樣的說法。

+0

我的情況沒有這種說法。我也嘗試過「安靜」,「安靜」,... – Primoz 2011-06-09 10:47:49

+0

@Primoz:你必須看到那個應用程序的文檔「安靜」,「靜音」不會工作。有時這些參數可能是真或假。但是,如果不查看文檔,你無法猜測它。 – CharithJ 2011-06-09 10:52:26

相關問題