无忧启动论坛

标题: 怎么获取窗口某控件的字符串? [打印本页]

作者: 2012fengxi    时间: 2024-10-13 19:19
标题: 怎么获取窗口某控件的字符串?
本帖最后由 2012fengxi 于 2024-10-13 22:35 编辑


如图出现了这个提示框,因为每次出现的数字是随机的,所以我需要提取这个文本去判断,然后自动按相对应的按键。
用PECMD怎么写脚本获取这个数字呢?

我用autoit3脚本可以做到,想换成pecmd脚本
以下是我的au3脚本:
Run ( @ScriptDir & "\totalcmd64.exe" , @ScriptDir )
Local $hWnd = WinWait("[CLASS:TNASTYNAGSCREEN]", "", 10)
Sleep(500)
Local $sText = WinGetText($hWnd, "")
$i = StringInStr ( $sText, "&3")
$n =StringMid ( $sText, $i - 2 , 1 )
ControlSend($hWnd, "", "Window3", $n)




作者: yyz2191958    时间: 2024-10-13 20:15
VBS 或者可以:

键盘按键代码表【单个字母 按键不用 {}】
https://www.cnblogs.com/gisoracle/p/7069400.html
按键                  代码
BACKSPACE         {BACKSPACE}, {BS}, 或 {BKSP}
BREAK             {BREAK}
CAPS LOCK         {CAPSLOCK}
DEL or DELETE         {DELETE} 或 {DEL}
DOWN ARROW         {DOWN}
END        {END}
ENTER             {ENTER}或 ~
ESC                 {ESC}
HELP                 {HELP}
HOME                 {HOME}
INS or INSERT        {INSERT} 或 {INS}
LEFT ARROW        {LEFT}
NUM LOCK             {NUMLOCK}
PAGE DOWN        {PGDN}
PAGE UP             {PGUP}
PRINT SCREEN        {PRTSC}
RIGHT ARROW        {RIGHT}
SCROLL LOCK        {SCROLLLOCK}
TAB                 {TAB}
UP ARROW             {UP}
F1                {F1}
F2                {F2}
F3                {F3}
F4                {F4}
F5                {F5}
F6                {F6}
F7                {F7}
F8                {F8}
F9                {F9}
F10                {F10}
F11                {F1}
F12                {F12}
F13                {F13}
F14                {F14}
F15                {F15}
F16                {F16}
向上        {UP}
向下        {down}

(4)SHIFT、CTRL 及 ALT 等按键结合的组合键,可在这些按键码的前面放置一个或多个代码,这些代码列举如下:

按键        代码
Shift        +
Ctrl            ^
Alt            %   【cmd里面要两个:%%】
作者: winlong102    时间: 2024-10-13 22:05
yyz2191958 发表于 2024-10-13 20:15
VBS 或者可以:

键盘按键代码表【单个字母 按键不用 {}】

如何让vbs的键盘模拟只对指定窗口生效呢?运行脚本的时候通常会有意外,使得指定的窗口失去焦点导致模拟键盘输到了其他窗口
作者: nttwqz    时间: 2024-10-13 22:37
这又何苦呢?一搜一大堆现成改好的,你又何必没事给高手找活干,他们也是很忙的,难不成修改的都有bug?非点一下这种才正常???

若想学破解,某音就有人直播教学反汇编。。。
作者: 527104427    时间: 2024-10-13 22:58
本帖最后由 527104427 于 2024-10-14 07:05 编辑

不废话,直接上代码,用PECMD运行totalcmd,全自动点击。
如果干完活不想杀掉PECMD,则用 exec -incmd pecmd load "C:\abcd.wcs" 调用。

以下代码保存为abcd.wcs
#code=936T950
set^ ForceLocal=1
set^ EnviMode=1
set$ nl=0d 0a

set wm_lbuttonDown=0x0201
set wm_lbuttonUp=0x0202

exec* -cmd::*1:CloseTotalcmdMsg -pid:Pid ret="C:\Users\Administrator\Desktop\tc1150x64_b1\INSTALL\TOTALCMD64.EXE"   //替换成要打开的目标程序
exit

