Hatena::ブログ(Diary)

by edvakf in hatena

2011-03-10

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 って、けっこうかぶりそうな感じ。

Visual Studioコマンドプロンプトから

> 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 と書けばそれも無効にすることはできる。

f:id:edvakf:20110310165018p:image


こんなのみつけた

AutoHotKey だけで実現できる。コンパイルしなくても大丈夫。ただし、Windows 7 で使う場合にはタスクバーと一緒にスタートボタンも消すようにしないとスタートボタンが残ってしまう。

f:id:edvakf:20110310190226p:image

#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 もいらないのでラクですね。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/edvakf/20110310/1299742842