借助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文件中创建对象、使用对应方法、取得返回值即可