无忧启动论坛

标题: [已解决]Pecmd.exe怎样才能显示原来隐藏的程序窗口?谢谢 [打印本页]

作者: yyz2191958    时间: 4 天前
标题: [已解决]Pecmd.exe怎样才能显示原来隐藏的程序窗口?谢谢
本帖最后由 yyz2191958 于 2025-4-7 06:57 编辑

问题1已解决(显示原来隐藏的程序窗口):
exec !程序路径(含扩展名)
wait 3000
call $--ret:hwnd user32.dll,FindWindowW,ConsoleWindowClass,
窗口标题(完整)  // 查找窗口句柄
call $--ret:ret user32.dll,ShowWindow,#%hwnd%,#1
  // 显示并激活窗口
========================

问题2已解决(置顶和取消置顶):
EXEC !程序路径(含扩展名)                                      // 隐藏运行程序
WAIT 3000                                        // 等待 3 秒
CALL $--ret:hwnd user32.dll,FindWindowW,ConsoleWindowClass,窗口标题(完整)  // 查找窗口句柄
CALL $--ret:ret user32.dll,ShowWindow,#%hwnd%,#1   // 显示并激活窗口
WAIT 2000                                        // 等待 2 秒
CALL $--ret:ret user32.dll,SetWindowPos,#%hwnd%,#-1,#0,#0,#0,#0,#0x0003  // 置顶窗口
WAIT 5000                                        // 等待 5 秒
CALL $--ret:ret user32.dll,SetWindowPos,#%hwnd%,#-2,#0,#0,#0,#0,#0x0003  // 取消置顶
EXIT                                             // 退出 Pecmd
========================
原来的问题:
Pecmd.exe可以用 * 或者 ! 隐藏程序窗口

1.那么,Pecmd.exe怎样才能显示原来隐藏的程序窗口(就是取消隐藏,并激活原来隐藏的窗口)?

2.另外,Pecmd.exe可以使程序窗口置顶吗(又怎样取消置顶)?

谢谢
======================================
例如:
隐藏运行“00.bat”(exec !00.bat)
“00.bat”在后台隐藏运行一定时间后,再显示“00.bat”窗口




作者: martin313    时间: 4 天前
看不懂楼主的问题

取消隐藏的话,在pecmd.ini中,把 ! 或者 @ 删了,不就解决了么
作者: yyz2191958    时间: 4 天前
martin313 发表于 2025-4-6 12:17
看不懂楼主的问题

取消隐藏的话,在pecmd.ini中,把 ! 或者 @ 删了,不就解决了么

一个例子:
EXEC *X:\Users\Default\Desktop\00.bat
...
00.bat 隐藏运行(后台操作)
...
显示:00.bat 窗口
作者: szwp    时间: 4 天前
yyz2191958 发表于 2025-4-6 12:24
一个例子:
EXEC *X:%users\Default\Desktop\00.bat
...

将*删了
作者: martin313    时间: 4 天前
yyz2191958 发表于 2025-4-6 12:24
一个例子:
EXEC *X:%users\Default\Desktop\00.bat
...

既然知道 加 * 是隐藏,那删了就不会了???
作者: yyz2191958    时间: 4 天前
szwp 发表于 2025-4-6 12:28
将*删了

我还是没有表达清楚:
一个wcs文件:
EXEC *X:\Users\Default\Desktop\00.bat
//...
//00.bat 隐藏运行(后台操作)
//...
//显示:00.bat 窗口
作者: 527104427    时间: 4 天前
你们都会错意了,他是想把隐藏和激活分别做成一个选项
作者: yyz2191958    时间: 4 天前
本帖最后由 yyz2191958 于 2025-4-6 12:39 编辑
martin313 发表于 2025-4-6 12:32
既然知道 加 * 是隐藏,那删了就不会了???

我是需要隐藏运行“00.bat”
“00.bat”在后台运行一定时间后,再显示“00.bat”窗口
作者: martin313    时间: 4 天前
yyz2191958 发表于 2025-4-6 12:37
我是需要隐藏运行“00.bat”
“00.bat”在后台运行一定时间后,显示“00.bat”窗口


那请7楼的老大帮你
作者: yyz2191958    时间: 4 天前
527104427 发表于 2025-4-6 12:35
你们都会错意了,他是想把隐藏和激活分别做成一个选项

我是需要隐藏运行“00.bat”
“00.bat”在后台运行一定时间后,再显示“00.bat”窗口
作者: yzszh64    时间: 4 天前
感谢各位。
作者: hua_wuxin    时间: 4 天前
00.bat:
title 特特特殊殊殊窗口标题
@pause

