AutoIt是个很好的脚本工具,具体说明大家可以百度一下
///////////////////////1. 自动备份所选文本的AutoIt脚本
备份一些网页文本、资料等比较省力气,选中文本,按下Win+S,自动将所选文本追加到制定的文本文件中,然后自动打开编辑器查看。
很简单,懒得多说了,可以根据自己的具体需要修改完善它。
用法:
在Hoekey中添加:
~S=keys|\cc\C
=Run|bak.exe
AutoIt脚本,编译成Bak.exe
#include
;Config
$strTime=_Now()& " 星期" & @WDAY
$strSp = "------------- "& $strTime & " --------------"
$strFile= "G:\Backup\Bak.txt" ;备份到的文本文件
$strEditor="D:\Program Files\EditPlus 2\editplus.exe"
;打开文件所用的编辑器
FileWriteLine($strFile,"")
FileWriteLine($strFile,$strSp)
FileWriteLine($strFile,ClipGet())
Run($strEditor&" "&$strFile)
//////////////////////////2.监测网络是否连通的AutoIt脚本
通过不停ping某个地址,来检测网络是否连通。
如果连通,跳出对话框提示。并且播放声音提醒。
具体可以自己改下,代码在下面:
#include
GUICreate("Checking...",220,20);创建一个进度条窗口
$progressbar = GUICtrlCreateProgress (0,0,220,20)
;GUICtrlSetColor(-1,32250);
GUISetState ()
$i=1 ;进度条前进变量
While 1 ;use infinite loop since ExitLoop will get called
$var = Ping("192.168.0.1",400)
;192.168.0.1代表ping的地址,用来检测网络连接
If $var Then; Ping通则退出循环
ExitLoop
Else ;否则继续ping,并设置进度条
If $i=100 Then
$i=1
EndIf
GUICtrlSetData ($progressbar,$i)
$i=$i+1
EndIf
WEnd
GUIDelete();关掉进度条窗体
Msgbox(0,"Status","Connected",5)
while 1
SoundPlay("ring.wav",1) ;播放声音提醒,ring.wav位于当前目录
WEnd
/////////////////////////3. AutoIt快捷进入QQ设置的脚本
要进入QQ的设置,只能依靠菜单,这一点上十分不方便。
用AutoIt写了个脚本。
基本思路就是监视QQ的菜单消息,获得后然后向其发送。
编译为可执行文件后,可以在Hoekey中制定一个快捷键,例如Win+Q
下面是脚本,很简单:
#include
Opt("WinWaitDelay",100)
Opt("WinTitleMatchMode",4)
Opt("WinDetectHiddenText",1)
Opt("MouseCoordMode",0)
$hwnd = WinGetHandle("classname=#32770","请输入关键字")
;QQ窗口的句柄,因为很多窗口是#32770,所以用后面这个"请输入关键字"限定是主QQ窗口
_SendMessage($hwnd, 273, 25304,$hwnd)
;用SPY++监视QQ窗口的WM_COMMAND消息,获得wparam和lparm参数
If Not WinActive("QQ2007设置","") Then WinActivate("QQ2007设置","")
WinWaitActive("QQ2007设置","")
///////////////////////4. 调用IP Tools 局域网MAC扫描
Opt("TrayIconHide",1)
Run("F:\Soft\Net\[Anti]\[Tools]\IP Tools\iptools.exe","F:\Soft\Net\[Anti]\[Tools]\IP
Tools\")
Opt("WinWaitDelay",100)
Opt("WinTitleMatchMode",4)
Opt("WinDetectHiddenText",1)
Opt("MouseCoordMode",0)
WinWait("IP Tools 1.89.0.0 By Erwan L.","")
If Not WinActive("IP Tools 1.89.0.0 By Erwan L.","") Then
WinActivate("IP Tools 1.89.0.0 By Erwan L.","")
WinWaitActive("IP Tools 1.89.0.0 By Erwan L.","")
;~ MouseMove(200,37)
;~ MouseDown("left")
;~ MouseUp("left")
;~ Sleep(1000)
;~ MouseMove(493,227)
;~ MouseDown("left")
;~ MouseUp("left")
;~ Sleep(1000)
;~ WinWait("Mac Addresses Discovery","")
;~ If Not WinActive("Mac Addresses Discovery","") Then
WinActivate("Mac Addresses Discovery","")
;~ WinWaitActive("Mac Addresses Discovery","")
;~ MouseMove(308,58)
;~ MouseDown("left")
;~ MouseUp("left")
;~ Sleep(1000)
;WinMenuSelectItem("Untitled - ", "", "&File", "Page
Set&up..." )
;WinMenuSelectItem("IP Tools 1.89.0.0 By Erwan L.","","&Tools","A&RP","A&RP
Scan")
WinMenuSelectItem("IP Tools 1.89.0.0 By Erwan L.","","Help","About")
由于“绿色软件”特别多,所以时间长了,保存了很多的快捷方式。有时候需要批量修改一下快捷方式指向的路径,网上找不到好的软件,只好自己写了个VBS脚本,:),(AutoIt不好实现)
说明:
可以替换指定目录及其子目录下所有的快捷方式,自己指定存放快捷方式的路径、要被替换的字符串和希望替换成的字符串,然后双击即可运行。
下面为代码,不很复杂,:)
On Error Resume Next
'替换某文件夹及其子文件夹下的所有快捷方式的指向路径
strFolderPath="D:\Program Files\TrueLaunchBar\Shortcut\File\ Style" '快捷方式的路径
strToReplace="\SOFTWARE\" '被替环的字符串
strReplace="\[Software]\" '替换成的字符串
Set wshShell = CreateObject("Shell.Application")
Set wshFSO = CreateObject("Scripting.FileSystemObject")
AlterSubFolders wshFSO.GetFolder(strFolderPath)
Sub AlterSubFolders(Folder)
Set npFolder = wshShell.Namespace (Folder.Path)
Set allFiles=Folder.Files
For Each lnkFile In allFiles
'Wscript.Echo lnkFile.Name
If InStrRev(UCase(lnkFile.Name), ".LNK") <> 0 Then '扩展名是否快捷方式
Set lnkItem = npFolder.ParseName(lnkFile.Name)
Set lnkItemLink = lnkItem.GetLink
'Wscript.Echo """"&lnkItemLink.Path&""""
lnkItemLink.Path = Replace("""" & lnkItemLink.Path & """",strToReplace,strReplace)
lnkItemLink.WorkingDirectory = Replace("""" & lnkItemLink.WorkingDirectory & """",strToReplace,strReplace)
lnkItemLink.Save()
End If
Next
For Each Subfolder in Folder.SubFolders
'Wscript.Echo "Folder" & Subfolder.Path
Set npFolder = wshShell.Namespace (Subfolder.Path)
Set objFolder = wshFSO.GetFolder (Subfolder.Path)
Set allFiles = objFolder.Files
For Each lnkFile in allFiles
If InStrRev(UCase(lnkFile.Name), ".LNK") <> 0 Then '扩展名是否快捷方式
Set lnkItem = npFolder.ParseName(lnkFile.Name)
Set lnkItemLink = lnkItem.GetLink
'Wscript.Echo """"&lnkItemLink.Path&""""
lnkItemLink.Path = Replace("""" & lnkItemLink.Path & """",strToReplace,strReplace)
lnkItemLink.WorkingDirectory = Replace("""" & lnkItemLink.WorkingDirectory & """",strToReplace,strReplace)
lnkItemLink.Save()
End If
Next
AlterSubFolders Subfolder
Next
End Sub
--------------------------------------------【批处理脚本】--------------------------------------
批处理备份,这个脚本应该还有更新版的,可惜硬盘坏了,新的没了
将Doc and Settings移动到了D盘,现在轻松多了,呵,重装时只需要备份注册表中软件的设置就行了.
Backup.bat和BakLst.txt.Rar.exe是主要文件.
Backup.bat读取BakLst.txt中注册表的路径,导出并用Rar.exe压缩成rar文件,rar文件名称使用日期时间作为文件名,方便管理.
BakLst.txt是备份列表文件,典型写法是:
//FlashGet
HKEY_CURRENT_USER\Software\JetCar
//System Mechanic
HKEY_CURRENT_USER\Software\iolo\System Mechanic 5
其中//代表注释.感觉某个软件需要备份键值时,把它加到BakLst.txt就行了.
Rar.exe在同一目录.
也可以这样
rem Backup list file(BakLst.txt) directory
rem SET LstDir=G:\Backup\Batch
rem WinRAR install directory
rem SET RarDir=D:\Program Files\WinRAR
指定备份列表和Rar.ext的目录.
Backup.bat具体内容:
@echo off
rem Directory that backup files stored in
SET RegDir=G:\Backup\RELOAD
rem just in case if any reg file was keeped in
del %RegDir%\*.reg /f /s /q
@echo 导出注册表设置
FOR /F "eol=/delims=?" %%i in ('findstr "HKEY"
BakList.txt') do (
if exist "%RegDir%\%%~ni.reg" (
reg export "%%i" "%RegDir%\%%~ni2.reg") else (
reg export "%%i" "%RegDir%\%%~ni.reg")
)
rem No path in rar archive and date-time format as
archive name
Rar.exe a -ep -agYYYY-MM-DD_{星期}A_HH-MM %RegDir%\ %RegDir%\*.reg
rem delete,no need
del %RegDir%\*.reg /f /s /q
pause
//////////////1. Hoekey快捷键实现词霸的暂停取词
hoekey中有个Msg函数,是个很有用的东西,可以实现非常多的功能,例如控制winamp,控制窗口等等,具体请参看hoekey的帮助等相关文档。
但是对于怎么查找这些消息,却没有相关详细说明,小小研究了一番
Msg得用法为:Msg|类名称|消息值|消息wParam值|消息lParam值,其中值均为十进制,例如:Num *=Msg|#32770|273|32792|0
功能为打开关闭金山词霸的屏幕取词。
这些值是怎么找到呢?OK,也不是很复杂:
首先需要微软的Spy++,然后在主界面的窗口列表中找到金山词霸,右键,选择属性,切换到类选项卡,可以看到类名为:#32770,OK,第一个任务完成。
然后,再次点击右键,选择消息,出现消息监视窗口,单击工具栏上的“记录选项”按钮,选择消息选项卡,选择“全部清除”按钮,然后选择WM_COMMAND消息(菜单,控件等向主窗口发送WM_COMMAND消息),确定,然后选择开始记录(F8)。
在词霸的托盘图标上右键,选择屏幕取词,按F8停止记录,回到Spy++消息监视窗口,会看到:<00001> 0022045C P WM_COMMAND wNotifyCode:0 (从菜单发送) wID:32792 字样,这就是我们需要的消息了,双击,将消息值:wParam,lParam转为十进制,就分别是:111-->273,8018-->32792,0-->0。
OK,我么已经获得了需要的参数了,#32770|273|32792|0,这个功能就实现了,按Num *键,打开关闭取词功能非常迅速。
你一定很纳闷:词霸不是有自定义热键吗?是的,但是词霸的自定义热键有很多限制,很多键不能用,而hoekey就没有这些限制了,而且我们还可以从中学到一些Msg的使用,不是很好吗?
和这个功能类似,我们可以用Msg实现很多需要用移动鼠标选择菜单来实现的功能。例如卡巴斯基的暂停开始监控,MSN,QQ的上线下线,隐身等等。
////////////2. Hoekey实现金山词霸的“划词搜索
由于不是经常使用金山词霸,再加上本人是个懒人,能少动一下鼠标就少动一下,所以想实现一个类似“划词搜索”的功能,就是偶尔看到一个词需要查询一下,选中它,按快捷键,然后自动打开词霸,自动输入到词霸中查询。不用时可以把词霸关掉节省资源,还不用开着那个让我头痛的屏幕取词。
PS.“划词搜索”只是一个比喻,这种流氓软件可是避之不及的。
要实现快捷键,非Hoekey莫属了,小而强大,小强也,前面说过,不废话了,下面是具体的实现:
在hoekey中添加以下语句:
Num -=keys|\cc\C ;快捷键Num -,发送Ctrl+C复制
=Run|D:\Program Files\Kingsoft\PowerWord 2006\XDICT.EXE|3|2 ;打开词霸
=Wait|500
=keys|\cv\C ;发送Ctrl+V粘贴
=Keys|\n ;回车,查询详细