CN107368380A - Windows系统下向任意窗口发送消息的方法 - Google Patents

Windows系统下向任意窗口发送消息的方法 Download PDF

Info

Publication number
CN107368380A
CN107368380A CN201710788973.XA CN201710788973A CN107368380A CN 107368380 A CN107368380 A CN 107368380A CN 201710788973 A CN201710788973 A CN 201710788973A CN 107368380 A CN107368380 A CN 107368380A
Authority
CN
China
Prior art keywords
window
handle
message
subwindow
specified
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201710788973.XA
Other languages
English (en)
Inventor
李相宏
杨森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Trillion Digital Polytron Technologies Inc
Original Assignee
Shenzhen Trillion Digital Polytron Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Trillion Digital Polytron Technologies Inc filed Critical Shenzhen Trillion Digital Polytron Technologies Inc
Priority to CN201710788973.XA priority Critical patent/CN107368380A/zh
Publication of CN107368380A publication Critical patent/CN107368380A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Digital Computer Display Output (AREA)

Abstract

本发明公开了一种Windows系统下向任意窗口发送消息的方法,包括以下步骤:检索拥有指定窗口类名和窗口名称的顶级窗口的句柄;依据检索到的句柄枚举顶级窗口下的所有子窗口;遍历枚举的各子窗口,找到指定的子窗口,向指定的子窗口发送消息。该方法检索获取顶级窗口的句柄,进而检索到指定ID的子窗口,便可以向其发送消息,实现简单、可靠性高。

Description

