本帖最后由 地平线 于 2012-5-3 16:48 编辑
这想法有点邪恶:后台监控,当有文件打开时(主要是word、ppt、txt和图片),自动复制打开的文件到指定目录。
判断指定类型的文件是否打开,现在知道的方法是ObjGet和ProcessExists。
ObjGet("", "Word.Application") 或 ProcessExists("WINWORD.exe")
ObjGet("", "PowerPoint.Application") 或 ProcessExists("POWERPNT.exe")
ProcessExists("notepad.exe") txt不知道用ObjGet怎么表示。
而图片的打开程序种类比较多。不知道还有没有其他更好的方法判断一个任意名字的文件是否打开呢?
最大的问题是,由于无法获取打开文件的文件名和路径,无法自动复制文件,用的是FileCopy。
已搜索论坛,但找不到思路,请各位指教!
2012-4-26 有了一点点进展,勉强能保存打开的word文档了,但因为不能判断打开的是否为同一个文件,会不停地保存。
#include <Word.au3>
HotKeySet("{ESC}","_exit")
While 1
_Main()
Sleep(1000)
WEnd
Func _Main()
Local $obj = ObjGet("", "Word.Application")
If Not @error Then
$obj.Visible = 1
Local $oDoc = _WordDocGetCollection($obj, 0)
$title = _WordDocPropertyGet ($oDoc,"title")
If $title = "" Then
_WordDocSaveAs($oDoc,@ScriptDir & '\1.doc')
Else
_WordDocSaveAs($oDoc,@ScriptDir & '\'& $title & '.doc')
EndIf
EndIf
EndFunc
Func _exit()
Exit
EndFunc
2012-4-26夜 今晚又有新的思路了,已经可以获取打开的原文件的路径和文件名了,把打开的文件的路径和文件名写入配置文件,再根据各种条件判断是否为同一文件。(感谢4#的指点)
但现在只解决了word文档,其他类型的文件还没有思路。
已经写了一部分,因为后天考试,所以剩下的五一放假再继续写完和测试。
2012-4-29夜 考完2科试了,断断续续花了一天时间摸索,重新写了并测试,暂且解决了Word的问题。(详情及源码请查看“后台监控并复制打开的word文档”)但其他类型的还有待解决。txt和图片的对象的类名称(格式:"appname.objectype")是什么呢?如有高人路过,请指导一下。 |