JJ 进球

一键实现“安全删除硬件”

一键实现”安全删除硬件”,点击下载 本程序并运行后,可实现 Win+Delete 组合键自动”安全删除硬件”,再也不要在右下角找那个绿色小东西了。除此之外,还有其他更多功能。如不能点击上面的链接可复制以下网址:http://www.songruihua.com/hk4win

现公布原代码:

;***************************************************************************
;
; Program : DelFD (已被包含于HK4WIN)
; Coder : Song Ruihua 宋瑞华
; Updated : Wed Mar 9 16:29:37 2011
;
; Email:delfd@songruihua.com
; 官网: http://www.songruihua.com/hk4win

; HAS BEEN TESTED ONLY ON WINDOWS XP PRO SP3 SIMPLIFIED CHINESE EDITION
; 只在WINDOWS XP PRO SP3简体中文版上做过测试,无关键性错误
;****************************************************************************

<#Del:: ;左Win+Del触发快捷键
KeyWait, LWin ;等待左Win键被释放后才继续执行
RETRY_TO_ROMOVE_FD: ;重试标记(删除失败时从此开始重试)
DriveGet, HAVE_FD, List , REMOVABLE ;将可移动设备的驱动器号(IJKL…)存储于变量HAVE_FD

If(HAVE_FD<>””) ;如果HAVE_FD不是空的,即存在可移动设备
{
StringLeft, REMOVED_FD, HAVE_FD, 1 ;将变量HAVE_FD的最左端的字符(I)存储于REMOVED_FD(欲删之)
DriveGet, FD_LABEL, label,%REMOVED_FD%:;读取欲删设备的卷标(如:优盘A)

Gosub, DelDev ;执行删除操作(见下)

DriveGet, HAVE_FD_2, List , REMOVABLE ;再次将可移动设备的驱动器号(JKL…)存储于变量HAVE_FD_2
StringLeft, NEXT_FD, HAVE_FD_2, 1 ;将变量HAVE_FD_2的最左端的字符(J)存储于NEXT_FD
DriveGet, FD_LABEL_2, label,%NEXT_FD%: ;读取欲删设备的卷标(如:优盘B)
if(REMOVED_FD<>NEXT_FD) ;如REMOVED_FD不等于NEXT_FD,则说明成功删除优盘A(I:)
{
StringLen, HAVE_FD_2_COUNT, HAVE_FD_2 ;目前有几个可移动设备(存于HAVE_FD_2_COUNT)
SoundPlay, %A_WinDir%\Media\Windows XP 硬件删除.wav ;声音提示
if(HAVE_FD_2_COUNT=0) ;如目前没有可移动设备了(0个)
MsgBox, 262192, HK4WIN, 已安全删除 %FD_LABEL% (%REMOVED_FD%:)`n电脑上已无可移动设备,30
else ;否则提示目前有几个可移动设备,以及下次将删除那个设备
MsgBox, 262192, HK4WIN, 已安全删除 %FD_LABEL% (%REMOVED_FD%:)`n电脑上仍插有 %HAVE_FD_2_COUNT% 个可移动设备`n再次按下 LWin+Del 将删除 %FD_LABEL_2% (%NEXT_FD%:),30
}
else ;如REMOVED_FD等于NEXT_FD,则说明优盘A(I:)未成功删除
{
SoundPlay, %A_WinDir%\Media\Windows XP 硬件故障.wav ;声音提示
if WinActive(“弹出”) and WinActive(“ahk_class #32770”) ;关闭Windows系统的删除失败提示
send,{Enter}
MsgBox, 262165, 请不要拔出可移动设备!!!, 无法安全删除 %FD_LABEL% (%REMOVED_FD%:) `n`n操作建议:`n1.关闭杀毒软件;`n2.关闭QQ,因其会偷偷扫描用户磁盘;`n3.关闭其他可能正在使用此设备的软件;`n4.您是否正在进行复制粘贴操作;`n5.稍后重试 (LWin+Del);`n6.关机后拔出此设备。
IfMsgBox, Retry ;如用户选择重试,则返回”重试标记”处再次执行
Goto, RETRY_TO_ROMOVE_FD
else ;如用户选择取消,则结束
return
}

}
else ;如果HAVE_FD是空的,即不存在可移动设备
{
MsgBox, 16, HK4WIN未发现可移动设备, 您的电脑未连接任何可移动设备。`n如果您的设备未被正确识别,可按Win+Shift+Del强制删除。,10
}
return

<#<+Del::Gosub, DelDev ;如设备未被正确识别,可按LWin+LShift+Del强制删除

DelDev: ;开始执行删除操作
BlockInput ,On ;锁定键盘和鼠标,以避免用户误操作
Run %A_WinDir%\system32\control.exe hotplug.dll ;打开”安全删除硬件”窗口
WinWait 安全删除硬件 ;等待”安全删除硬件”窗口打开,以避免误操作
ControlGet,STOP_BUTTON,Enabled,,Button2 ;检测”停止”按钮是否可用
If STOP_BUTTON{ ;如”停止”按钮可用
ControlSend,Button2,s ;按下”停止”按钮
WinWait 停用硬件设备 ;等待”停用硬件设备”窗口
ControlSend,Button1,{Enter} ;按下”确认”按钮
}
WinWaitClose 停用硬件设备 ;等待”停用硬件设备”窗口关闭,以避免误操作
WinClose 安全删除硬件 ;关闭”安全删除硬件”窗口
WinWaitClose 安全删除硬件 ;等待”安全删除硬件”窗口关闭,以避免误操作
BlockInput ,Off ;解除键盘和鼠标锁定
sleep,100 ;休息一下
if WinActive(“ahk_class CabinetWClass”) and (WinActive(“我的电脑”) or WinActive(“计算机”))
send,{F5} ;如果是”我的电脑”或”计算机”窗口则刷新一下
return

Technorati : 软件
Del.icio.us :
Zooomr :
Flickr :

Top