2014-02-12 53 views
0

環境:監控Windows任務欄中顯示statechange使用Win32

的Windows 7

的Visual Studio(2008)C++(無.NET)

簡短而親切的目標:

確保Windows任務欄永遠不可見。

詳情:

我希望能夠爲窗口的事件ABN_STATECHANGE註冊,如果被觸發的情況下,禁用和隱藏任務欄。

我能做到後者很容易地:

CWnd *Wnd; 
Wnd = CWnd::FindWindow("Shell_TrayWnd", NULL); 

Wnd -> ShowWindow(SW_HIDE); 
Wnd -> EnableWindow(false); 

但是我不知道如何使用Win32捕捉到任務欄stateChange事件。注意 - 我無法使用.NET框架。我應該通過CALLBACK WindowProc來做到這一點嗎?我真的不知道從哪裏開始。

任何幫助將不勝感激。

+0

應用程序需要允許用戶訪問任務欄。否則,用戶被困。 –

+0

是的,其目的是防止用戶進入任務欄並將其困住。我們正在一個相當獨特的環境中工作,用戶應該被鎖定到我們的應用程序中,直到應用程序關閉。 – user1211653

+0

對不起,任務欄不支持執行此操作的功能,因爲它具有始終可用的原則。如果這是一個特殊用途的系統,則可以完全使用備用外殼。如果您選擇做不受支持的事情,請確保您的客戶瞭解它可能隨時停止工作。 (例如,安全修補程序可能會破壞它。) –

回答

0

該通知發送到appbars。您可以通過撥打SHAppBarMessageABM_NEW選項註冊爲一個。

+0

嗯,好吧 - 閱讀了更多有關應用程序的信息之後,看起來這與Windows任務欄不一樣,對嗎?是否有Windows事件來跟蹤Windows任務欄的可見性? – user1211653

+0

我不確定Windows事件是什麼意思。應用程序通知任務欄的位置和外觀,因爲它們經常需要彼此協調。如果你想要這些通知,你需要註冊你的窗口作爲一個應用欄(它不一定真的可見)。我不知道此信息的任何其他來源。 –

+0

我想我們正在談論兩件不同的事情。它在MSDN上說: 應用程序桌面工具欄(也稱爲appbar)是一個類似於Windows任務欄的窗口。 我認爲我們正在談論兩件不同的事情。我希望能夠通過檢測Windows事件來讓Windows任務欄自動重新出現,以通知系統該任務欄已出現並使其消失。 – user1211653

0

有許多工具,讓您以取代Windows外殼。你可能會弄清楚這些應用程序是如何工作的。
You can see a list of alternative windows shells here.

從我所看到的,他們用自己的可執行文件替換explorer.exe。
你也許可以殺死在啓動應用程序的explorer.exe,然後應用程序退出後恢復。

此外,您可以通過將應用程序中的監視器,手錶的Explorer.exe的啓動和殺死它鎖定更多用戶薩維。您必須處理其他安全循環漏洞,例如訪問TaskManager或命令提示符。

這是一個危險的方法,如果您的應用程序崩潰,系統將無法使用,可能需要硬實力週期,以恢復它。

或者你可以讓你的應用程序成爲一個全屏應用程序,並鎖定alt選項卡和windows鍵之類的功能。 只需將主窗口的WindowState設置爲最大化,將TopMost設置爲true並將WindowStyle設置爲none,即可完成此操作。然後在低級別處理按鍵。 這將覆蓋您的Windows任務欄,並阻止用戶訪問它,直到它們退出應用程序。

相關問題