Windows系统下向任意窗口发送消息的方法
技术领域
本发明涉及软件技术领域,尤其涉及一种Windows系统下向任意窗口发送消息的方法。
背景技术
现有的Windows系统下向窗口发送消息的方法为:首先,使用HOOK API函数记录相关的操作属性(包括顺序,动作,坐标);再将其解析用API函数keybd_event模拟用户的操作。该方法实现复杂,需要寻找控件的相对位置坐标,要详细的记录操作步骤,模拟时需要准确的设置焦点。
发明内容
针对现有技术的不足,本发明提出了一种Windows系统下向任意窗口发送消息的方法,该方法检索获取顶级窗口的句柄,进而检索到指定ID的子窗口,便可以向其发送消息,不需寻找窗口及控件的坐标及记录操作步骤,解决了现有的方法实现复杂的问题。
为了实现上述目的,本发明技术方案如下:
一种Windows系统下向任意窗口发送消息的方法,包括以下步骤:
S1:检索拥有指定窗口类名和窗口名称的顶级窗口的句柄;
S2:依据检索到的句柄枚举顶级窗口下的所有子窗口;
S3:遍历枚举的各子窗口,找到指定的子窗口,向指定的子窗口发送消息。
进一步地,在所述S1于S2之间还包括以下步骤:
判断是否检索到顶级窗口的句柄;若为是,则返回顶级窗口的句柄,并执行S2;若为否,则提示未找到该顶级窗口的句柄。
本发明的有益效果:
该方法检索获取顶级窗口的句柄,进而检索到指定ID的子窗口,便可以向其发送消息,实现简单、可靠性高。
附图说明
图1为本发明的流程示意图。
具体实施方式
下面结合附图和实施例,进一步阐述本发明。
如图1所示,一种Windows系统下向任意窗口发送消息的方法,包括以下步骤:
S1:检索拥有指定窗口类名和窗口名称的顶级窗口的句柄。
在本实施例中,通过Windows系统提供的FindWindow函数对指定窗口类名和窗口名称的顶级窗口进行检索。其函数的原形为:FindWindow(LPCTSTR lpClassName,LPCTSTRlpWindowName);lpClassName设置为NULL,FindWindow函数将会寻找任何与lpWindowName参数匹配的窗口;lpWindowName设置为需要被寻找的窗口名的字符串。判断FindWindow函数是否检索到顶级窗口的句柄;若为是,则返回顶级窗口的句柄,并执行S2;若为否,则提示未找到该顶级窗口的句柄。
一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类对象中的不同的实例。诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是一个指针,程序不能利用句柄来直接阅读文件中的信息。
S2:依据检索到的句柄枚举顶级窗口下的所有子窗口。
在本实施例中,通过Windows系统提供的EnumChildWindows函数枚举顶级窗口的所有子窗口。其函数原型为:BOOL EnumChildWindows(HWND hWndParent,WNDENUMPROClpEnumFunc,LPARAM lParam);hWndParent是FindWindow函数找到窗口后所返回的句柄;lParam为自定义的参数;特别注意的是lpEnumFunc函数,回调函数的返回值将会影响到这个API函数的行为;如果回调函数返回true,则枚举继续,直到枚举完成;如果返回false,则将会中止枚举。
EnumChildWindows函数使用的回调机制,回调函数的意义在于回调函数允许用户把需要调用的方法的指针作为参数传递给一个函数,以便该函数在处理相似事件的时候可以灵活的使用不同的方法。因此,发送消息的类型可随时定义,方便了程序的扩展。
S3:遍历枚举的各子窗口,找到指定的子窗口,向指定的子窗口发送消息。
在本实施例中,通过Windows系统提供的SendMessage函数将指定的消息发送至指定的子窗口。其函数原型为:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);hWnd指定需要接受消息的窗口;Msg指定发送消息的类型;在获取控件值时使用WM_GETTEXT,设置控件值时使用WM_SETTEXT;IParam为消息附加的特定信息。
本发明借助Spy++开发工具获取窗口信息。Spy++是一个基于Windows平台Win32的实用工具,可查看选定的窗口、线程、进程或消息的属性。Spy++可在没有源码以及不改变被控软件的情况下,获取软件中控件的属性值,最大程度地保证了模块的兼容性。
本发明检索获取顶级窗口的句柄,进而获取子窗口的ID,便可以向其发送消息,不需寻找窗口及控件的坐标,可对任意位置任意状态的窗口的任意可输入控件发送消息。
现有的方法需要记录具体的用户操作过程(包括时间、位置、动作等),然后将记录的过程还原,本发明不需记录消息并且解析消息的附件内容,省去了用户模拟的过程。
本发明实现在回调函数中,由于子窗口的ID是一个固定值,所以本方法抽象出函数接口,其参数包括窗口名和子窗口ID,回调函数中通过判断枚举的子窗口的ID ,对指定子窗口发出消息。
根据模块的目的和作用,可以将其方法封装成类,方便调用。本发明衍生的具体应用方法可以包括:向指定控件发送字符串;取得指定控件的值;向指定控件进行鼠标点击动作;模拟键盘特殊按键。
向指定控件发送字符串方法为:int Input(LPCTSTR window,int cID,CStringdata),其参数为window为窗口名,可使用spy++获取,data为需要发送的数据,其回调函数的实现包括消息发送和焦点设置,返回值可判断消息发送是否成功。
取得指定控件的值:CString GetEdit(LPCTSTR window, int cID),其参数为window为窗口名,cID为需要取得控件值的ID,使用Spy++获取,返回值为获取到的控件的值。
向指定控件进行鼠标点击动作:int Click(LPCTSTR window,int cID,intbutton),其参数为window为窗口名,button为按键类型。
模拟键盘特殊按键:如Enter、Shift、Ctrl等按键,这些消息需要被特殊处理,方法名为int VK_Input(LPCTSTR window,char keyValue),keyValue可参考winUser.h。
以上所述的仅是本发明的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的基本构思的前提下直接导出或联想到的其它改进和变化均应认为包含在本发明的保护范围之内。

Claims (2)

1.一种Windows系统下向任意窗口发送消息的方法,其特征在于:
包括以下步骤:
S1:检索拥有指定窗口类名和窗口名称的顶级窗口的句柄;
S2:依据检索到的句柄枚举顶级窗口下的所有子窗口;
S3:遍历枚举的各子窗口,找到指定的子窗口,向指定的子窗口发送消息。
2.根据权利要求1所述的Windows系统下向任意窗口发送消息的方法,其特征在于:
在所述S1于S2之间还包括以下步骤:
判断是否检索到顶级窗口的句柄;若为是,则返回顶级窗口的句柄,并执行S2;若为否,则提示未找到该顶级窗口的句柄。
CN201710788973.XA 2017-09-05 2017-09-05 Windows系统下向任意窗口发送消息的方法 Pending CN107368380A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710788973.XA CN107368380A (zh) 2017-09-05 2017-09-05 Windows系统下向任意窗口发送消息的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710788973.XA CN107368380A (zh) 2017-09-05 2017-09-05 Windows系统下向任意窗口发送消息的方法

Publications (1)

Publication Number Publication Date
CN107368380A true CN107368380A (zh) 2017-11-21

Family

ID=60311264

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710788973.XA Pending CN107368380A (zh) 2017-09-05 2017-09-05 Windows系统下向任意窗口发送消息的方法

Country Status (1)

