8

Vista および Windows 7 でタスク バーを非表示にしても、スタート ボタン (スタート オーブとも呼ばれます) は非表示になりません。これに対する解決策を探していて、見つけましたが、必要以上に複雑に思えます。このCodeProject 記事では、スタート メニューを含むプロセス内のすべてのスレッドのすべての子ウィンドウを列挙するソリューションについて説明 (およびそのコードを含む) します。

誰かがより簡単な解決策を見つけましたか?

参考までに。(Orb を非表示にせずに) タスク バーを非表示にするコードは次のとおりです。まず、必要な Win32 のインポートと宣言を行います。

[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string className, string windowText);

[DllImport("user32.dll")]
private static extern int ShowWindow(IntPtr hwnd, int command);


private const int SW_HIDE = 0;
private const int SW_SHOW = 1;

次に、どこかのメソッドで、正しい引数でそれらを呼び出します

IntPtr hwndTaskBar = FindWindow("Shell_TrayWnd", "");
ShowWindow(this.hwndTaskBar, SW_HIDE);
4

1 に答える 1

12

すべてのスレッド列挙を必要としないソリューションをまとめることができました。関連パーツはこちら。

FindWindowEx以下のように宣言すると

[DllImport("user32.dll")]
private static extern IntPtr FindWindowEx(
       IntPtr parentHwnd,
       IntPtr childAfterHwnd,
       IntPtr className,
       string windowText);

次に、次のように Start Orb のウィンドウ ハンドルにアクセスできます。

IntPtr hwndOrb = FindWindowEx(IntPtr.Zero, IntPtr.Zero, (IntPtr)0xC017, null);

次のように開始オーブを無効にします。

ShowWindow(hwndOrb, SW_HIDE);

このメソッドの鍵はIntPtr、関数内の文字列ではなく、className 変数の型を使用するFindWindowExことです。ATOMこれにより、ではなく型を取るこの関数の部分を使用できますstringATOM使用する特定が0xC017この投稿から であることがわかりました: Hide Vista Start Orb

この簡略化されたバージョンが一部の人々に役立つことを願っています。

更新:このプロセスを文書化するために、この新しいコード プロジェクト ページを作成しました。

于 2009-07-22T15:00:35.667 に答える