论坛限制,第一次只能放100分,我马上会追加100分的,大家放心.
问题是这样的,比如现在我们有一个非常简单的delphi界面,界面中只有一个"确定"按钮.那么对于这样的一个界面,有什么方法可以获取到这个确定按钮在屏幕中的位置?之前在其他版块提过这样的问题,但是这里用DELPHI的人比较多.
补充一点,假设我们是不能修改那个界面的代码的,甚至都不能看到,假设那就是一个完全编译过的exe程序(不能反编译,更无法重新编译),有没有办法获取到那个按钮在屏幕中的坐标?任何手段都可以,哪怕是再写一段delphi代码,或者第三方脚本,控件,框架,甚至于一个思路都可以.
先谢谢大家了.
问题是这样的,比如现在我们有一个非常简单的delphi界面,界面中只有一个"确定"按钮.那么对于这样的一个界面,有什么方法可以获取到这个确定按钮在屏幕中的位置?之前在其他版块提过这样的问题,但是这里用DELPHI的人比较多.
补充一点,假设我们是不能修改那个界面的代码的,甚至都不能看到,假设那就是一个完全编译过的exe程序(不能反编译,更无法重新编译),有没有办法获取到那个按钮在屏幕中的坐标?任何手段都可以,哪怕是再写一段delphi代码,或者第三方脚本,控件,框架,甚至于一个思路都可以.
先谢谢大家了.
解决方案 »
- 在Image1中画一个固定大小的矩形,矩形可随意拖动,矩形线条的粗细及颜色最好能由我自己来定义
- 把adoquery的Locktype设为ltBatchOptimistic,在UpdateBatch后,如何可以知道更改了哪条记录
- 向Excel的一个单元格中输入数据时,怎么实现数据的多行显示!!
- 初学Delphi,毕业设计有困难,请帮个忙
- ****请教高手关于网络和RS232的问题,拜托!!!****
- 新手提问送分了!关于DBGrid的颜色问题!(高手帮忙吧!!)
- 我有個数據庫時間的問题想要請教一下大家!
- 请问哪位高手知道“怎么把录制下来的声音存成流的形式”啊
- 利用IE打印?
- 我问问题为什么没有人恢复?
- BDE转ADO的属性函数(createparam和removeparam)???加急
- 调用外部程序时,假如该程序未运行则运行它,如果已经运行则将它显示出来,就像调用窗体一样,该如何操作?
先用findWindow找到句柄
然后在使用
GetWindowRect函数,就可以获得按钮的位置了
这些控件在建立的时候,都需要有一个类名,只不过这个过程VCL替你做了,如果用VC的Spy++就可以看出来。
那么想找回去自可按图索骥,一路杀回!
锦上添花而已~飘过
h,ch:THandle;
rect:TRect;
begin
h := FindWindow(nil,'Form1');//找到Form1的句柄
ch := FindWindowEx(h,0,'TButton',nil);//找到Form1中的Button句柄
GetWindowRect(ch,rect);//将Button的坐标保存到rect
end;
由于对Delphi不是很熟悉,所以VC范例如下://取得句柄
hWnd = ::FindWindow(NULL, "GetTextTest");
if(hWnd != NULL){
hChildWnd = ::GetWindow(hWnd, GW_CHILD);
while(hChildWnd){
CHAR szClassName[MAX_PATH];
//获得类名(Delphi可能有更简洁的方法)
::GetClassNameA(hChildWnd, szClassName, sizeof(szClassName)/sizeof(CHAR));
//判断(Delphi可能有字符串string类,所以判断更简单)
if(stricmp(szClassName, "Button") == 0){
//取得Button的Text值
::GetWindowText(hChildWnd, szClassName, sizeof(szClassName)/sizeof(CHAR));
//之后可以使用 getwindowRec API进行处理
}
hChildWnd = ::GetNextWindow(hChildWnd, GW_HWNDNEXT);
}以上,由于个人能力有限所以在Delphi版只能提供VC范例,十分抱歉!
如果有问题,还请各位指正!谢谢!
這個東西如上面所說的一樣。剛開始可以通過SPY++ 這類工具查下,它的類名,然後再通FINDWINDOW定位程序,再定位FINDWINDOWEX定位窗口內的控件,再取得
GetWIndowRect,
你可以通過 getWindowtext,SetWindowText 來讀取或重寫這個BUTTON的CAPTION。
你貼子改個名字吧,剛進來,以為是搞圖形識別,樂了我半天。
这个问题的解决思路现在基本上已经清晰了,我现在正在看有关dll编程的资料,准备把识别的代码封装成一个dll文件,然后让JAVA去调用,其实也是jni的套路(jni也是要从最基础的部分开始看滴,还得学一下关于windows编程的知识),崩溃~!
唉,自动化测试的过程其实就是在一次又一次的崩溃中,仍然坚持前进的过程.