Country Link
CN (1) CN107368380A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109522086A (zh) * 2018-11-29 2019-03-26 金蝶软件(中国)有限公司 对窗口的操作方法和装置、计算机装置及可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101834807A (zh) * 2010-04-28 2010-09-15 北京网康科技有限公司 一种获取无窗口RichEdit控件文本内容的方法及其设备
CN102830991A (zh) * 2012-07-31 2012-12-19 北京奇虎科技有限公司 一种用于实现文件收集、软件包自动安装的方法及装置
US20130174075A1 (en) * 2011-12-30 2013-07-04 Industrial Technology Research Institute Method for acquiring program parameters of component in graphical user interface of equipment and method for operating equipment
CN103559445A (zh) * 2013-11-07 2014-02-05 北京奇虎科技有限公司 一种应用程序交互控制方法及装置
CN103577608A (zh) * 2013-11-20 2014-02-12 北京奇虎科技有限公司 一种对文件/文件夹进行操作的方法及装置
CN103593186A (zh) * 2013-11-11 2014-02-19 北京奇虎科技有限公司 一种操作注册表的方法及装置
CN103793536A (zh) * 2014-03-03 2014-05-14 陈念生 一种智能平台实现方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101834807A (zh) * 2010-04-28 2010-09-15 北京网康科技有限公司 一种获取无窗口RichEdit控件文本内容的方法及其设备
US20130174075A1 (en) * 2011-12-30 2013-07-04 Industrial Technology Research Institute Method for acquiring program parameters of component in graphical user interface of equipment and method for operating equipment
CN102830991A (zh) * 2012-07-31 2012-12-19 北京奇虎科技有限公司 一种用于实现文件收集、软件包自动安装的方法及装置
CN103559445A (zh) * 2013-11-07 2014-02-05 北京奇虎科技有限公司 一种应用程序交互控制方法及装置
CN103593186A (zh) * 2013-11-11 2014-02-19 北京奇虎科技有限公司 一种操作注册表的方法及装置
CN103577608A (zh) * 2013-11-20 2014-02-12 北京奇虎科技有限公司 一种对文件/文件夹进行操作的方法及装置
CN103793536A (zh) * 2014-03-03 2014-05-14 陈念生 一种智能平台实现方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109522086A (zh) * 2018-11-29 2019-03-26 金蝶软件(中国)有限公司 对窗口的操作方法和装置、计算机装置及可读存储介质
CN109522086B (zh) * 2018-11-29 2022-07-12 金蝶软件(中国)有限公司 对窗口的操作方法和装置、计算机装置及可读存储介质

Similar Documents

Publication Publication Date Title
CN100472434C (zh) 智能ui记录和重放结构
Ousterhout Tcl: An embeddable command language
US7251809B2 (en) Dynamic generation of program execution trace files in a standard markup language
US6546365B1 (en) System for national language support and automated translation table
US20120159427A1 (en) System and method for extracting uml models from legacy applications
US20040034833A1 (en) Dynamic interaction manager for markup language graphical user interface
US20070294586A1 (en) Automated Extensible User Interface Testing
CN107357593A (zh) 源代码文件组建方法、装置、电子终端及可读存储介质
US8572632B2 (en) Devices as services in a decentralized operating system
WO2004077293A1 (en) Method for using a business model user interface
CN109800135A (zh) 一种信息处理方法及终端
US8302070B2 (en) Output styling in an IDE console
CN108491326A (zh) 测试行为重组方法、装置及存储介质
CN108809755A (zh) 兼容命令行和web界面的家庭网关自动测试方法及系统
WO2021189766A1 (zh) 数据可视化方法及相关设备
Padberg et al. Reconnet: a tool for modeling and simulating with reconfigurable place/transition nets
US8700374B1 (en) System and method of using an active link in a state programming environment to locate an element in a graphical programming environment
JP2001502096A (ja) 電子民生機器のグラフィカルユーザインターフェースを設計するための方法とシステム
CN100454244C (zh) 在标记中用于定义和使用子类说明的系统和方法
CN107368380A (zh) Windows系统下向任意窗口发送消息的方法
CN105335160B (zh) 一种基于jsf的web端组件敏捷开发方法
WO2005111768A2 (en) Generic user interface command architecture
CN109271161A (zh) 样板代码生成方法、装置及存储设备及计算机设备
CN101510171A (zh) 针对Java ME软件中MIDlet主类的测试方法
CN108268298A (zh) 桌面图标的生成方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20171121