先using下面這個
using System.Runtime.InteropServices;
然後呢,在Class裡宣告這些
[DllImport("SHELL32", CallingConvention = CallingConvention.StdCall)]
static extern uint SHAppBarMessage(int dwMessage, ref APPBARDATA pData);
private int ABM_SETSTATE = 10;
private int ABM_GETSTATE = 4;
[StructLayout(LayoutKind.Sequential)]
struct RECT
{
public int left;
public int top;
public int right;
public int bottom;
}
[StructLayout(LayoutKind.Sequential)]
struct APPBARDATA
{
public int cbSize;
public IntPtr hWnd;
public int uCallbackMessage;
public int uEdge;
public RECT rc;
public int lParam;
}
好了
接著在隨便一個函式裡開始準備呼叫
APPBARDATA abd = new APPBARDATA();
abd.lParam = 2;
上面那個2的數字可以自己換成0或1或2或3
0 表示 "將工具列顯示於最上層" 未勾選,"自動隱藏工具列" 未勾選
1 表示 "將工具列顯示於最上層" 未勾選,"自動隱藏工具列" 有勾選
2 表示 "將工具列顯示於最上層" 有勾選,"自動隱藏工具列" 未勾選
3 表示 "將工具列顯示於最上層" 有勾選,"自動隱藏工具列" 有勾選
將工具列顯示於最上層的意思就是AlwaysOnTop的意思~~
最後開始呼叫
SHAppBarMessage(ABM_SETSTATE, ref abd);
寫到這邊就可以去控制TaskBar的AlwaysOnTop的屬性Enabled或是Disabled了
如果要取得現在工作列的狀態是怎樣的話
就用
MessageBox.Show(SHAppBarMessage(ABM_GETSTATE, ref abd).ToString());
這邊就會秀出狀態是0或1或2或3
以上我在XP測試是可以的,其他作業系統我就不確定搂~.~
留言列表