w60711 发表于 2019-11-30 17:15:49

[已解决]如何清除外部控件文字

本帖最后由 w60711 于 2019-12-1 00:58 编辑

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

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

以下2种方法试过无效...
$win = ""
$hWin = WinGetHandle($win)
$btnCtrl1 = ""
$CtrlHandleEdit1 = ControlGetHandle($win,"", $btnCtrl1)

ControlFocus($hWin, '', $btnCtrl1)
Sleep(1000)
ControlSend($hWin, '', $btnCtrl1, '^a')
Sleep(250)

_SendText(String($CtrlHandleEdit1), '新文字') ;;Edit1


$win = ""
$hWin = WinGetHandle($win)
$btnCtrl1 = ""
$btnCtrl1 = ""
$CtrlHandleEdit1 = ControlGetHandle($win,"", $btnCtrl1)

ControlFocus($hWin, '', $btnCtrl2)
Sleep(1000)
_SendKeys($hWin, '{TAB}')
Sleep(250)

_SendText(String($CtrlHandleEdit1), '新文字') ;;Edit1







afan 发表于 2019-11-30 17:28:59

ControlSend($hWin, '', $btnCtrl1, '^a') 后台全选有效的话 再send '{del}'

w60711 发表于 2019-11-30 20:19:55

afan 发表于 2019-11-30 17:28
ControlSend($hWin, '', $btnCtrl1, '^a') 后台全选有效的话 再send '{del}'

感谢afan大,
但是我这是在操作游戏的启动器
如果使用 send('{DEL}')的话
是否会影响到正在使用中的画面呢?
感谢您~

afan 发表于 2019-11-30 20:25:09

w60711 发表于 2019-11-30 20:19
感谢afan大,
但是我这是在操作游戏的启动器
如果使用 send('{DEL}')的话


我的意思是继续用 ControlSend {del},Send是不能后台的… 前提是已完成了全选

w60711 发表于 2019-11-30 20:29:53

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

了解了
是我误会了><"

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


        WinActive($hWin)
        Sleep(1000)
        ControlFocus($hWin, '', $btnCtrl1)
        Sleep(3000)
        ;;MsgBox(0,0,ControlGetFocus($hWin))
        ControlSend($hWin, '', $btnCtrl1, '^a')
        Sleep(250)

afan 发表于 2019-11-30 20:39:50

w60711 发表于 2019-11-30 20:29
了解了
是我误会了>

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

w60711 发表于 2019-11-30 20:47:31

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

理解了,
感谢afan版大提示~^^
我再来测试看看~

w60711 发表于 2019-12-1 00:53:36

本帖最后由 w60711 于 2019-12-1 00:57 编辑

afan 发表于 2019-11-30 20:39
MsgBox 弹出及关闭 系统会有激活的消息产生,会让目标激活而自然使全选有效
但有些时候已全选但在窗口未 ...
没有激活的状况下
仍有一些状况无法选取...

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


_GUICtrlEdit_SetText($CtrlHandleEdit1,$RuID);;帐号 Edit1
_GUICtrlEdit_SetText($CtrlHandleEdit2,$Rpass);;密码 Edit2
_MouseClick(String($CtrlHandleButton1),'left',32,276);;登入按钮


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

:face (23):
页: [1]
查看完整版本: [已解决]如何清除外部控件文字