最近清理系统垃圾,发现三年前清风给了个文件…
是清风给的一个批处理…代码如下:(保存为.BAT文件即可)
[code lang=”java”]
@echo off
echo 正在清除系统垃圾文件,请稍等……
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%\temp & md %windir%\temp
del /f /q %userprofile%\cookies\*.*
del /f /q %userprofile%\recent\*.*
del /f /s /q “%userprofile%\Local Settings\Temporary Internet Files\*.*”
del /f /s /q “%userprofile%\Local Settings\Temp\*.*”
del /f /s /q “%userprofile%\recent\*.*”
echo 清除系统垃圾完成!
echo. & pause
[/code]
代码没什么问题..问题在于执行批处理后CMD跳出的不兼容UNICODE,而导致少部分返回的信息根本就是乱码…(当然在VS2008的命令提示下支持)
于是用汇编写了个类似的…接下来看下返回信息的效果:
执行中:
顺便提下..执行的过程中是虚化的 因为..删除文件过程中涉及内存优化的问题..暂时解决不了~这个技术难题也导致我在用自己的程序全盘扫描完毕的时候和用AVAST全盘扫描完毕后机子的速度天差地别…
虚化主要实现首先是给窗口WS_EXD_LAYERED属性…
;code>>>
invoke GetWindowLong,hwnd,GWL_EXSTYLE
or eax,WS_EXD_LAYERED
invoke SetWindowLong,hwnd,GWL_EXSTYLE,eax
invoke SetLayeredWindowAttributes,hwnd,0,bAlpha,LWA_ALPHA
;end>>>至于放在什么位置随意拉~
执行完毕后看效果:
完全没有UNICODE乱码的问题….
窗口下方还有扫描硬盘文件的功能 功能的实现主要是参照教程什么的~
一下是各个功能实现用到的技巧点:
虚化:指定窗口WS_EXD_LAYERED,调用SetLayeredWindowAttributes
清理垃圾:创建管道,调用clean.bat并把信息写入窗口文本
;CODE>>>
push eax
mov eax,100
mov bAlpha,eax
invoke SetLayeredWindowAttributes,hWnd,0,bAlpha,LWA_ALPHA
pop eax;虚化
.while TRUE
invoke RtlZeroMemory,addr buffer,1024
invoke ReadFile,hRead,addr buffer,1023,addr bytesRead,NULL
.if eax==NULL
.break
.endif
invoke SendMessage,hwndEdit,EM_SETSEL,-1,0
invoke SendMessage,hwndEdit,EM_REPLACESEL,FALSE,addr buffer
.endw
push eax
mov eax,255
mov bAlpha,eax
invoke SetLayeredWindowAttributes,hWnd,0,bAlpha,LWA_ALPHA ;ÉèÖÃ͸Ã÷
pop eax;实化
;END>>
清理垃圾:其实还可以用筛选扫描直接DELDETEFILE…这样估计就不会卡机0.0
扫描:定义COM接口 调用FindFirstFile FindNextFile等..
硬盘文件大小的计算这个就没啥好说了..分析WIN32_FIND_DATA结构
存在的问题:(1)扫描返回信息的时候输出的信息处理不完善.
(2)扫描完后的收尾工作不会 例如整理内存
(3)清理垃圾的时候会卡机..(虚化的作用是防止在这个时候给窗口发送其他消息)
(4)筛选扫描上有问题…分析 WIN32_FIND_DATA结构逻辑出问题了
但是清理垃圾的功能还是没问题的…
有个问题强调下..本人业余 (防吐槽)
以下是EXE+源码:
《汇编实现扫描+清理垃圾》有2个想法