您的位置:首页 > 其它

如何让你的WinForm嵌入桌面窗口最底层

2008-11-11 17:36 513 查看
如何让你的WinForm嵌入桌面窗口最底层
此类将窗体永远置于窗口最底层
首先, 调用一些User32.dll的WinAPI函数


internal class User32




...{


public const int SE_SHUTDOWN_PRIVILEGE = 0x13;




[DllImport("user32.dll")]


public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);




[DllImport("user32.dll")]


public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);




[DllImport("user32.dll")]


public static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx,


int cy, uint uFlags);


}





然后, 在WinForm里面


public MainForm()




...{


InitializeComponent();




try




...{


if (Environment.OSVersion.Version.Major < 6)




...{


base.SendToBack();




IntPtr hWndNewParent = User32.FindWindow("Progman", null);


User32.SetParent(base.Handle, hWndNewParent);


}


else




...{


User32.SetWindowPos(base.Handle, 1, 0, 0, 0, 0, User32.SE_SHUTDOWN_PRIVILEGE);


}


}


catch (ApplicationException exx)




...{


MessageBox.Show(this, exx.Message, "Pin to Desktop");


}


}




private void MainForm_Activated(object sender, EventArgs e)




...{


if (Environment.OSVersion.Version.Major >= 6)




...{


User32.SetWindowPos(base.Handle, 1, 0, 0, 0, 0, User32.SE_SHUTDOWN_PRIVILEGE);


}


}




private void MainForm_Paint(object sender, PaintEventArgs e)




...{


if (Environment.OSVersion.Version.Major >= 6)




...{


User32.SetWindowPos(base.Handle, 1, 0, 0, 0, 0, User32.SE_SHUTDOWN_PRIVILEGE);


}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: