无忧启动论坛

标题: 用 PECMD 实现截屏到桌面几个方案 [打印本页]

作者: 静庵    时间: 前天 21:15
标题: 用 PECMD 实现截屏到桌面几个方案
本帖最后由 静庵 于 2026-2-28 10:38 编辑

ENVI path=%Desktop%
ENVI i=1
THREAD* WAIT 3900
THREAD* TEAM WAIT 3000| SEND #17_,#86_,#86^,#17^    //Ctrl-V
WAIT 200
SEND VK_SNAPSHOT    //#44
WAIT 100
SCRN -cap %path%\Snapshot_%i%.jpg, 1
上面这段代码,可以实现 pecmd 加载截屏到桌面(.ini或 .wcs文件),但只能实现截屏1个,不能连续截屏,
请高手大神修改添加代码,实现连续截屏,文件名依次加1,如截屏_1.jpg,截屏_2.jpg,截屏_3.jpg,......
坛中有代码,但只能在个别PE中可用,有些PE中不能用,比如利用 nircmd,snashop,以及Windows自带的
截图工具,有些PE中或缺少某个文件等,就不能运行。利用纯 pecmd 代码,应该可以避免文件缺失的问题,
PECMD.EXE,每个PE都有。
==================================================================
PE下实现截屏到桌面方案总结
------------------------------------
方案1:527104427 方案(ppll2030 也予提供),pecmd 代码,保存为 .ini 或 .wcs 格式,本人
    测试几个不同版本的10PE、11PE均可使用。
    命令结果:截取全屏 jpg 文件。每运行一次,都会保存在桌面,文件名顺次1,2,3 ....。

set dir=%desktop%
team~ set count=1~ loop #1=1, ifex %dir%\%count%.jpg, calc count=%count% + 1! exit
scrn -cap %dir%\%count%.jpg,1

http://bbs.c3.wuyou.net/forum.php?mod=viewthread&tid=446608
----------------------------------
方案2:本人在 pecmd 社区找到的原始 pecmd 代码,保存为 .ini 或 .wcs 格式,本人测试几个
    不同版本的10PE、11PE均可使用。本人做了简单修改。
    命令结果:截取全屏 jpg 文件,就一个文件保存在桌面,再次运行会覆盖前一次文件。

ENVI path=%Desktop%
ENVI i=1
THREAD* WAIT 3900
THREAD* TEAM WAIT 3000| SEND #17_,#86_,#86^,#17^    //Ctrl-V
WAIT 200
SEND VK_SNAPSHOT    //#44
WAIT 100
SCRN -cap %path%\截屏_%i%.jpg, 1
----------------------------------------------
方案3:苹果有毒提供的代码,批处理格式,本人测试几个不同版本的10PE、11PE均可使用。
    命令结果:截取全屏 jpg 文件,就一个文件保存在桌面,再次运行会覆盖前一次文件。
    也许是本人无知,该代码输出文件是一个黑框截图,不会用。

@echo off
setlocal enabledelayedexpansion
set "basePath=%Desktop%"
set "counter=1"
:checkFile
if exist "%basePath%\!counter!.jpg" (
    set /a counter+=1
    goto checkFile
)
set "finalPath=%basePath%\!counter!.jpg"
PECMD TEAM DATE *space %date%^|SCRN -cap "!finalPath!",0

输出结果:
[attach]572330[/attach][attach]572330[/attach]
-----------------------------------------------------------------------
方案4:baby1277提供的代码,pecmd 格式,本人测试只有 yigeren 11PE可使用。本人
    在论坛下载的其它几个PE未能通过。需要文件 nircmd.exe
    截取全屏 jpg 文件。每运行一次,都会保存在桌面,文件名顺次1,2,3 ....。

也分享下我的收藏,可以添加右键菜单。
---------------------------------------截图到桌面------------------------------------------------
for /f "eol=H tokens=2 delims=SZ" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do cd /d %%i
for /l %%i in (1 1 9) do if not exist 截屏_%%i.bmp set tu=截屏_%%i.bmp&goto tu
:tu
nircmd cmdwait 500 savescreenshot  "~$folder.desktop$\%tu%"

该代码 jiavip 修改为:
-------------------------------------截图到桌面------------------------------------------------
for /f "eol=H tokens=2 delims=SZ" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') do cd /d %%i
set i=1
:tu
if exist 截屏_%i%.bmp set/a i+=1&goto tu
set tu=截屏_%i%.bmp
nircmd cmdwait 500 savescreenshot  "~$folder.desktop$\%tu%"

