找回密码  加入

QQ登录

只需一步,快速开始

AUTOIT CN

搜索
查看: 86|回复: 7

[网络通信] [已解决]如何清除外部控件文字

[复制链接]
发表于 2019-11-30 17:15:49 | 显示全部楼层 |阅读模式
本帖最后由 w60711 于 2019-12-1 00:58 编辑

请问各位前辈
目前有一个外部窗口
有 Edit1,Edit2 控件,Edit1裡头有文字

现在想要在不激活该窗口的状况下
将Edit1裡面的文字清除再输入新的
但一直不顺利
想请教是否有啥方法,感谢~
(不清除的话会接续着写入...)

以下2种方法试过无效...
  1. $win = "[CLASS:LauncherDialog]"
  2. $hWin = WinGetHandle($win)
  3. $btnCtrl1 = "[CLASS:Edit; INSTANCE:1]"
  4. $CtrlHandleEdit1 = ControlGetHandle($win,"", $btnCtrl1)

  5. ControlFocus($hWin, '', $btnCtrl1)
  6. Sleep(1000)
  7. ControlSend($hWin, '', $btnCtrl1, '^a')
  8. Sleep(250)

  9. _SendText(String($CtrlHandleEdit1), '新文字') ;;Edit1
复制代码

  1. $win = "[CLASS:LauncherDialog]"
  2. $hWin = WinGetHandle($win)
  3. $btnCtrl1 = "[CLASS:Edit; INSTANCE:1]"
  4. $btnCtrl1 = "[CLASS:Edit; INSTANCE:2]"
  5. $CtrlHandleEdit1 = ControlGetHandle($win,"", $btnCtrl1)

  6. ControlFocus($hWin, '', $btnCtrl2)
  7. Sleep(1000)
  8. _SendKeys($hWin, '{TAB}')
  9. Sleep(250)

  10. _SendText(String($CtrlHandleEdit1), '新文字') ;;Edit1
复制代码








发表于 2019-11-30 17:28:59 | 显示全部楼层
ControlSend($hWin, '', $btnCtrl1, '^a') 后台全选有效的话 再send '{del}'
 楼主| 发表于 2019-11-30 20:19:55 | 显示全部楼层
afan 发表于 2019-11-30 17:28
ControlSend($hWin, '', $btnCtrl1, '^a') 后台全选有效的话 再send '{del}'

感谢afan大,
但是我这是在操作游戏的启动器
如果使用 send('{DEL}')的话
是否会影响到正在使用中的画面呢?
感谢您~
发表于 2019-11-30 20:25:09 | 显示全部楼层
w60711 发表于 2019-11-30 20:19
感谢afan大,
但是我这是在操作游戏的启动器
如果使用 send('{DEL}')的话

我的意思是继续用 ControlSend {del},Send是不能后台的… 前提是已完成了全选
 楼主| 发表于 2019-11-30 20:29:53 | 显示全部楼层
afan 发表于 2019-11-30 20:25
我的意思是继续用 ControlSend {del},Send是不能后台的… 前提是已完成了全选

了解了
是我误会了><"

刚刚有一问题忘记补充了
以下很奇怪...
如果我用了 MsgBox(0,0,ControlGetFocus($hWin))
测试是否有将焦点放到Edit1
则可以成功将光标设置以及全选
但把MsgBox 注释掉后,又无法了...


  1.         WinActive($hWin)
  2.         Sleep(1000)
  3.         ControlFocus($hWin, '', $btnCtrl1)
  4.         Sleep(3000)
  5.         ;;MsgBox(0,0,ControlGetFocus($hWin))
  6.         ControlSend($hWin, '', $btnCtrl1, '^a')
  7.         Sleep(250)
复制代码
发表于 2019-11-30 20:39:50 | 显示全部楼层
w60711 发表于 2019-11-30 20:29
了解了
是我误会了>

MsgBox 弹出及关闭 系统会有激活的消息产生,会让目标激活而自然使全选有效
但有些时候已全选但在窗口未激活状态下是没有高亮显示的,这都需要自行测试,没法猜
也可以插一句 ControlClick($hWin, '', $btnCtrl1),再 ^a ,如果仍无效那可能是需要激活才行

评分

1

查看全部评分

 楼主| 发表于 2019-11-30 20:47:31 | 显示全部楼层
afan 发表于 2019-11-30 20:39
MsgBox 弹出及关闭 系统会有激活的消息产生,会让目标激活而自然使全选有效
但有些时候已全选但在窗口未 ...

理解了,
感谢afan版大提示~^^
我再来测试看看~
 楼主| 发表于 2019-12-1 00:53:36 | 显示全部楼层
本帖最后由 w60711 于 2019-12-1 00:57 编辑
afan 发表于 2019-11-30 20:39
MsgBox 弹出及关闭 系统会有激活的消息产生,会让目标激活而自然使全选有效
但有些时候已全选但在窗口未 ...

没有激活的状况下
仍有一些状况无法选取...

目前使用这个方法,可以达到目的~


  1. _GUICtrlEdit_SetText($CtrlHandleEdit1,$RuID);;帐号 Edit1
  2. _GUICtrlEdit_SetText($CtrlHandleEdit2,$Rpass);;密码 Edit2
  3. _MouseClick(String($CtrlHandleButton1),'left',32,276);;登入按钮
复制代码


afan大一席话
激起了灵感,找到了变通方法
太感谢了~~

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|小黑屋|手机版|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2019-12-10 02:18 , Processed in 0.078128 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表