我是靠谱客的博主 要减肥抽屉,最近开发中收集的这篇文章主要介绍java调用win32_java调用win32api操作windows窗口,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、背景

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

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

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

2、代码如下:

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

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

1.png?version=2&modificationdate=1464437565000&api=v2

2.png?version=2&modificationdate=1464437592000&api=v2

3.png?version=1&modificationdate=1464437665000&api=v2

3、代码说明3.1、win32api说明

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

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

SetForegroundWindow:键盘输入转向该窗口

GetWindowText:获取窗口标题

EnumWindows:枚举所有窗口

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

具体可以百度,比如FindWindow的官方api说明,可以百度"FindWindow  msdn",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.0Common7Tools目录下有spy++工具。

4.png?version=2&modificationdate=1464439839000&api=v2

5.png?version=1&modificationdate=1464439733000&api=v2

6.png?version=2&modificationdate=1464439811000&api=v2

最后

以上就是要减肥抽屉为你收集整理的java调用win32_java调用win32api操作windows窗口的全部内容,希望文章能够帮你解决java调用win32_java调用win32api操作windows窗口所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部