基于C#实现鼠标位置窗口句柄获取及桌面嵌入

C# 获取鼠标位置窗口句柄并实现程序嵌入桌面

介绍如何使用 C# 获取当前鼠标位置的窗口句柄,并将程序嵌入到桌面。

获取鼠标位置窗口句柄

C# 中可以使用 [DllImport("user32.dll")] 属性调用 Windows API 函数 GetCursorPosWindowFromPoint 来获取鼠标位置的窗口句柄。

[DllImport("user32.dll")]
static extern bool GetCursorPos(out POINT lpPoint);

[DllImport("user32.dll")]
static extern IntPtr WindowFromPoint(POINT Point);

public struct POINT
{
    public int X;
    public int Y;
}

// 获取鼠标位置窗口句柄
POINT mousePosition;
GetCursorPos(out mousePosition);
IntPtr hWnd = WindowFromPoint(mousePosition);

程序嵌入桌面

实现程序嵌入桌面,可以使用 SetParent 函数将程序窗口设置为桌面窗口的子窗口。

[DllImport("user32.dll")]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

// 获取桌面窗口句柄
IntPtr hWndDesktop = FindWindow("Progman", null);

// 将程序窗口嵌入桌面
SetParent(this.Handle, hWndDesktop);

注意事项

  • 需要添加 using System.Runtime.InteropServices; 命名空间。
  • 程序嵌入桌面后,可能会影响其他程序的正常使用。
doc 文件大小:28KB