http://bbs.c3.wuyou.net/forum.php?mod=viewthread&tid=446608
---------------------------------------------------------------------
还有 martin313 老师提供的几个方案,本人小白不会用。
有兴趣的可以看看:http://bbs.c3.wuyou.net/forum.ph ... d&tid=449921&extra=--------------------------------------------------------------------------------------------------

2012qnmd 老师的界面版:原版代码


ENVI^  ForceLocal=1
LOGS * X.LOG
SET &fn=screen.png
SET &wid=0
CALL @WIN1
_SUB WIN1,W449H220,截图,
    LABE -VCENTER LABE1,L12T42W68H30,延时(秒):,,
    EDIT -VCENTER -3D Delay,L84T43W63H30,0,,
    SPIN SPIN1,L156T41W18H34,:0:100,,0x80,0x80
    ITEM ITEM1,L191T141W60H30,抓图, OnDo,
    LABE -VCENTER LABE2,L12T90W48H30,文件名,,
    EDIT -VCENTER -3D wFN,L70T90W335H30,%fn%,,
    ITEM ITEM2,L410T89W21H30,>>,OnBrow,
    LABE -VCENTER -RIGHT LABE3,L229T41W55H30,对象:,,
    EDIT -VCENTER -3D wWid,L291T41W90H30,%wid%,,
_END
_SUB OnBrow
    BROW &&fn,%wFN%,选择一个文件,PNG|*.PNG|BMP|*.BMP|JPG|*.JPG|GIF|*.GIF|TIFF|*.TIFF|所有|*.*
    FIND $%fn%=, EXIT
    ENVI @wFN=%fn%   
_END
_SUB OnDo
    SET &wid=%wWid%
    SET &fn=%wFN%
    FIND $%fn%=, EXIT
    ENVI @this.visable=0
    CALC &&ms=%Delay%
    CALC &ms=%&ms% * 1000#0
    IFEX $%ms%<0, SET ms=0
    CALC #&ms=%&ms% + 10
    WAIT %&ms%
    SCRN -cap %fn%,%wid%
    WAIT 10
    ENVI @this.visable=1
_END


运行后弹出界面:



修改了一下:

fnvi^  ForceLocal=1
set &capd=%DeskTop%
set &fn=截屏
set &wid=0
set &ext=jpg
call @win1
_sub win1,w315h166,截图工具,
    labe labe3,L20T26W60H20,保存类型:,,
    list lext,L80T21W100H20,png|bmp|jpg|gif|tiff,fnvi @wFN=%&capd%\%fn%.%lext%,%ext%
    labe -vcenter labe4,L20T50W90H30,保存位置及文件:,,
    edit -vcenter -3d wFN,L20T80W230H30,%&capd%\%fn%.%ext%,NAME fn=%wFN%,
    item Item2,L260T83W30H26,>>>,OnBrow,
    item Item1,L223T17W60H30,截图, OnDo,
_end
_sub OnBrow
    brow &&capdir,*%capd%,选择一个文件夹
    find $%capdir%=, exit
    team fnvi &capd=%capdir%|fnvi @wFN=%&capd%\%fn%.%ext%
_end
_sub OnDo
    set &afn=%wFN%
    find $%afn%=, exit
    fnvi @this.visable=0
    calc &&ms=1
    ifex $%ms%<0, set ms=0
    calc #&ms=%&ms% + 10
    wait %&ms%
    scrn -cap %afn%,%wid%
    wait 10
    fnvi @this.visable=1
_end


-----------------------------------------------------------

5大的方案非常完美:

//hotk F11, exec -incmd pecmd load "%CurFile%"*截屏
hotk F11, load "%CurFile%"*截屏
_sub 截屏
        set dir=%desktop%
        team~ set count=1~ loop #1=1, ifex %dir%\截屏_%count%.jpg, calc count=%count% + 1! exit
        scrn -cap %dir%\截屏_%count%.jpg
        mess 已截屏保存为:截屏_%count%.jpg @完成 #OK *2000
_end



作者: 忧心的启    时间: 前天 21:36
可以把PECMD打包进程序,然后编个可设置执行菜单。认坛有高手,期待搞搞。
作者: martin313    时间: 前天 21:47

