2009-07-22 10 views
8

VistaとWindows 7でタスクバーを非表示にすると、スタートボタン(スタートオーブとも呼ばれます)が隠されません。私はこれに対する解決策を探していましたが、見つけましたが、必要以上に複雑に見えます。 このCodeProject articleは、スタートメニューを含むプロセス内のすべてのスレッドのすべての子ウィンドウを列挙するソリューションを記述しています。VistaでスタートOrbを隠す/ CでWindows 7を起動する

もっと簡単な解決策を見つけた人はいますか?

参考のためです。タスクバーを隠すためのコード(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); 
+0

これは多少重複した質問だと思います。誰かが既にタスクバーを非表示にする方法を尋ねました。解決方法はform.WindowState = FormWindowState.Maximizedです。 form.FormBorderStyle = FormBorderStyle.None;このコンボは、タスクバーを非常によく隠すはずです。私はWin7でこれをやっても問題ありません。 Vista上でそれを試していない。 –

+0

これは、タスクバーを非表示にしません。それはそれをカバーする。 –

+0

http://stackoverflow.com/questions/505167/how-do-i-make-a-winforms-app-go-full-screenを参照してください –

答えて

12

でそれらを呼び出します。関連する部分は次のとおりです。

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

を次のようにFindWindowExを宣言する場合は、このようにスタートオーブのウィンドウハンドルにアクセスすることができます。

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

と、このようなスタートオーブを無効にします。

ShowWindow(hwndOrb, SW_HIDE); 

この方法の鍵は、IntPtrタイプは、FindWindowEx関数内の文字列ではなく、className変数の型です。これにより、stringではなくATOMの型を取るこの関数の部分を使用することができます。この単純化されたバージョンは、何人かの人々を助け Hide Vista Start Orb

希望:私は、使用する特定のATOMはこの記事から0xC017であることを識別することができました。

更新日: 私はこの新しいCode Project Pageを作成し、このプロセスを記録しました。

関連する問題