失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java调用win32_java调用win32api操作windows窗口

java调用win32_java调用win32api操作windows窗口

时间:2020-11-11 19:30:09

相关推荐

java调用win32_java调用win32api操作windows窗口

1、背景

自动化测试时,需要处理“另存为”“打印”等windows窗口,java本身并不适合处理这类窗口。

这类窗口的操作可以通过win32api来处理会非常方便。

java对于win32api的调用可以使用jna.jar。

2、代码如下:

1、traversalWindows():遍历windows所有窗口(不包含子窗口),根据窗口标题匹配定位窗口

2、chooseFileByDlg():处理上传文件的对话框

3、代码说明3.1、win32api说明

FindWindow函数:这个函数根据窗口标题和CLASS查找窗口

FindWindowEx函数:根据窗口标题、CLASS、父窗口定位窗口

SetForegroundWindow:键盘输入转向该窗口

GetWindowText:获取窗口标题

EnumWindows:枚举所有窗口

win32api,参数包含字符串的,有A和W结尾的,A结尾表示多字节编码,W结尾表示UNICODE编码。

具体可以百度,比如FindWindow的官方api说明,可以百度"FindWindowmsdn",msdn是微软官方。

3.2、跨语言调用相关技术

跨语言调用需要注意一下几个地方:

1、函数调用约定相同(参数入栈顺序、由调用方还是被调用方清理堆栈等)

2、字符串编码(调用跨语言api时,按照对方使用的字符编码传递字符串;接受到字符串时,需要转换为本项目使用的编码)

3、数据类型(java中的byte对应c++中的那种类型?)

4、class内存结构(c++中的class和java中的class,内存内结构相同吗?)

5、指针(c++中的指针,java如何表示)

6、回调函数怎么写

7、虚拟机和windows的大端小端是否一致

以上几个地方,jni和jna库应该都有处理,我们使用时需要考虑到这些地方,以便调试定位并解决问题。

3.3、windows窗口的窗口标题和class怎么获取

使用spy++工具,安装了Visual Studio之后,D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools目录下有spy++工具。

如果觉得《java调用win32_java调用win32api操作windows窗口》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。