ENVI path=%Desktop%
ENVI i=1
ENVI &Running=0  // 0=停止状态, 1=运行状态

// 注册热键 F11 开始截屏(同时重置计数器)
HOTK F11, TEAM ENVI &Running=1| ENVI i=1| MESS 开始连续截屏,从第1张开始... @提示 #OK *2000

// 注册热键 F12 停止截屏
HOTK F12, TEAM ENVI &Running=0| MESS 截屏已停止,共截取了 %i% 张图片。 @提示 #OK *3000

LOOP #1 = 1,
{
    // 检查是否处于运行状态
    IFEX #%&Running% = 1,
    {
        THREAD* WAIT 3900
        THREAD* TEAM WAIT 3000| SEND #17_,#86_,#86^,#17^    //Ctrl-V
        WAIT 200
        SEND VK_SNAPSHOT    //#44
        WAIT 100
        SCRN -cap %path%\截屏_%i%.jpg, 1
        
        // 计数器加1
        CALC i=%i% + 1
        
        // 每次截屏后等待一定时间
        WAIT 2000
    }
   
    // 如果处于停止状态,短暂等待后继续循环
    WAIT 100
}
作者: 静庵    时间: 前天 21:51
martin313 发表于 2026-2-26 21:47
ENVI path=%Desktop%
ENVI i=1
ENVI &Running=0  // 0=停止状态, 1=运行状态

神啊,不过不是要自动连续截屏,要每运行一次截一张,文件名序号连续。
作者: Delightful    时间: 前天 22:01
静庵 发表于 2026-2-26 21:51
神啊,不过不是要自动连续截屏,要每运行一次截一张,文件名序号连续。

弄好后能分享一下吗;谢谢;
作者: ppll2030    时间: 前天 22:04
运行一次,截图一次,自动以1、2、3数字依次命名
5大的原版命令

  1. set dir=%desktop%
  2. team~ set count=1~ loop #1=1, ifex %dir%\%count%.jpg, calc count=%count% + 1! exit
  3. scrn -cap %dir%\%count%.jpg
复制代码

作者: 静庵    时间: 前天 22:19
ppll2030 发表于 2026-2-26 22:04
运行一次,截图一次,自动以1、2、3数字依次命名
5大的原版命令

好像不行啊,加载没有反应
作者: martin313    时间: 前天 22:23
静庵 发表于 2026-2-26 21:51
神啊,不过不是要自动连续截屏,要每运行一次截一张,文件名序号连续。


ENVI path=%Desktop%
ENVI i=1

// 读取上次保存的序号(如果存在序号记录文件)
IFEX %path%\截屏计数.ini, LOAD %path%\截屏计数.ini

// 注册热键 F11 执行截屏
HOTK F11, CALL 截屏

// 子过程:执行截屏操作
_SUB 截屏
    // 执行原有的截屏操作
    THREAD* WAIT 3900
    THREAD* TEAM WAIT 3000| SEND #17_,#86_,#86^,#17^    //Ctrl-V
    WAIT 200
    SEND VK_SNAPSHOT    //#44
    WAIT 100
    SCRN -cap %path%\截屏_%i%.jpg, 1
   
    // 显示截屏信息
    MESS 已截取第 %i% 张图片:截屏_%i%.jpg @截屏完成 #OK *2000
   
    // 计数器加1
    CALC i=%i% + 1
   
    // 保存当前序号到文件(便于下次运行脚本时继续计数)
    WRIT %path%\截屏计数.ini, $+0, ENVI i=%i%
_END

// 保持脚本运行,等待热键触发
WAIT - -1
作者: ppll2030    时间: 前天 22:23
本帖最后由 ppll2030 于 2026-2-26 22:28 编辑
静庵 发表于 2026-2-26 22:19
好像不行啊,加载没有反应

保存为wcs。运行就可以啦


作者: a66    时间: 前天 22:27
看看
作者: martin313    时间: 前天 22:30
本帖最后由 martin313 于 2026-2-26 22:33 编辑

或者按照6楼的:

set dir=%desktop%

// 注册热键 F11 执行截屏
HOTK F11, CALL 截屏

_SUB 截屏
    team~ set count=1~ loop #1=1, ifex %dir%\截屏_%count%.jpg, calc count=%count% + 1! exit
    scrn -cap %dir%\截屏_%count%.jpg, 1
    WAIT 100
    MESS 已截屏保存为:截屏_%count%.jpg @完成 #OK *2000
