• 在C#中使用 SendMessage 实现操作外部其他程序上的控件教程


    一、C#代码实现

    本案例使用的是c# winform .NET Framework 4.7.2

    首先我们声明一个寻找窗体的函数

    [DllImport("User32.dll", EntryPoint = "FindWindow")]
    public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
    

    然后我们调用此函数去寻找要操作的窗体程序

    IntPtr ParenthWnd = new IntPtr(0);
    ParenthWnd = YSQ.FindWindow(null, "123");

    第一个参数是窗体的类名、第二个参数是窗体的标题,二者必须要有一个。这里推荐vs自带的 spy++ 工具查看窗体参数

    然后我们再声明一个寻找窗体里按钮的函数

    [DllImport("User32.dll", EntryPoint = "FindWindowEx")]
    public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpClassName, string lpWindowName);
    

     参数说明:

    hwndParent
     主窗体句柄、第一步调用 FindWindow 函数返回的值
    hwndChildAfter
     子窗体的句柄,可空
    lpClassName
    要寻找的控件的类名
    lpWindowName
    要寻找的控件的标题

    然后我们调用此函数寻找窗体里的 “连接” 按钮。

    IntPtr btnPtr = YSQ.FindWindowEx(ParenthWnd, IntPtr.Zero, "Button", "连接");
    YSQ.PostMessage(btnPtr, 0x201, 0, 0);
    YSQ.PostMessage(btnPtr, 0x202, 0, 0);
    textBox1.AppendText($"点击【连接】按钮,按钮句柄:{btnPtr}\r\n\r\n");

    然后我们还需要定义一个给窗体发送消息的函数

    [DllImport("User32.Dll", EntryPoint = "PostMessageA")]
    public static extern bool PostMessage(IntPtr hWnd, uint msg, int wParam, int lParam);
    

    然后调用 PostMessage 函数发送鼠标按下的消息

    YSQ.PostMessage(btnPtr, 0x201, 0, 0);
    YSQ.PostMessage(btnPtr, 0x202, 0, 0);

    //按下鼠标左键
    WM_LBUTTONDOWN = 0x201
    //释放鼠标左键
    WM_LBUTTONUP = 0x202

    更多函数代码请移步MSDN官网查看

    这样就实现了点击其他程序里的按钮操作!

      


    github:https://github.com/2629180692
    博客园:http://www.cnblogs.com/wurendao
    完成日期 ©2020-02-10 无人岛
    遇到什么问题欢迎到下面评论里提出或者联系我哦!

    【转载文章务必保留出处和署名,谢谢!】

  • 相关阅读:
    prase arraylist where in to ParamsQuery on sql server 2008 using TVB: tvpdemo.cs(where in 转sql 参数化查询)
    手动依赖性注入 NInject(1) (转载)
    单件(单态,Singleton)模式部分
    详解Javascript中的Url编码/解码
    学习Web应用漏洞最好的教程WebGoat(转载)
    百度网盘 邀请码
    colorbox去除close关闭按钮,附上colorbox的基本使用方法
    P3974 [TJOI2015]组合数学
    P1772 [ZJOI2006]物流运输
    P1434 [SHOI2002]滑雪
  • 原文地址:https://www.cnblogs.com/wurendao/p/16198796.html
Copyright © 2020-2023  润新知