增加MATLAB获取其他程序窗体位置功能

时间:2022-06-20
本文章向大家介绍增加MATLAB获取其他程序窗体位置功能,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

借助Java或者Python实现获取其他程序窗体位置

Java实现

function Rect = getWindowRect(class,name)
%导入jar包
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef;
%获取窗体句柄
hwnd = User32.INSTANCE.FindWindow(class,name);
%新建一个矩形对象
rect = javaObject('com.sun.jna.platform.win32.WinDef$RECT');
%获取位置
User32.INSTANCE.GetWindowRect(hwnd, rect);
%整合输出

width = rect.right - rect.left;
height = rect.bottom - rect.top;
Rect=[rect.left rect.top width height];
end

Python实现

function Rect = getWindowRect(class,name)
%获取窗体句柄
hwnd = py.win32gui.FindWindow(class, name);
%获取位置
rect = py.win32gui.GetWindowRect(hwnd);
%转换为MATLAB元胞数组
cell_rect = cell(rect);
%整合输出
width = cell_rect{3} - cell_rect{1};
height = cell_rect{4} - cell_rect{2};
Rect=[cell_rect{1} cell_rect{2} width height];
end

对比

一样的调用win32程序,都需要窗体的类名、窗体名称作为参数。Java接口用的传值方式、需要创建一个矩形对象传入函数,执行后矩形对象里面就是返回值;Python接口就是正常的返回,只是返回值格式不一样,针对不一样的返回将数值组成MATLAB数组返回

在发现Java或者Python有成熟的功能时,只需要参考以上语句在m文件中创建对象、使用对应方法、取得返回值即可