_END

// 保持脚本运行
WAIT - -1
======================================
以上均来自 deepseek

作者: 静庵    时间: 前天 22:33
martin313 发表于 2026-2-26 22:23
ENVI path=%Desktop%
ENVI i=1

没有反应
作者: 静庵    时间: 前天 22:39
ppll2030 发表于 2026-2-26 22:23
保存为wcs。运行就可以啦

我现在就在pe下回帖,保存为wcs或ini都没有反应的
作者: 静庵    时间: 前天 22:51
ppll2030 发表于 2026-2-26 22:23
保存为wcs。运行就可以啦

可以了,我复制的时候少了一个字符,现在可以了,并换了一个PE 也没有问题,多谢
作者: 静庵    时间: 前天 22:53
martin313 发表于 2026-2-26 22:30
或者按照6楼的:

set dir=%desktop%

这个加载仍然没有反应
作者: 忧心的启    时间: 前天 22:54
ppll2030 发表于 2026-2-26 22:23
保存为wcs。运行就可以啦

我也不行,pe里,顺至上面那个也不行。这是什么原因?难道pecmd有版本区分?你用的是那版的。
作者: 静庵    时间: 前天 22:59
忧心的启 发表于 2026-2-26 22:54
我也不行,pe里,顺至上面那个也不行。这是什么原因?难道pecmd有版本区分?你用的是那版的。

6#的我的可以的。

作者: 忧心的启    时间: 前天 23:01
静庵 发表于 2026-2-26 22:59
6#的我的可以的。

那明天再试了,晚了睡觉觉了。
作者: martin313    时间: 前天 23:11
本帖最后由 martin313 于 2026-2-26 23:17 编辑
静庵 发表于 2026-2-26 22:59
6#的我的可以的。

我测试了也没反应,说是尚未实现;应该是pecmd的版本不支持的原因。我的PE里内置的Imagine,也支持屏幕截屏
作者: 邪恶海盗    时间: 前天 23:32
何必呢,直接内置一个几百K的截图工具不香么,注册个快捷键即可...


二○二六年二月二十六日
作者: martin313    时间: 前天 23:58
本帖最后由 martin313 于 2026-2-27 00:40 编辑

我的PE中,64位的,输入命令:"%ProgramFiles%\Imagine\Imagine64.exe" /capture

就可以调出截屏窗口


// 注册F11热键,根据系统架构自动选择Imagine版本
IFEX $%ProgramW6432%<>,
{
    HOTK #122,PECMD EXEC "%ProgramFiles%\Imagine\Imagine64.exe" /capture  `F11 ScreenShot
}!
{
    HOTK #122,PECMD EXEC "%ProgramFiles%\Imagine\Imagine.exe" /capture  `F11 ScreenShot
}



// 注册F11热键,根据系统架构自动选择Imagine版本
REGI $HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE, ARCH
IFEX $%ARCH%=AMD64,
{
    ENVI IMG_PATH=%ProgramFiles%\Imagine\Imagine64.exe
}!
{
    ENVI IMG_PATH=%ProgramFiles%\Imagine\Imagine.exe
}
HOTK #122,PECMD EXEC "%IMG_PATH%" /capture  `F11 ScreenShot


作者: gordonhf    时间: 昨天 00:25
围观
作者: ebaqiang    时间: 昨天 00:56
我也在等楼下回帖
作者: 2314840143    时间: 昨天 01:42
围观
作者: 静庵    时间: 昨天 06:42
martin313 发表于 2026-2-26 23:58
我的PE中,64位的,输入命令:"%ProgramFiles%\Imagine\Imagine64.exe" /capture

就可以调出截屏窗口

不知何故,我的PE中,注册热键也没有反应,与PE有关?
作者: martin313    时间: 昨天 06:54
静庵 发表于 2026-2-27 06:42
不知何故,我的PE中,注册热键也没有反应,与PE有关?

判断版本,存在问题。建议用注册表法来判断,或者直接用一条命令,不要判断:

HOTK #122,PECMD EXEC "%ProgramFiles%\Imagine\Imagine64.exe" /capture  `F11 ScreenShot
作者: 静庵    时间: 昨天 07:18
martin313 发表于 2026-2-27 06:54
判断版本,存在问题。建议用注册表法来判断,或者直接用一条命令,不要判断:

