如何让你的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);
}
}
此类将窗体永远置于窗口最底层
首先, 调用一些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);
}
}
相关文章推荐
- 【转】C#如何让WinForm嵌入桌面窗口最底层
- 如何让你的WinForm嵌入桌面
- C#中winform窗体如何嵌入cmd命令窗口
- c# winform窗口一直置顶显示在桌面最上方或最底层的方法
- 把Winform程序窗口嵌入到桌面
- 【转】如何让你的WinForm嵌入桌面
- 如何找到桌面上报错的窗口,C#中捕捉对话框
- C# WINForm 如何关闭系统进程,调用cmd并执行命令(隐藏CMD窗口) - 赤色火焰 - 京华志
- winform安装项目如何在桌面创建快捷方式
- 如何截取当前桌面或当前窗口
- 将窗口嵌入桌面
- Qt实现半透明窗口 嵌入桌面
- 如何HOOK桌面窗口消息
- C# Dsoframer.ocx 如何在winform中嵌入Excel,内嵌Excel,word
- 把WINFORM嵌入IE如何带上app.config?
- 如何访问桌面窗口
- [转]C#winform中如何通过点击按钮切换窗口
- mac 上如何把整个应用的所有窗口移动到某个桌面上去?
- 如何找到当前桌面某一窗口上的类名
- WinForm程序如何将子窗体嵌入到父窗体的Panel里