侧边栏壁纸
博主头像
怪客のBlog 博主等级

行动起来,活在当下

  • 累计撰写 35 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录
C#

C#使用句柄操作微信发送消息

怪客
2022-04-01 / 0 评论 / 3 点赞 / 1019 阅读 / 0 字

安装相关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核心功能组件即可
image-1662362574848
如上图操作所示

  1. 点击望远镜图标,打开窗口搜索界面
  2. 拖动查找程序工具旁边的图标,移动到微信窗口上,这时就可以获取到其对应的句柄相关信息

模拟发送消息

        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();
        }

测试结果

首先打开一个聊天窗口,光标定位到聊天框。
image-1662363497027
或者代码点击聊天框,使光标定位

            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);//鼠标左键松开

运行程序后效果
image-1662363514373

3

评论区