HOTK #122,PECMD EXEC " ...

感谢老师辛劳,我就是小白一个,什么都不懂的
作者: ztc999    时间: 昨天 07:39
感谢分享
作者: smile_z    时间: 昨天 08:56
学习一下
作者: martin313    时间: 昨天 09:05
set dir=%desktop%
team~ set count=1~ loop #1=1, ifex %dir%\%count%.jpg, calc count=%count% + 1! exit
scrn -cap %dir%\%count%.jpg


这个方案,在我发布的PE中,好像不行。pecmd.exe版本不支持scrn命令,要换成最新版的pecmd.exe也许可以
作者: 忧心的启    时间: 昨天 09:14
martin313 发表于 2026-2-27 09:05
set dir=%desktop%
team~ set count=1~ loop #1=1, ifex %dir%\%count%.jpg, calc count=%count% + 1! exi ...

我这也没反应,不懂是不是pecmd的问题。真奇怪啊。
作者: view520    时间: 昨天 09:15
感谢分享!
作者: 忧心的启    时间: 昨天 09:29
martin313 发表于 2026-2-27 09:05
set dir=%desktop%
team~ set count=1~ loop #1=1, ifex %dir%\%count%.jpg, calc count=%count% + 1! exi ...

已经搞清楚了,是pecmd版本问题,之前用的是V201201.88.05.86 x64不行,换了V201201.88.05.94 X64就行了
作者: wn168cn@163.com    时间: 昨天 13:56
支持分享
作者: guong    时间: 昨天 15:05
来学习下
作者: fegr    时间: 昨天 15:28
感谢分享
作者: 527104427    时间: 昨天 19:16
ENVI path=%Desktop%
ENVI i=1
THREAD* WAIT 3900
THREAD* TEAM WAIT 3000| SEND #17_,#86_,#86^,#17^    //Ctrl-V
WAIT 200
SEND VK_SNAPSHOT    //#44
WAIT 100
SCRN -cap %path%\截屏_%i%.jpg, 1
这段代码的逻辑就有问题:
1.截屏的逻辑是,先发送VK_SNAPSHOT进行截屏,再打开画图软件,再Ctrl+V,才会把截屏复制到画图软件,但不会自动保存。如下:
     SEND VK_SNAPSHOT
     EXEC mspaint.exe
     WAIT 1000
     SEND #17_,#86_,#86^,#17^
2.SCRN -cap %path%\截屏_%i%.jpg, 1  就是截屏,且有保存动作,跟上面的功能重复。
3.THREAD* WAIT 3900 是什么鬼,多线程WAIT?等于没有WAIT,没有任何意义。


作者: 静庵    时间: 昨天 21:11
本帖最后由 静庵 于 2026-2-27 21:19 编辑
527104427 发表于 2026-2-27 19:16
这段代码的逻辑就有问题:
1.截屏的逻辑是,先发送VK_SNAPSHOT进行截屏,再打开画图软件,再Ctrl+V,才会 ...

深奥了。
   ENVI path=%Desktop%
   SCRN -cap %path%\截屏_%i%.jpg, 1
5大的意思是仅上面两行代码就可以实现截屏,并保存桌面?但不会依次保存
而: SEND VK_SNAPSHOT
        EXEC mspaint.exe
        WAIT 1000
        SEND #17_,#86_,#86^,#17^
则截屏到画图,用画图编辑保存?
若此,m大的代码:
   set dir=%desktop%

   // 注册热键 F11 执行截屏
   HOTK F11, CALL 截屏
_SUB 截屏
    team~ set count=1~ loop #1=1, ifex %dir%\截屏_%count%.jpg, calc count=%count% + 1! exit
    scrn -cap %dir%\截屏_%count%.jpg, 1
    WAIT 100
    MESS 已截屏保存为:截屏_%count%.jpg @完成 #OK *2000
_END

// 保持脚本运行
WAIT - -1
应该是可行的,但为何我在 PE 中加载没有反应呢

作者: 2012qnmd    时间: 昨天 21:21
这个很多年前,我和作者提过这个需求,作者加了截图参数,也给力几个现成的wcs
作者: 2012qnmd    时间: 昨天 21:23
截图gui.wcs
SCRN  -gui

