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说明,可以百度"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.0\Common7\Tools目录下有spy++工具。

java调用win32_java调用win32api操作windows窗口相关推荐

  1. python窗口程序-python操作Windows窗口程序

    如果你想看更多舒适的布局和守时,有干货推动现场每天8点.定期获得数据接口和数据写入Excel表.Excel需要使用其他程序和需要打开.Pywin32处理是一个32位整数,用于标记对象在windows中 ...

  2. pythonwindow程序窗体操作_python操作Windows窗口程序

    ###场景 定时获取数据接口数据写入Excel表格,Excel需要被其他程序使用,需要处于开启状态. ###Pywin32 首先,安装一个Pywin32,为python提供访问Windows API的 ...

  3. python操作windows窗口一个小case

    1. import win32gui, win32con 2. win32gui.FindWindow找到目标程序: win = win32gui.FindWindow(None, u'无标题 - 记 ...

  4. selenium 上传下载调用windows窗口--AutoIT

    AutoIT解决自动化上传下载文件调用Windows窗口 AutoIT 下载安装 使用AotuIt 操作windows上传窗口 1. 打开AutoIt定位窗口组件 2. 定位上传窗口属性 (鼠标选中F ...

  5. Java JNI实现调用自定义Native 方法

    JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植.从Java1.1开始,JNI标准成为java平台的一部分,它允许Jav ...

  6. 本地方法(JNI)——从java 程序中调用C函数

    [0]README 1) 本文部分文字描述 转自 core java volume 2 , 旨在理解 本地方法--从java 程序中调用C函数 的基础知识 : 2) for source code, ...

  7. 【开发者笔记】java 利用jna调用c#的dll

    一.需求阐述: 如果我们的项目利用c#开发,到了开发后期需要和java组进行合作,其中有一部分业务逻辑利用c#已经code completed,那么我们可能会考虑用java来调用现成的c#dll实现需 ...

  8. Java利用JNA调用C#的dll

    https://www.cnblogs.com/wyongbo/p/jnaTest.html 本文参考以上链接,结合自己实际遇到的问题,做过一些修改(红色字体标注),主要是为了给自己做个笔记. 一.需 ...

  9. Java通过Jolt调用Tuxedo服务

    Java通过Jolt调用Tuxedo服务 草木瓜 2006-6-1 ------------------------ 一.简介 ------------------------ 外部应用访问Tuxed ...

  10. Java通过JNI调用C++动态链接库dll,并打在jar包内 ——JNA-JNI(一)

    Java通过JNI调用C++动态链接库dll,并打在jar包内--JNA-JNI(一) 系列文章: Java通过JNI调用C++动态链接库dll,并打在jar包内 --JNA-JNI(一) Java使 ...

最新文章

  1. CSDN送会员?免费的!都来领!
  2. 王欢:如何构建好的智能风控工具体系?
  3. js在线压缩工具 支持Base62 encode 和 Shrink variables
  4. C# 进程优先级和线程优先级的方法
  5. 关于Qomo OpenProject的进度(2006.01.04)
  6. python中0xff_强悍的Python读取大文件的解决方案
  7. 计算机网络提供服务靠,计算机网络体系结构及协议之通信子网的操作方式和网络层提供的服务...
  8. python随机函数random要导入哪个包_python学习之随机函数random
  9. android怎么垂直居中,【Android】水平居中 垂直居中 中心居中
  10. 单片空间后方交会Matlab程序
  11. [XJTUSE]计算机图形学第二章作业,使用OpenGL编程实现DDA、中点画线和Bresenham算法和中点画圆法
  12. 【PBL项目实战】户外智慧农场项目实战系列——1.阿里云物联网平台的开通与云端可视化应用的新建
  13. 从头开始训练一个词性标注模型
  14. 朗伯辐射强度模型MATLAB,基于室内非定向的可见光通信系统的朗伯光源阶数优化...
  15. 中信银行信用卡中心2020校园招聘风险管理类 | 一面+二面(2019.10.12-13)
  16. 开源应用架构之​Selenium WebDriver(上)
  17. 使用Spring构建普通非web的Java应用
  18. bzoj 1143 bzoj 2718 最长反链
  19. stup.exe木马病毒的手动解决办法
  20. PTA-C语言基础编程(一)

热门文章

  1. 申请CSDN博客专家的成功历程
  2. HeadFirstJava——13_网络与线程
  3. [转载]《Linux Kernel Development》读书笔记 - 蔚蓝海岸 - C++博客
  4. PPT:华为数字化转型实践分享(附下载)
  5. 韩顺平 2021零基础学Java 学习笔记(3)(自用)
  6. 信息论基础(考试复习,针对考点)
  7. C++实现H264文件解析
  8. 用c语言写图书管理系统设计,C语言图书管理系统设计及实现.doc
  9. 微信小程序:独立后台带分销功能月老办事处交友盲盒
  10. android系统签名及修改