|
本帖最后由 frg521 于 2017-7-17 20:42 编辑
重新整理下2个问题,1是PE桌面进程监控,2是PE后台截屏会不断占用内存直到耗尽
pe的桌面进程shell意外或者手动重启后,能不能附加启动代码?
以下代码要在explorer再次启动后立即运行,不管是哪种原因引起的重启,永远追随shell重启,其他3处可保留接口备用.
另外要如何一直在运行,但是尽量占用内存小些.
因为昨天发现PE后台截屏开了半小时,内存2G消耗PECMD.EXE,示例中的脚本,截图在C盘,但是内存确实占用了,猜想是每次截图都占用增量内存,因为截图文件不到200M,内存占了2G,只是推测可能是内存中的BMP原文件大小,此示例源代码附在末尾
精简实例pecmd.ini
- _SUB explorer
- explorer 死掉
- (1)处
- 记录死掉时间到LOG.TXT
- (2)处
- 执行explore
- 记录新PID与时间到LOG.TXT
- 运行帖子下方的代码,如果可以转成独立PECMD脚本
- (3)处,,
- 等待 explorer结束
- 保留代码
- (4)处
- explorer 死掉
- 循环
- _END
- INIT IU
- SHEL %SystemRoot%\explorer.exe
- CALL explorer // 还要保持监控,不只运行一次,如何调用
复制代码
user32.dll 函数
下面是VC6的代码,参考而已,现在是PECMD来做这个工作,可让32位与64位共用
这个代码希望可能转成PECMD脚本
- #pragma comment(lib,"user32.lib")
- #include "windows.h"
- #pragma comment (linker,"/entry:aa " )
- void aa()
- {
- HWND hwnd=FindWindow("Shell_TrayWnd","") ;
- {
- SendMessage(hwnd,0x5BA,0,0);
- }
- return ;
- }
- 或者
- void aa()
- {
- SendMessage(FindWindow("Shell_TrayWnd",""),0x5BA,0,0);
- return ;
- }
复制代码
PE后台抓屏.WCS
截图时间长了,半小时2G用掉,如果不是内存用尽,不知,是否早过2G,内存会被耗尽,PE或系统完蛋,不知是否可以改进
EXEC "%&MyName%" LOAD "%&CurFile%"*AutoCap 3000 1000
// AutoCap 间隔(ms)[=3000] 最大次数[=无限]
_SUB AutoCap
ENVI^ ForceLocal=1
@TEAM SET &INT=%~1| SET &Limit=%~2| SET &ID=0| CALC Limit=%Limit%| CALC INT=%INT%| IFEX $%INT%<1000, SET INT=3000
LOOP #1=1,
{ CALC #ID=%ID% + 1
//IFEX $%ID%<1000, RSTR &&IDX=5,000000%ID%! SET &IDX=%ID% //序号
DATE *space0 &&CurTime
MSTR &&YY,&&MM,&&DD,&&HH,&&MU,&&SE=<1*>%&CurTime%
SET &IDX=%YY%%MM%%DD%%HH%%MU%%SE% //时间
SCRN -cap C:\PECMD%IDX%.png,0:0
IFEX $[ %Limit%>0 & %Limit%<=%ID% ], EXIT
WAIT %INT%
}
_END
|
|