截图snapsot.wcs
ENVI^  ForceLocal=1
//IFEX X.LOG, LOGS * X.LOG
SET &capd=%DeskTop%
FIND $%capd%=, SET capd=%CurDir%
SET &fn=屏幕截图####
SET &wid=0:0
set &ext=PNG
SET &fid=1
//系统设置大字体时缩小界面字体
TEAM ENVI &Font_Size=| REGI #HKCU\Control Panel\Desktop\WindowMetrics\AppliedDPI,&&Font_Size
IFEX $%&Font_Size%=0x78, ENVI &&Font_Size=7! ENVI &&Font_Size=9  // 0x60为100%,0x78为125%,0x90为150%
ENVI &&Font_Cmd=IFEX %windir%\fonts\simsun*, ENVI @this.Font=%&Font_Size%:simsun! ENVI @this.Font=%&Font_Size%
CALL @WIN1

_SUB WIN1,W535H225,截图,
    %&Font_Cmd%
    LABE -VCENTER -RIGHT LABE1,L12T38W60H24,延时(秒):,,
    EDIT -VCENTER -3D -RIGHT Delay,L74T38W40H24,0,,
    SPIN SPIN1,L116T39W18H22,:0:100,,0x80,0x80
    LABE -VCENTER -RIGHT LABE2,L150T38W40H24,对象:,,
    EDIT -VCENTER -3D wWid,L192T38W50H24,%wid%,,
    LABE -VCENTER -RIGHT LABE3,L267T38W58H24,保存类型:,,
    LIST lEXT,L326T40W55H20,PNG|BMP|JPG|GIF|TIFF,OnEXT,%ext%,
    LABE -VCENTER LABE4,L12T90W90H30,保存位置及文件,,
    EDIT -VCENTER -3D wFN,L107T90W380H30,%&capd%\%fn%.%ext%,NAME fn=%wFN%,
    ITEM ITEM2,L492T89W25H30,>>,OnBrow,
//    ITEM ITEM1,L224T131W80H50,截图, OnCap,
    ITEM ITEM1,L160T130W80H50,截图, OnCap,
    ENVI @wFN.MSG=0x02A1: Mouse_In 文件名模板,####为自动编号\n$H $M $D $H $N $S 依次为年月日时分秒
    ENVI @wFN.MSG=0x02A3: TIPS *
    LABE -VCENTER -RIGHT LABE5,L386T38W50H24,编号:,,
    EDIT -VCENTER -3D -RIGHT wFID,L457T38W40H24,,%fid%,
    SPIN SPINFID,L499T39W18H22,:0:100:%fid%,,0x80,0x80
    ITEM ITEM3,L300T130W80H50,退出, kill @WIN1
_END
_SUB Mouse_In
    TEAM ENVI @@Cur=?&&x;&&y| TIPS* %*,5000,1,@AL%&x%T%&y%
_END

_SUB OnBrow
    BROW &&capdir,*%capd%,选择一个文件夹
    FIND $%capdir%=, EXIT
    ENVI &capd=%capdir%
    NAME fn=%wFN%
    FEXT ext=%wFN%
    ENVI @wFN=%&capd%\%fn%.%ext%
_END

_SUB OnEXT
    FDIR capd=%wFN%
    NAME fn=%wFN%
    ENVI @wFN=%&capd%\%fn%.%lEXT%
_END

_SUB OnCap
    SET &wid=%wWid%
    SET &afn=%wFN%
    ENVI @this.visable=0
    CALC &&ms=%Delay%
    CALC &ms=%&ms% * 1000#0
    IFEX $%ms%<0, SET ms=0
    CALC #&ms=%&ms% + 2
    WAIT 300  //最少200毫秒
    FIND $%wFN%<>,
    {*  WAIT %&ms%
        NAME &&nm=%afn%
        FEXT &&ext=%afn%
        FIND $%ext%<>, SET ext=.%ext%
        FDIR &&dir1=%afn%
        SET fid=%wFID%
        CALC #fid=%fid%
        RSTR &&fid5=5,0000%fid%
        RSTR &&fid4=4,0000%fid%
        RSTR &&fid3=3,0000%fid%
        RSTR &&fid2=2,0000%fid%
        RSTR &&fid1=1,0000%fid%
        DATE *space &&dat  //2015 9 25 5 10 57 22 46
        MSTR &&Y,&&M,&&D,&&H,&&N,&&S=<1><2><3><5><6><7>%&dat%
        SED &nm=1,#######*,%fid%,%nm%  //6个以上
        SED &nm=1,#####,%fid5%,%nm%
        SED &nm=1,####,%fid4%,%nm%
        SED &nm=1,###,%fid3%,%nm%
        SED &nm=1,##,%fid2%,%nm%
        SED &nm=1,#,%fid1%,%nm%
        SED &nm=0,$Y,%Y%,%nm%
        SED &nm=0,$M,%M%,%nm%
        SED &nm=0,$D,%D%,%nm%
        SED &nm=0,$H,%H%,%nm%
        SED &nm=0,$N,%N%,%nm%
        SED &nm=0,$S,%S%,%nm%
        SET afn=%dir1%\%nm%%ext%
        SCRN -cap %afn%,%wid%
        CALC #fid=%fid%+1
        ENVI @SPINFID.VAL=%fid%
        ENVI @wFID=%fid%
    }
    WAIT 10
    ENVI @this.visable=1
