2010-06-30 36 views
0

我有一個應用程序,我使用notifyicon顯示一些氣球提示。但是,它將在總是以全屏模式運行的獨立主應用程序的環境中運行。我的問題是將任務欄放在最前面 - 我認爲它會在系統托盤中的notifyicon上出現氣球提示時自動啓動。當全屏應用程序運行時,將Windows任務欄放在前面

我可以通過在全屏模式下運行的應用程序使任務欄變爲可見嗎?

我曾嘗試以下,但是它不是隱藏的情況下,或取消隱藏任務欄 - 這是它爲大家帶來前方或使正在運行的應用程序不是全屏的情況下...

int TaskBarHwnd = FindWindow("Shell_traywnd", ""); 
bool result1 = SetWindowPos(TaskBarHwnd, 0, 0, 0, 0, 0, SWP_HIDEWINDOW); // Hide Taskbar 
bool result1 = SetWindowPos(TaskBarHwnd, 0, 0, 0, 0, 0, SWP_SHOWWINDOW); // Show Taskbar 

編輯 必須有一種方法做到這一點 - 如果我正在看一部電影,而且電池電量不足,那麼任務欄會滑動,然後我會收到有關電池的通知。我需要找出操作系統確實得到這種行爲......

編輯 值得一說的,對於全屏應用程序中的源是我們的控制之下。這確實改變了公平的問題,但我仍然想知道一種「中斷」全屏應用程序的方式,無論您是否擁有控制權。

+0

通知不應該在顯示全屏幕應用程序 - 我不想讓他們打斷我的發言或我的電影。 – Michael 2010-06-30 15:33:16

+0

欣賞邁克爾的迴應,而不是告訴我當你看電影時你的偏好是什麼,你能提供一個回答所提出的問題嗎?如果你再次讀到這個問題,我不問是否應該完成,我問是否可以完成。謝謝。 – 2010-06-30 17:38:44

+0

對不起,我有點太微妙了。通知不應該在全屏應用上顯示,而且系統會主動阻止此類行爲,這就是您遇到問題的原因。 – Michael 2010-06-30 18:16:57

回答

0

一種方式是通過發送從我的NotifyIcon ESC鍵應用程序。

SendKeys.Send("{ESC}"); 

此作品爲全屏應用程序的標準行爲通常是在逃生時按下鍵盤上退出全屏模式。我仍然不認爲這是最好的解決方案,因爲如果用戶正在做別的事情時可能有時候強迫ESC可能會有副作用......但它可能是「足夠好」

0

從純粹的技術角度來看,這是一個非常有趣的問題。 ,想到的第一件事是遠遠不是一個完美的解決方案,但也許是一個有效方法 - 打開開始菜單:

SendMessage(hAnyWnd, WM_SYSCOMMAND, SC_TASKLIST, 0) 

我會看看我能找到另一種解決方案。

(當然,最明顯的解決方案,當然,是BringWindowToTop(hTaskBar),但似乎沒有工作。)我現在在看做

+0

感謝您的努力。這是一個有趣的問題,我同意! – 2010-07-01 16:52:42

0

如何另一種解決方案?

不使主應用程序全屏:它將覆蓋整個屏幕視圖,但默認情況下任務欄總是處於定位的區域。如果任務欄重新定位到另一側,OS將通知應用程序刷新其窗口大小,但它總是會避免新的任務欄區域。最糟糕的情況是當任務欄設置爲自動隱藏時。雖然它看起來不太好看。

+0

在我的情況下,應用程序需要全屏才能獲得最大的屏幕空間 - 這是不容易的! – 2010-07-02 09:21:12

+0

將Windows任務欄的屬性設置爲始終在前面(通過右鍵單擊任務欄的屬性並將其設置爲其他窗口選項的頂部),該如何操作? 它會始終使系統托盤圖標中的任何通知氣球出現在前面。就我而言,任務欄始終處於鎖定狀態,不會自動隱藏。 – eee 2010-07-02 09:33:23

+0

以全屏模式運行的應用程序仍將顯示在包括任務欄在內的所有其他窗口上,因此雖然通知仍會發生,但不會顯示。 – 2010-07-02 09:56:10

1

如果沒有問題,開始菜單將彈出比您可以按窗口按鈕。在Windows 7對我來說

keybd_event(VK_LWIN, 0, 0, 0); 
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0); 

工作正常

+0

這是一個可行的解決方案,但我已經選擇了發送ESC鍵。無論如何,這是預期的行爲 - 全屏應用程序通過退出全屏模式來響應ESC鍵。 – 2010-07-22 16:12:24

相關問題