vfp 窗口自动确定!

yrt888 2008-09-27 03:20:28
有一程序服务器繁忙时会断开,然后弹出窗口提示重新连接,窗口大致情况:左边一个框,里面是一些服务器的名称。中间是输入帐号和密码的空白条。右边上至下五个按钮,间隔不等,分别为远程通信,本地通信,访问网站,通信设置,网络检查。
现在想自动点击第二个按钮,让他自动重新连接本地通信,请教各位大侠,谢谢帮助!

另外:
我是这样获得该窗口的句柄的,不知对否?:


#DEFINE GW_HWNDNEXT 2
DECLARE INTEGER GetActiveWindow IN win32api
DECLARE INTEGER GetWindow IN win32api INTEGER HWND, INTEGER wFlag
DECLARE INTEGER GetWindowText IN win32api INTEGER hand, STRING @ctitle, INTEGER ntitle

hCurrent = GetActiveWindow() && 从当前活动窗口开始
lcWinLists = ""
lnWinCount = 0
DO WHILE hCurrent > 0
lcWinTitle = SPACE(255)
lnlength = getwindowtext(hCurrent, @lcWinTitle, LEN(lcWinTitle))
lcWinTitle = IIF(lnlength>0, STRTRAN(TRIM(lcWinTitle),CHR(0),""), "")
IF "连接服务器"$lcWinTitle

exit
ENDIF
hCurrent = GetWindow (hCurrent, GW_HWNDNEXT) && 得到下一个窗口句柄
ENDDO


谢谢指教!
...全文
406 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2008-09-27
  • 打赏
  • 举报
回复
客气
yrt888 2008-09-27
  • 打赏
  • 举报
回复
五楼的方法成功了,谢谢大侠帮助!
十豆三 2008-09-27
  • 打赏
  • 举报
回复
这是我测试点击“计算器”的数字3按钮,已通过


Declare Integer FindWindow In user32 String lpClassName,String lpWindowName
Declare Integer FindWindowEx In user32 Integer hwndParent,Integer hwndChildAfter,String @ lpszClass,String @ lpszWindow
Declare Integer SendMessage In user32 Integer,Integer,Integer,String @
BM_CLICK = 0xF5
llHandle=FindWindow(Null,"计算器") &&“计算器”为窗口的Caption
If llHandle>0
SendHwnd=FindWindowEx(llHandle,0,"Button","3") &&获得“3”按钮句柄
If SendHwnd<>0
SendMessage(SendHwnd,BM_CLICK,0,0) &&自动按下'3'按钮
Else
Messagebox("没有找到 [3] 按钮!"+Space(5),48,"信息提示")
Endif
Else
Messagebox("没有找到 [计算器] 窗体!"+Space(5),48,"信息提示")
Endif
十豆三 2008-09-27
  • 打赏
  • 举报
回复
Declare Integer FindWindow In user32 String lpClassName,String lpWindowName
Declare Integer FindWindowEx In user32 Integer hwndParent,Integer hwndChildAfter,String @ lpszClass,String @ lpszWindow
Declare Integer SendMessage In user32 Integer,Integer,Integer,String @
BM_CLICK = 0xF5
llHandle=FindWindow(Null,'连接服务器') &&“连接服务器”为窗口的Caption
If llHandle>0
SendHwnd=FindWindowEx(llHandle, 0, "Button", "本地通信")&&获得“本地通信”按钮句柄
If SendHwnd<>0
SendMessage(SendHwnd,BM_CLICK,0,0)&&自动按下'本地通信'按钮
Else
Messagebox("没有找到 [本地通信] 按钮"+Space(5),48,"信息提示")
Endif
Else
Messagebox("没有找到 [连接服务器] 窗体"+Space(5),48,"信息提示")
Endif
十豆三 2008-09-27
  • 打赏
  • 举报
回复
通过窗口标题找到这个窗口

Declare Integer FindWindow In user32 String lpClassName,String lpWindowName
llHandle=FindWindow(Null,'计算器')
If llHandle>0
?'找到了'
Else
?'null'
Endif


另外再找出窗口中按钮的屏幕坐标,再模拟单击鼠标即可。
我查一下
yrt888 2008-09-27
  • 打赏
  • 举报
回复
是网上下载的应用软件!
十豆三 2008-09-27
  • 打赏
  • 举报
回复
你要点的窗口是另一个第三方软件,你没有源码修改对吧?
yrt888 2008-09-27
  • 打赏
  • 举报
回复
补充一下,按钮没有快捷键的!

2,748

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