_END


作者: 2012qnmd    时间: 昨天 21:25
截图键+mspaint.wcs
WAIT 100
SEND VK_SNAPSHOT  //#44
WAIT 100
EXEC --max mspaint.exe
TEAM WAIT 3000 | SEND #17_,#86_,#86^,#17^  //Ctrl-V
作者: 2012qnmd    时间: 昨天 21:27
截图-全屏.wcs
SCRN  -cap  fulllscreen.BMP,0

SCRN  -cap  fulllscreen.png,0

截图-全屏-延时.wcs
TEAM WAIT 100| SCRN  -cap  fulllscreen.BMP,0


作者: 2012qnmd    时间: 昨天 21:29
截图抓图界面.wcs

ENVI^  ForceLocal=1
LOGS * X.LOG
SET &fn=screen.png
SET &wid=0
CALL @WIN1

_SUB WIN1,W449H220,截图,
    LABE -VCENTER LABE1,L12T42W68H30,延时(秒):,,
    EDIT -VCENTER -3D Delay,L84T43W63H30,0,,
    SPIN SPIN1,L156T41W18H34,:0:100,,0x80,0x80
    ITEM ITEM1,L191T141W60H30,抓图, OnDo,
    LABE -VCENTER LABE2,L12T90W48H30,文件名,,
    EDIT -VCENTER -3D wFN,L70T90W335H30,%fn%,,
    ITEM ITEM2,L410T89W21H30,>>,OnBrow,
    LABE -VCENTER -RIGHT LABE3,L229T41W55H30,对象:,,
    EDIT -VCENTER -3D wWid,L291T41W90H30,%wid%,,
_END

_SUB OnBrow
    BROW &&fn,%wFN%,选择一个文件,PNG|*.PNG|BMP|*.BMP|JPG|*.JPG|GIF|*.GIF|TIFF|*.TIFF|所有|*.*
    FIND $%fn%=, EXIT
    ENVI @wFN=%fn%   
_END


_SUB OnDo
    SET &wid=%wWid%
    SET &fn=%wFN%
    FIND $%fn%=, EXIT
    ENVI @this.visable=0
    CALC &&ms=%Delay%
    CALC &ms=%&ms% * 1000#0
    IFEX $%ms%<0, SET ms=0
    CALC #&ms=%&ms% + 10
    WAIT %&ms%
    SCRN -cap %fn%,%wid%
    WAIT 10
    ENVI @this.visable=1
_END


作者: 2012qnmd    时间: 昨天 21:29
截图抓图界面1.wcs

ENVI^  ForceLocal=1
LOGS * X.LOG
SET &capd=%DeskTop%
SET &fn=屏幕捕获
SET &wid=0
set &ext=PNG
CALL @WIN1

_SUB WIN1,W449H220,截图,
    LABE LABE1,L10T42W60H20,延时(秒):,,
    EDIT Delay,L72T40W40H20,0,,
    SPIN SPIN1,L114T39W18H22,:1:99,,0x80,0x80
    LABE LABE2,L170T42W40H20,对象:,,
    EDIT wWid,L212T40W30H20,%wid%,,
    LABE LABE3,L280T42W60H20,保存类型:,,
    LIST lEXT,L342T40W60H20,PNG|BMP|JPG|GIF|TIFF,ENVI @wFN=%&capd%\%fn%.%lEXT%,%ext%
    LABE -VCENTER LABE4,L10T90W90H30,保存位置及文件,,
    EDIT -VCENTER -3D wFN,L105T90W300H30,%&capd%\%fn%.%ext%,NAME fn=%wFN%,
    ITEM ITEM2,L410T89W21H30,>>,OnBrow,
    ITEM ITEM1,L191T141W60H30,抓图, OnDo,