_sub CloseTotalcmdMsg
        find --forpid:%Pid% --class:TNASTYNAGSCREEN --wid* Wid,
        ifex $%Wid%>0,
        {
                set @@Visible=?%Wid%:OK
                ifex $%OK%<1, exit
                find --forpid:%Pid% --wid*@%Wid% Str,
                sed -ex -ni ;;Line1=?,\bWindow\b\d%nl%,,Str
                ifex $%Line1%>0,
                {
                        read -*,%Line1%,ButtonStr1,Str
                        mstr* * ButtonId1=<8>ButtonStr1
                        sed -ex -ni ;;Line2=?,\bButton\b&%ButtonId1%%nl%,,Str
                        ifex $%Line2%>0,
                        {
                                read -*,%Line2%,ButtonStr2,Str
                                mstr* * ButtonId2=<2>ButtonStr2
                                set @@postmsg=%ButtonId2%;%wm_lbuttonDown%;0;0
                                set @@postmsg=%ButtonId2%;%wm_lbuttonUp%;0;0
                                wait 500
                                kill *force *%__pid%  //自杀,领盒饭
                        }
                }
        }
_end




作者: 2012fengxi    时间: 2024-10-13 23:07
527104427 发表于 2024-10-13 22:58
不废话,直接上代码,用PECMD运行totalcmd,全自动点击。
如果干完活不想杀掉PECMD,则用 exec -incmd pec ...

实测没有自动点击
作者: 527104427    时间: 2024-10-13 23:30
2012fengxi 发表于 2024-10-13 23:07
实测没有自动点击

可能点击有点快了,加两句判断试下,上面红色代码就是。
再一个有可能是PECMD版本不是最新的,以上代码基于最新版PECMD编写。
作者: nttwqz    时间: 2024-10-14 00:13
实在不太清楚楼主这么做的原因,既然5大出手了,我再来个NSIS版本,PECMD基本不会。
先运行TC,再运行跳过程序就好,实测无需延迟等待TC启动。

TC_SKIP_Welcome.7z (30.68 KB, 下载次数: 1)

TC_SKIP_Welcome_源码.7z (700 Bytes, 下载次数: 5)


作者: wang1126    时间: 2024-10-14 06:25
谢谢5,8楼分享
作者: austere    时间: 2024-10-14 06:45
我觉得还是用AU3比较简单,容易实现

作者: yyz2191958    时间: 2024-10-14 06:50
527104427 发表于 2024-10-13 22:58
不废话,直接上代码,用PECMD运行totalcmd,全自动点击。
如果干完活不想杀掉PECMD,则用 exec -incmd pec ...

助人为乐
作者: yyz2191958    时间: 2024-10-14 06:50
nttwqz 发表于 2024-10-14 00:13
实在不太清楚楼主这么做的原因,既然5大出手了,我再来个NSIS版本,PECMD基本不会。
先运行TC,再运行跳过 ...

好人
作者: martin313    时间: 2024-10-14 08:37
yyz2191958 发表于 2024-10-13 20:15
VBS 或者可以:

键盘按键代码表【单个字母 按键不用 {}】

专家!
作者: 4109958    时间: 2024-10-14 12:21
谢谢分享
作者: tt911    时间: 2024-10-14 12:26
这玩意还真用AHK写过:
第1得到三个标签页的名称
第2定义三个变量
第3用得到的与三变量比较,为真就点到了。

作者: 2012fengxi    时间: 2024-10-14 13:40
nttwqz 发表于 2024-10-14 00:13
实在不太清楚楼主这么做的原因,既然5大出手了,我再来个NSIS版本,PECMD基本不会。
先运行TC,再运行跳过 ...

这个可以,跟帖子上的au3代码差不多效果
作者: 2012fengxi    时间: 2024-10-14 13:41
本帖最后由 2012fengxi 于 2024-10-14 13:43 编辑
527104427 发表于 2024-10-13 23:30
可能点击有点快了,加两句判断试下,上面红色代码就是。
再一个有可能是PECMD版本不是最新的,以上代码 ...

修改的已经可以了,PECMD写的代码可读性不如au3,是我愚钝了
作者: 孟仁飞    时间: 2024-10-14 17:56
学习
作者: 527104427    时间: 2024-10-14 19:03
2012fengxi 发表于 2024-10-14 13:41
修改的已经可以了,PECMD写的代码可读性不如au3,是我愚钝了

实用性强就行了,其它都是浮云。在我看来,除了C语言,其它语言都可以归为同一类。
主要是PECMD太方便了,一个记事本即可修改,也不用费劲编译,简直是行走的IDE
作者: 82247888ok    时间: 2024-10-15 09:41
学习一下,谢谢分享




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3