pecmd:
exec !00.bat
wait 3000
call $--ret:hwnd user32.dll,FindWindowW,ConsoleWindowClass,特特特殊殊殊窗口标题
call $--ret:ret user32.dll,ShowWindow,#%hwnd%,#1
作者: yyz2191958    时间: 4 天前
hua_wuxin 发表于 2025-4-6 16:16
00.bat:
title 特特特殊殊殊窗口标题
@pause

我试一下 谢谢
作者: holley2008    时间: 4 天前
本帖最后由 holley2008 于 2025-4-6 16:49 编辑

Pecmd.exe 的设计更偏向于 WinPE 环境下的命令执行和简单窗口管理,无法直接实现置顶或取消置顶。
【AI不靠谱,你做小白鼠】
  1. [PECMD]
  2. EXEC !00.bat                                      // 隐藏运行 00.bat
  3. WAIT 3000                                        // 等待 3 秒
  4. CALL $--ret:hwnd user32.dll,FindWindowW,ConsoleWindowClass,特特特殊殊殊窗口标题  // 查找窗口句柄
  5. CALL $--ret:ret user32.dll,ShowWindow,#%hwnd%,#1  // 显示并激活窗口 (SW_SHOWNORMAL)
  6. WAIT 2000                                        // 等待 2 秒
  7. CALL $--ret:ret user32.dll,SetWindowPos,#%hwnd%,#-1,#0,#0,#0,#0,#0x0003  // 置顶窗口
  8. WAIT 5000                                        // 等待 5 秒
  9. CALL $--ret:ret user32.dll,SetWindowPos,#%hwnd%,#-2,#0,#0,#0,#0,#0x0003  // 取消置顶
  10. EXIT                                             // 退出 Pecmd
复制代码
  1. [PECMD]
  2. EXEC !00.bat                                      // 隐藏运行 00.bat
  3. WAIT 3000                                        // 等待 3 秒
  4. CALL $--ret:hwnd user32.dll,FindWindowW,ConsoleWindowClass,特特特殊殊殊窗口标题  // 查找窗口
  5. CALL $--ret:ret user32.dll,ShowWindow,#%hwnd%,#1  // 显示窗口
  6. _SUB TopWindow,<0,0,300,200>,特特特殊殊殊窗口标题,,,,-top  // 创建置顶窗口(或尝试控制现有窗口)
  7. CALL TopWindow
  8. WAIT 5000                                        // 等待 5 秒
  9. _SUB NormalWindow,<0,0,300,200>,特特特殊殊殊窗口标题,,,,  // 取消置顶
  10. CALL NormalWindow
  11. EXIT
复制代码


作者: yyz2191958    时间: 4 天前
holley2008 发表于 2025-4-6 16:19
Pecmd.exe 的设计更偏向于 WinPE 环境下的命令执行和简单窗口管理,无法直接实现置顶或取消置顶。

谢谢解答
作者: 红毛樱木    时间: 4 天前
EXEC -pid:变量名

FIND [--sub][--forpid:PID|--fortid:TID] --wid*@[父窗口ID] 变量名,窗口标题//查询*为只前部匹配

ENVI @窗口或控件名称.Visible=[*]数值"设置可见状态;0为不可见,1为可见。
作者: yyz2191958    时间: 4 天前
红毛樱木 发表于 2025-4-6 17:35
EXEC -pid:变量名

FIND [--sub][--forpid:PID|--fortid:TID] --wid*@[父窗口ID] 变量名,窗口标题//查询* ...

我慢慢琢磨 谢谢
作者: qqwwaa    时间: 4 天前
66
作者: hua_wuxin    时间: 4 天前
16楼大佬提示的纯pecmd方法的一种实现,供参考

exec !00.bat
wait 3000
find --wid*@ &results,特特特殊殊殊窗口标题
forx *nl results,r,
{
  mstr* &w=<2>%r%
  envi @@Visible=%w%:1
}
作者: tanchenglong    时间: 4 天前
终于找到了,多谢分享 +++
作者: qqwwaa    时间: 4 天前
655
作者: martin313    时间: 4 天前
楼主,这是干嘛用的?
作者: yyz2191958    时间: 4 天前
martin313 发表于 2025-4-6 20:29
楼主,这是干嘛用的?

学习呀
作者: martin313    时间: 4 天前
yyz2191958 发表于 2025-4-6 21:08
学习呀

哎,不可告人目的
作者: 527104427    时间: 4 天前
martin313 发表于 2025-4-6 21:24
哎,不可告人目的

估计是看小姐姐,又怕老婆发现,所以,写个脚本一闪一闪地看
作者: 俪尚皇    时间: 4 天前
我是来学习的
作者: youxia1220    时间: 4 天前
谢谢分享
作者: wang1126    时间: 3 天前
谢谢楼主分享
作者: guong    时间: 3 天前
来学习学习
作者: yzszh64    时间: 3 天前
谢谢各位。




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