无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 678|回复: 21
打印 上一主题 下一主题

[求助] 怎么获取窗口某控件的字符串?

[复制链接]
跳转到指定楼层
1#
发表于 2024-10-13 19:19:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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)



2#
发表于 2024-10-13 20:15:03 | 只看该作者
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里面要两个:%%】

点评

专家!  详情 回复 发表于 2024-10-14 08:37
如何让vbs的键盘模拟只对指定窗口生效呢?运行脚本的时候通常会有意外,使得指定的窗口失去焦点导致模拟键盘输到了其他窗口  详情 回复 发表于 2024-10-13 22:05
回复

使用道具 举报

3#
发表于 2024-10-13 22:05:51 来自手机 | 只看该作者
yyz2191958 发表于 2024-10-13 20:15
VBS 或者可以:

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

如何让vbs的键盘模拟只对指定窗口生效呢?运行脚本的时候通常会有意外,使得指定的窗口失去焦点导致模拟键盘输到了其他窗口
回复

使用道具 举报

4#
发表于 2024-10-13 22:37:15 | 只看该作者
这又何苦呢?一搜一大堆现成改好的,你又何必没事给高手找活干,他们也是很忙的,难不成修改的都有bug?非点一下这种才正常???

若想学破解,某音就有人直播教学反汇编。。。
回复

使用道具 举报

5#
发表于 2024-10-13 22:58:32 | 只看该作者
本帖最后由 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



点评

助人为乐  详情 回复 发表于 2024-10-14 06:50
实测没有自动点击  详情 回复 发表于 2024-10-13 23:07
赞一个  发表于 2024-10-13 23:07

评分

参与人数 1无忧币 +3 收起 理由
yyz2191958 + 3

查看全部评分

回复

使用道具 举报

6#
 楼主| 发表于 2024-10-13 23:07:50 | 只看该作者
527104427 发表于 2024-10-13 22:58
不废话,直接上代码,用PECMD运行totalcmd,全自动点击。
如果干完活不想杀掉PECMD,则用 exec -incmd pec ...

实测没有自动点击

点评

可能点击有点快了,加两句判断试下,上面红色代码就是。 再一个有可能是PECMD版本不是最新的,以上代码基于最新版PECMD编写。  详情 回复 发表于 2024-10-13 23:30
回复

使用道具 举报

7#
发表于 2024-10-13 23:30:27 | 只看该作者
2012fengxi 发表于 2024-10-13 23:07
实测没有自动点击

可能点击有点快了,加两句判断试下,上面红色代码就是。
再一个有可能是PECMD版本不是最新的,以上代码基于最新版PECMD编写。

点评

修改的已经可以了  详情 回复 发表于 2024-10-14 13:41
回复

使用道具 举报

8#
发表于 2024-10-14 00:13:41 | 只看该作者
实在不太清楚楼主这么做的原因,既然5大出手了,我再来个NSIS版本,PECMD基本不会。
先运行TC,再运行跳过程序就好,实测无需延迟等待TC启动。

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

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

点评

这个可以,跟帖子上的au3代码差不多效果  详情 回复 发表于 2024-10-14 13:40
好人  详情 回复 发表于 2024-10-14 06:50

评分

参与人数 1无忧币 +3 收起 理由
yyz2191958 + 3

查看全部评分

回复

使用道具 举报

9#
发表于 2024-10-14 06:25:43 | 只看该作者
谢谢5,8楼分享
回复

使用道具 举报

10#
发表于 2024-10-14 06:45:04 | 只看该作者
我觉得还是用AU3比较简单,容易实现
回复

使用道具 举报

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

助人为乐
回复

使用道具 举报

12#
发表于 2024-10-14 06:50:52 | 只看该作者
nttwqz 发表于 2024-10-14 00:13
实在不太清楚楼主这么做的原因,既然5大出手了,我再来个NSIS版本,PECMD基本不会。
先运行TC,再运行跳过 ...

好人
回复

使用道具 举报

13#
发表于 2024-10-14 08:37:46 | 只看该作者
yyz2191958 发表于 2024-10-13 20:15
VBS 或者可以:

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

专家!
回复

使用道具 举报

14#
发表于 2024-10-14 12:21:24 | 只看该作者
谢谢分享
回复

使用道具 举报

15#
发表于 2024-10-14 12:26:14 | 只看该作者
这玩意还真用AHK写过:
第1得到三个标签页的名称
第2定义三个变量
第3用得到的与三变量比较,为真就点到了。
回复

使用道具 举报

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

这个可以,跟帖子上的au3代码差不多效果
回复

使用道具 举报

17#
 楼主| 发表于 2024-10-14 13:41:46 | 只看该作者
本帖最后由 2012fengxi 于 2024-10-14 13:43 编辑
527104427 发表于 2024-10-13 23:30
可能点击有点快了,加两句判断试下,上面红色代码就是。
再一个有可能是PECMD版本不是最新的,以上代码 ...

修改的已经可以了,PECMD写的代码可读性不如au3,是我愚钝了

点评

实用性强就行了,其它都是浮云。在我看来,除了C语言,其它语言都可以归为同一类。 主要是PECMD太方便了,一个记事本即可修改,也不用费劲编译,简直是行走的IDE  详情 回复 发表于 2024-10-14 19:03
回复

使用道具 举报

18#
发表于 2024-10-14 17:56:10 | 只看该作者
学习
回复

使用道具 举报

19#
发表于 2024-10-14 19:03:28 | 只看该作者
2012fengxi 发表于 2024-10-14 13:41
修改的已经可以了,PECMD写的代码可读性不如au3,是我愚钝了

实用性强就行了,其它都是浮云。在我看来,除了C语言,其它语言都可以归为同一类。
主要是PECMD太方便了,一个记事本即可修改,也不用费劲编译,简直是行走的IDE
回复

使用道具 举报

20#
发表于 2024-10-15 09:41:44 | 只看该作者
学习一下,谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-1 11:27

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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