_END

_SUB OnBrow
    BROW &&capdir,*%capd%,选择一个文件夹
    FIND $%capdir%=, EXIT
    TEAM ENVI &capd=%capdir%|ENVI @wFN=%&capd%\%fn%.%ext%
_END

_SUB OnDo
    SET &wid=%wWid%
    SET &afn=%wFN%
    FIND $%afn%=, EXIT
    ENVI @this.visable=0
    CALC &&ms=%Delay%
    CALC &ms=%&ms% * 1000#0
    IFEX $%ms%<0, SET ms=0
    CALC #&ms=%&ms% + 10
    WAIT %&ms%
    SCRN -cap %afn%,%wid%
    WAIT 10
    ENVI @this.visable=1
_END

作者: 静庵    时间: 昨天 21:38
本帖最后由 静庵 于 2026-2-27 21:47 编辑
2012qnmd 发表于 2026-2-27 21:27
截图-全屏.wcs
SCRN  -cap  fulllscreen.BMP,0

受教了,高手在潜水。

截图键+mspaint.wcs
WAIT 100
SEND VK_SNAPSHOT  //#44
WAIT 100
EXEC --max mspaint.exe
TEAM WAIT 3000 | SEND #17_,#86_,#86^,#17^  //Ctrl-V

  截全屏,复制到画图编辑,而后保存。
作者: 静庵    时间: 昨天 21:50
本帖最后由 静庵 于 2026-2-27 22:14 编辑
2012qnmd 发表于 2026-2-27 21:25
截图键+mspaint.wcs
WAIT 100
SEND VK_SNAPSHOT  //#44

请教:这段代码可不可以改为打开画图的窗口不全屏,在画图中打开适应画图的窗口

作者: ppll2030    时间: 昨天 21:53
静庵 发表于 2026-2-27 21:11
深奥了。
   ENVI path=%Desktop%
   SCRN -cap %path%\截屏_%i%.jpg, 1

看一下帮助文件,HOTK 只能在配置文件里才有效。

作者: 静庵    时间: 昨天 22:23
2012qnmd 老师提供的几个方案都实用,创建一个界面。
而 截图键+mspaint.wcs
    WAIT 100
    SEND VK_SNAPSHOT  //#44
    WAIT 100
    EXEC --max mspaint.exe
    TEAM WAIT 3000 | SEND #17_,#86_,#86^,#17^  //Ctrl-V
这一段代码更实用,直接截屏到画图,编辑保存,只是全屏显示吓人了,去掉 --max,画图窗口
可以了,而打开的图像太大了,需要给它缩小再编辑。可不可以改一下?

5大老师的方案简洁明了,直接截屏保持在桌面,适合快速截屏。

多谢各位老师、大神
作者: 527104427    时间: 5 小时前
本帖最后由 527104427 于 2026-2-28 06:29 编辑
静庵 发表于 2026-2-27 21:11
深奥了。
   ENVI path=%Desktop%
   SCRN -cap %path%\截屏_%i%.jpg, 1

WAIT - -1   ?
这种奇怪的用法,肯定是不存在的。一看就知道是出自AI的手笔。

以下代码保存为wcs,运行一次,之后就能F11截屏了。
如果不行,只能说你的PECMD版本不行,换一个:https://wwi.lanzoui.com/b0wh8vjc
别说不行,我在正常的win10系统下都可以的。

//hotk F11, exec -incmd pecmd load "%CurFile%"*截屏
hotk F11, load "%CurFile%"*截屏
_sub 截屏
        set dir=%desktop%
        team~ set count=1~ loop #1=1, ifex %dir%\截屏_%count%.jpg, calc count=%count% + 1! exit
        scrn -cap %dir%\截屏_%count%.jpg
        mess 已截屏保存为:截屏_%count%.jpg @完成 #OK *2000
_end

作者: 静庵    时间: 3 小时前
527104427 发表于 2026-2-28 05:54
WAIT - -1   ?
这种奇怪的用法,肯定是不存在的。一看就知道是出自AI的手笔。

多谢5大




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