无忧启动论坛

 找回密码
 注册
搜索

用 PECMD 实现截屏到桌面几个方案

查看数: 545 | 评论数: 47 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2026-2-26 21:15

正文摘要:

本帖最后由 静庵 于 2026-2-27 21:02 编辑 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  &n ...

回复

静庵 发表于 昨天 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大老师的方案简洁明了,直接截屏保持在桌面,适合快速截屏。

多谢各位老师、大神
ppll2030 发表于 昨天 21:53
静庵 发表于 2026-2-27 21:11
深奥了。
   ENVI path=%Desktop%
   SCRN -cap %path%\截屏_%i%.jpg, 1

看一下帮助文件,HOTK 只能在配置文件里才有效。
静庵 发表于 昨天 21:50
本帖最后由 静庵 于 2026-2-27 22:14 编辑
2012qnmd 发表于 2026-2-27 21:25
截图键+mspaint.wcs
WAIT 100
SEND VK_SNAPSHOT  //#44

请教:这段代码可不可以改为打开画图的窗口不全屏,在画图中打开适应画图的窗口
静庵 发表于 昨天 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

  截全屏,复制到画图编辑,而后保存。
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
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:27
截图-全屏.wcs
SCRN  -cap  fulllscreen.BMP,0

SCRN  -cap  fulllscreen.png,0

截图-全屏-延时.wcs
TEAM WAIT 100| 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:38
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

点评

请教:这段代码可不可以改为打开画图的窗口不全屏  详情 回复 发表于 昨天 21:50
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:21
这个很多年前,我和作者提过这个需求,作者加了截图参数,也给力几个现成的wcs
静庵 发表于 昨天 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 中加载没有反应呢

点评

看一下帮助文件,HOTK 只能在配置文件里才有效。  详情 回复 发表于 昨天 21:53
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,没有任何意义。

点评

深奥了。 ENVI path=%Desktop% SCRN -cap %path%\截屏_%i%.jpg, 1 5大的意思是仅上面两行代码就可以实现截屏,并保存桌面?但不会依次保存 而: SEND VK_SNAPSHOT EXEC mspaint.exe WA  详情 回复 发表于 昨天 21:11
fegr 发表于 昨天 15:28
感谢分享
guong 发表于 昨天 15:05
来学习下
wn168cn@163.com 发表于 昨天 13:56
支持分享
忧心的启 发表于 昨天 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就行了
view520 发表于 昨天 09:15
感谢分享!
忧心的启 发表于 昨天 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的问题。真奇怪啊。
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也许可以

点评

已经搞清楚了,是pecmd版本问题,之前用的是V201201.88.05.86 x64不行,换了V201201.88.05.94 X64就行了  详情 回复 发表于 昨天 09:29
我这也没反应,不懂是不是pecmd的问题。真奇怪啊。  详情 回复 发表于 昨天 09:14
smile_z 发表于 昨天 08:56
学习一下
ztc999 发表于 昨天 07:39
感谢分享
静庵 发表于 昨天 07:18
martin313 发表于 2026-2-27 06:54
判断版本,存在问题。建议用注册表法来判断,或者直接用一条命令,不要判断:

HOTK #122,PECMD EXEC " ...

感谢老师辛劳,我就是小白一个,什么都不懂的
martin313 发表于 昨天 06:54
静庵 发表于 2026-2-27 06:42
不知何故,我的PE中,注册热键也没有反应,与PE有关?

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

HOTK #122,PECMD EXEC "%ProgramFiles%\Imagine\Imagine64.exe" /capture  `F11 ScreenShot

点评

感谢老师辛劳,我就是小白一个,什么都不懂的  详情 回复 发表于 昨天 07:18
静庵 发表于 昨天 06:42
martin313 发表于 2026-2-26 23:58
我的PE中,64位的,输入命令:"%ProgramFiles%\Imagine\Imagine64.exe" /capture

就可以调出截屏窗口

不知何故,我的PE中,注册热键也没有反应,与PE有关?

点评

判断版本,存在问题。建议用注册表法来判断,或者直接用一条命令,不要判断: HOTK #122,PECMD EXEC "%ProgramFiles%\Imagine\Imagine64.exe" /capture `F11 ScreenShot  详情 回复 发表于 昨天 06:54
2314840143 发表于 昨天 01:42
围观
ebaqiang 发表于 昨天 00:56
我也在等楼下回帖
gordonhf 发表于 昨天 00:25
围观
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

点评

不知何故,我的PE中,注册热键也没有反应,与PE有关?  详情 回复 发表于 昨天 06:42
邪恶海盗 发表于 前天 23:32
何必呢,直接内置一个几百K的截图工具不香么,注册个快捷键即可...


二○二六年二月二十六日

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

闽公网安备 35020302032614号

GMT+8, 2026-2-28 00:57

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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