+++ /dev/null
-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-using System.Reflection;\r
-using System.Windows.Forms;\r
-using System.Runtime.InteropServices;\r
-\r
-namespace FDK\r
-{\r
- // referenced from http://dalmore.blog7.fc2.com/blog-entry-34.html\r
-\r
- public static class CTaskBar\r
- {\r
- public static void ShowTaskBar( bool bShowTaskBar )\r
- {\r
- Int32 hWnd1 = FindWindow( "Shell_TrayWnd", null );\r
- if( hWnd1 != 0 )\r
- { //タスクバーの表示\r
- if ( bShowTaskBar )\r
- {\r
- ShowWindow( hWnd1, TASKBAR_SHOW ); //// タスクバーを常に表示\r
- }\r
- else\r
- {\r
- ShowWindow( hWnd1, TASKBAR_HIDE );\r
- }\r
- APPBARDATA pData = new APPBARDATA();\r
- pData.cbSize = Marshal.SizeOf( pData );\r
- pData.hWnd = (IntPtr)hWnd1;\r
- pData.lParam = (int)ABMsg.ABM_NEW; //REMOVEにするとオートハイドになる\r
- //タスクバーにメッセージ送信\r
- SHAppBarMessage( ABMsg.ABM_SETSTATE, ref pData );\r
- }\r
-\r
- Int32 hWnd2 = FindWindow( "Button", "スタート" );\r
- if ( hWnd2 != 0 )\r
- { //タスクバーの表示\r
- if ( bShowTaskBar )\r
- {\r
- ShowWindow( hWnd2, TASKBAR_SHOW ); //// タスクバーを常に表示\r
- }\r
- else\r
- {\r
- ShowWindow( hWnd2, TASKBAR_HIDE );\r
- }\r
- APPBARDATA pData = new APPBARDATA();\r
- pData.cbSize = Marshal.SizeOf( pData );\r
- pData.hWnd = (IntPtr) hWnd2;\r
- pData.lParam = (int) ABMsg.ABM_NEW; //REMOVEにするとオートハイドになる\r
- //タスクバーにメッセージ送信\r
- SHAppBarMessage( ABMsg.ABM_SETSTATE, ref pData );\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// ABMsg 送るAppBarメッセージの識別子(以下のいずれか1つ)\r
- /// ・ABM_ACTIVATE---AppBarがアクティブになった事をシステムに通知\r
- /// ・ABM_GETAUTOHIDEBAR---スクリーンの特定の端に関連付けられているオートハイドAppBarのハンドルを返す\r
- /// ・ABM_GETSTATE---タスクバーがオートハイドか常に最前面のどちらの常態にあるかを返す\r
- /// ・ABM_GETTASKBARPOS---タスクバーの使用領域を返す\r
- /// ・ABM_NEW---新しいAppBarを登録し、システムが通知に使用するメッセージIDを指定する\r
- /// ・ABM_QUERYPOS---AppBarのためのサイズとスクリーン位置を要求する\r
- /// ・ABM_REMOVE---AppBarの登録を削除する\r
- /// ・ABM_SETAUTOHIDEBAR---スクリーンの端にオートハイドAppBarを登録または削除する\r
- /// ・ABM_SETPOS---AppBarのサイズとスクリーン座標を設定する\r
- /// ・ABM_WINDOWPOSCHANGED---AppBarの位置が変更されたことをシステムに通知する\r
- /// pData: TAppBarData構造体(各フィールドはdwMessageに依存する)\r
- /// </summary>\r
- private enum ABMsg : int\r
- {\r
- ABM_NEW = 0,\r
- ABM_REMOVE = 1,\r
- ABM_QUERYPOS = 2,\r
- ABM_SETPOS = 3,\r
- ABM_GETSTATE = 4,\r
- ABM_GETTASKBARPOS = 5,\r
- ABM_ACTIVATE = 6,\r
- ABM_GETAUTOHIDEBAR = 7,\r
- ABM_SETAUTOHIDEBAR = 8,\r
- ABM_WINDOWPOSCHANGED = 9,\r
- ABM_SETSTATE = 10\r
- }\r
-\r
- /// <summary>\r
- /// APPBARDATA SHAppBarMessage関数にて使用されるAppBarに関する構造体。\r
- /// cbSize.....SizeOf(TAppBarData)\r
- /// hWnd.....AppBarのハンドル\r
- /// uCallbackMessage.....任意のメッセージID(hWndのAppBarにメッセージを通知する際(ABM_NEWメッセージを送る際)に使用)\r
- /// uEdge.....スクリーンの端を指定するフラグ(ABM_GETAUTOHIDEBAR、ABM_QUERYPOS、ABM_SETAUTOHIDEBAR、ABM_SETPOSメッセージを送る際に使用し、以下のいずれか1つ)\r
- /// ・ABE_BOTTOM---下サイド\r
- /// ・ABE_LEFT--- 左サイド\r
- /// ・ABE_RIGHT---右サイド\r
- /// ・ABE_TOP---上サイド\r
- /// rc.....AppBarやタスクバーのスクリーン座標での表示領域(ABM_GETTASKBARPOS、ABM_QUERYPOS、ABM_SETPOSメッセージを送る際に使用する)\r
- /// lParam.....メッセージ依存のパラメータ(ABM_SETAUTOHIDEBARメッセージと共に使用される)\r
- /// </summary>\r
- [StructLayout( LayoutKind.Sequential )]\r
- private struct APPBARDATA\r
- {\r
- public int cbSize;\r
- public IntPtr hWnd;\r
- public uint uCallbackMessage;\r
- public ABEdge uEdge;\r
- public RECT rc;\r
- public int lParam;\r
- }\r
- /// <summary>\r
- /// ABEdge\r
- /// </summary>\r
- private enum ABEdge : int\r
- {\r
- ABE_LEFT = 0,\r
- ABE_TOP = 1,\r
- ABE_RIGHT = 2,\r
- ABE_BOTTOM = 3\r
- }\r
- /// <summary>\r
- /// RECT\r
- /// </summary>\r
- [StructLayout( LayoutKind.Sequential )]\r
- private struct RECT\r
- {\r
- public int left;\r
- public int top;\r
- public int right;\r
- public int bottom;\r
- }\r
- /// <summary>\r
- /// SHAppBarMessage\r
- /// </summary>\r
- /// <param name="dwMessage"></param>\r
- /// <param name="pData"></param>\r
- /// <returns></returns>\r
- [DllImport( "shell32.dll", CallingConvention = CallingConvention.StdCall )]\r
- private static extern int SHAppBarMessage( ABMsg dwMessage, ref APPBARDATA pData );\r
-\r
- [DllImport("user32.dll", EntryPoint = "ShowWindow")]\r
- private static extern int ShowWindow(Int32 hWnd, int nCmdShow);\r
- private const int TASKBAR_HIDE = 0;\r
- private const int TASKBAR_SHOW = 5;\r
-\r
- [DllImport( "user32.dll", EntryPoint = "FindWindow" )]\r
- private static extern Int32 FindWindow( String lpClassName, String lpWindowName );\r
- }\r
-}\r