C#窗口置顶不占用焦点,不影响其他程序输入
时间: 2023-08-02 21:36:54 浏览: 223
可以使用Windows API函数SetWindowPos来实现C#窗口的置顶功能。以下是示例代码:
```csharp
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
public partial class Form1 : Form
{
// 导入Windows API函数
[DllImport("user32.dll")]
private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
// 窗口置顶参数
private const uint SWP_NOMOVE = 0x0002;
private const uint SWP_NOSIZE = 0x0001;
private const uint SWP_NOACTIVATE = 0x0010;
private static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// 窗口置顶
SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
}
}
```
在以上代码中,当点击按钮时,调用SetWindowPos函数将当前窗口置顶,但不会占用焦点,不影响其他程序的输入。
阅读全文