Windows のタスクバーを完全に消す
「自動的に隠す」だと2ピクセルほど見えてしまうので、完全に見えなくしてみた。Win32 API を使えば簡単だった。
こんな感じで taskbar_switch.cpp を作る (C++ でもないが)。
#include <windows.h> #include <tchar.h> BOOL restore(LPCTSTR lpClassName, LPCTSTR lpWindowName) { HWND hWnd = FindWindow(lpClassName, lpWindowName); return ShowWindow(hWnd, SW_RESTORE); } BOOL hide(LPCTSTR lpClassName, LPCTSTR lpWindowName) { HWND hWnd = FindWindow(lpClassName, lpWindowName); return ShowWindow(hWnd, SW_HIDE); } int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { if (hide(_T("Shell_TrayWnd"), NULL)) { // hide taskbar hide(_T("Button"), _T("Start")); // hide start button } else { restore(_T("Shell_TrayWnd"), NULL); // restore taskbar restore(_T("Button"), _T("Start")); // restore start button } //hide(_T("DV2ControlHost"), NULL); // hide start menu return 0; }
- 最後のコメントアウトしてあるところは好みで。タスクバーを隠してもスタートメニューは出せるので。
- タスクバーとスタートボタンは実は別のオブジェクトで (少なくとも Windows 7 では)、別々に隠している。
- クラス名が Button でタイトルが Start って、けっこうかぶりそうな感じ。
> cl taskbar_switch.cpp /Fotaskbar_switch.obj /c > link taskbar_switch.obj user32.lib /out:taskbar_switch.exe
とやって taskbar_switch.exe を作る。起動する度にタスクバーの表示と非表示を切り替え。
AutoHotKey に登録
せっかくなのでショートカットを割り当てとく。
さっきの taskbar_switch.exe を AutoHotKey のスクリプトと同じフォルダに置いて、AutoHotKey スクリプトに
#i::Run "taskbar_switch.exe"
と書けば、Win+i でタスクバーの切り替え。
繰り返しになるが、タスクバーは消えてても Win キーでスタートメニューは出てくる。AutoHotKey で LWin Up::Return
と書けばそれも無効にすることはできる。
こんなのみつけた
AutoHotKey だけで実現できる。コンパイルしなくても大丈夫。ただし、Windows 7 で使う場合にはタスクバーと一緒にスタートボタンも消すようにしないとスタートボタンが残ってしまう。
#Persistent ; タスクバーの非表示化 WinHide,ahk_class Shell_TrayWnd WinHide,Start ahk_class Button TaskBarHide = 1 return #i:: ; タスクバーの非表示化 if TaskBarHide = { WinHide,ahk_class Shell_TrayWnd WinHide,Start ahk_class Button TaskBarHide = 1 } else { WinShow,ahk_class Shell_TrayWnd WinShow,Start ahk_class Button TaskBarHide = } return
これだと Visual Studio もいらないのでラクですね。