转: http://blog.csdn.net/coolszy/article/details/5523700

SendMessage用法

windowsbuttonmenucommandlistc#

函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。该函数是应用程序和应用程序之间进行消息传递的主要手段之一。

函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);

参数:

hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。

Msg:指定被发送的消息。

wParam:指定附加的消息指定信息。

IParam:指定附加的消息指定信息。

返回值:返回值指定消息处理的结果,依赖于所发送的消息。

备注:需要用HWND_BROADCAST通信的应用程序应当使用函数RegisterWindowMessage来为应用程序间的通信取得一个唯一的消息。

如果指定的窗口是由调用线程创建的,则窗口程序立即作为子程序调用。如果指定的窗口是由不同线程创建的,则系统切换到该线程并调用恰当的窗口程序。线程间的消息只有在线程执行消息检索代码时才被处理。发送线程被阻塞直到接收线程处理完消息为止。

C#中使用该函数首先导入命名空间:

[c-sharp] view plaincopy

using System.Runtime.InteropServices;

然后写API引用部分的代码,放入 class 内部

[c-sharp] view plaincopy

[DllImport("user32.dll", EntryPoint = "SendMessage")]

private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);

这个函数有四个参数,第一个是窗口句柄,窗口可以是任何类型的屏幕对象;第二个是用于区别其他消息的常量值;第三个通常是一个与消息有关的常量值,也可能是窗口或控件的句柄,第三个参数是可选参数,有的消息要,有的不需要,比如单击就不需要这个参数,

别的消息,比如鼠标移动的可能需要在这里加上一些鼠标的参数;第四个通常是一个指向内存中数据的指针。在C#中消息需要定义成windows系统中的原始的16进制数字,比如 const int WM_Lbutton = 0x201; //定义了鼠标的左键点击消息。详细值在最后。

例如:

[c-sharp] view plaincopy

const int BM_CLICK = 0xF5;

IntPtr maindHwnd = FindWindow(null, "QQ用户登录"); //获得QQ登陆框的句柄

if (maindHwnd != IntPtr.Zero)

{

IntPtr childHwnd = FindWindowEx(maindHwnd, IntPtr.Zero, null, "登录"); //获得按钮的句柄

if (childHwnd != IntPtr.Zero)

{

SendMessage(childHwnd, BM_CLICK, 0, 0); //发送点击按钮的消息

}

else

{

MessageBox.Show("没有找到子窗口");

}

}

else

{

MessageBox.Show("没有找到窗口");

}

[DllImport("user32.dll", EntryPoint = "FindWindowEx")]

private static extern IntPtr FindWindowEx( IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow );

[DllImport("user32.dll", EntryPoint = "FindWindow")]

private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);

不过貌似现在FindWindowEx获取不到登录句柄了。

python中sendmessage的使用_SendMessage用法实例相关推荐

  1. python中的split函数的用法实例_python中的split()函数的用法

    函数:split() Python中有split()和os.path.split()两个函数,具体作用如下: split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(li ...

  2. python中sendmessage的使用_SendMessage函数的常用消息及其应用大全

    文本框控件通常用于输入和编辑文字.它属于标准 Windows 编辑控件的一个子类,所以它支持所有编辑控件消息.这儿讲述的技术也适用于由其他厂商设计的,以Windows编辑控件类为基础的其他控件.函数原 ...

  3. python threading join_Python中threading模块join函数用法实例分析

    本文实例讲述了Python中threading模块join函数用法.分享给大家供大家参考.具体分析如下: join的作用是众所周知的,阻塞进程直到线程执行完毕.通用的做法是我们启动一批线程,最后joi ...

  4. python中sys用法_Python中sys模块功能与用法实例详解

    Python中sys模块功能与用法.,具体如下: sys-系统特定的参数和功能 该模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数.它始终可用. sys.argv 传递给Pyth ...

  5. python join_详解Python中的join()函数的用法

    函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符) ...

  6. python or的用法_详细介绍Python中and和or实际用法

    and 和 or 的特殊性质 在Python 中,and 和 or 执行布尔逻辑演算,但是它们并不返回布尔值:而是,返回它们实际进行比较的值之一.下面来看一下实例.>>> 'a' a ...

  7. python中内置函数的用法_python中str内置函数用法总结

    大家在使用python的过程中,应该在敲代码的时候经常遇到str内置函数,为了防止大家搞混,本文整理归纳了str内置函数.1字符串查找类:find.index:2.字符串判断类:islower.isa ...

  8. python中readlines函数用法,python中read() readline()以及readlines()用法

    我们谈到"文本处理"时,我们通常是指处理的内容.Python 将文本文件的内容读入可以操作的字符串变量非常容易.文件对象提供了三个"读"方法: .read(). ...

  9. Python中range函数的基本用法完全解读

    range函数大多数时常出现在for循环中,在for循环中可做为索引使用,下面这篇文章主要给大家介绍了关于Python中range函数的基本用法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下 ...

最新文章

  1. 资源 | 深度学习图像标注工具汇总
  2. Sitecake – 可视化编辑,所见即所得的 CMS
  3. db2 语句包括不必要的列表_DB2 SQL0956C 数据库堆中没有足够的处理空间可用来处理此语句...
  4. 演练 多班分数录入统计优秀人数
  5. linux下安装Jira6.3
  6. mysql 5.6 登录 警告_解决mysql登录出现警告问题的简单方法
  7. mysql数据库在哪里写语句_Mysql数据库操作语句
  8. 【电路设计】1N系列二极管型号总结
  9. 车辆加速性能测试软件,汽车动力性能检测
  10. Linux开发板启动需要登录密码设置方法
  11. html 苹果6尺寸,iPhone6界面设计尺寸规范大全【含原型设计规范】
  12. jQuery如何使用most()方法?代码示例和解析
  13. ABAP BAPI 复制标准项目模板实现项目立项
  14. java内部错误2203,win7系统安装Java出现"内部错误2203"问题的解决方法
  15. STING 与 cGAS的结合导致TBK1 激酶募集和活化
  16. 智能营销文本生成项目知识点总结
  17. bugku的做个游戏(08067CTF) writeup
  18. Mobius 莫比乌斯
  19. 请求接口参数正确请求失败的问题
  20. 电脑处理器i5和i7的区别,如何选择?

热门文章

  1. java唱歌打分系统原理_哦,这就是java的优雅停机?(实现及原理)
  2. 硕士论文查重系统应该如何选择?
  3. Part 文件和目录 笔记
  4. css3绘制的钢铁侠代码
  5. 关于AERO或WB主题等半透明窗口无法截图的解决
  6. oracle 启动mrp进程,dataguard中MRP无法启动的问题分析和解决
  7. win7下framework3.5 安装不成功的教训
  8. 字体font复合属性
  9. python爬虫简单爬取天天基金的基金信息和每日净值
  10. 在python中股票的收盘价如何表示_Python:从字典中创建收盘股价的数据框架