安装相关NuGet包
方便使用WindowsAPI来模拟键鼠操作
Vanara.Core
Vanara.PInvoke.Shared
Vanara.PInvoke.Kernel32
Vanara.PInvoke.User32
引入命名空间
using Vanara.PInvoke;
using static Vanara.PInvoke.Kernel32;
using static Vanara.PInvoke.User32;
查找微信窗口句柄
这里使用到了VS自带的Spy工具,如果VS没有的话安装下C核心功能组件即可
如上图操作所示
- 点击望远镜图标,打开窗口搜索界面
- 拖动查找程序工具旁边的图标,移动到微信窗口上,这时就可以获取到其对应的句柄相关信息
模拟发送消息
static void Main(string[] args)
{
var calculatorHandle = FindWindow("WeChatMainWndForPC", "微信");//获取微信主界面的窗口句柄
if (calculatorHandle == IntPtr.Zero)
{
Console.WriteLine("窗口未找到!");
}
var desktopPtr = GetDesktopWindow();//获取桌面窗口的句柄
var winPtr = GetWindow(desktopPtr, GetWindowCmd.GW_CHILD);//获取顶级窗口句柄(当前活动的程序界面句柄)
//winPtr = GetForegroundWindow();//当前获取焦点的窗口
if (winPtr != calculatorHandle)//微信窗口没有显示
ShowWindow(calculatorHandle, ShowWindowCommand.SW_NORMAL);//以默认大小显示微信窗口
SetForegroundWindow(calculatorHandle);//窗口置顶
SendKeys.SendWait("你好");
SendKeys.SendWait("{ENTER}");
Console.ReadKey();
}
测试结果
首先打开一个聊天窗口,光标定位到聊天框。
或者代码点击聊天框,使光标定位
RECT rect = new RECT();
GetWindowRect(calculatorHandle, out rect);//获取窗口的大小、坐标信息
var px = rect.left+320;
var py = rect.bottom-50;
SetCursorPos(px,py);//鼠标移动到聊天框
mouse_event(MOUSEEVENTF.MOUSEEVENTF_LEFTDOWN,
(uint)px,
(uint)py, 0, UIntPtr.Zero);//鼠标左键点击
mouse_event(MOUSEEVENTF.MOUSEEVENTF_LEFTUP,
(uint)px,
(uint)py, 0, UIntPtr.Zero);//鼠标左键松开
运行程序后效果
评论区