获取打开的文档的路径

原创 2012年03月30日 14:28:22
; File encoding:  UTF-8 
/*
AutoHotkey 版本: 1.1.9.0
操作系统:    Windows XP/Vista/7 
作者:        sunwind <1576157 qq="" com=""> 
博客:        http://blog.csdn.net/liuyukuan/article/details/7411291
脚本说明:此为脚本用于打开Office、Scite等软件中 打开的文档路径。
脚本版本:   2012-12-23版
Timestamp:2012年12月23日14:40:22
*/
 

;2012-12-23 更新Scite路径获取方式为com调用,即使标题栏没有显示全部路径也能工作。
;2012-03-31 改热键为win+del,因为我多数是为了清理没用文档,删除当前打开的文件。  
;2012-03-31 增加:对非office软件 则打开程序所在目录功能。
;2012-03-31 增加 :可打开SciTE 、EmEditor文档所在目录(前提是其标题栏显示文档路径)

;对于notepad等程序需要增加也个case标签单独处理,可以通过先设置各个程序支持在标题栏中显示路径,然后解析路径的方式.本想弄个通用的用WMI方式查询cmd_line内容,但是如果运行了记事本,再open,打开文本文件的话,文件路径是不在cmd_line中的,残念.  


#del:: ;打开office文档所在目录。非office软件打开程序所在目录。
  WinGet, _ProcessPath, ProcessPath, A
  _DocPath:=getDocumentPath(_ProcessPath)
  TrayTip,,%_DocPath%,10
  Run,% "Explorer.exe /select, " _DocPath 
Return


getDocumentPath(_ProcessPath)
  {
	SplitPath,_ProcessPath,Process_Name,Process_Dir,,Process_NameNoExt
	value:=Process_NameNoExt
	
    If IsLabel( "Case_" . value)
        Goto Case_%value%
    Else
        Goto Case_Default
Case_WINWORD:  ;Word OpusApp
  Application:= ComObjActive("Word.Application") ;word
  ActiveDocument:= Application.ActiveDocument ;ActiveDocument
Return  % ActiveDocument.FullName
Case_EXCEL:  ;Excel XLMAIN
  Application := ComObjActive("Excel.Application") ;excel
  ActiveWorkbook := Application.ActiveWorkbook ;ActiveWorkbook
Return % ActiveWorkbook.FullName
Case_POWERPNT:  ;Powerpoint PPTFrameClass
  Application:= ComObjActive("PowerPoint.Application") ;Powerpoint
  ActivePresentation := Application.ActivePresentation ;ActivePresentation
Return % ActivePresentation.FullName

Case_SciTE:       ;;打开SciTE当前文件所在目录
Return % GetCurrentFilePath(GetSciTEInstance())
Case_EmEditor:  ;;打开EmEditor当前文件所在目录 
	WinGetActiveTitle _Title
	SplitPath,_Title,name,dir
	Needle:=" - "
	StringSplit,_name,name,%Needle%
	FullName:=dir . "\" . _name1
Return % FullName
Case_AkelPad:
    WinGetActiveTitle _Title
	SplitPath,_Title,name,dir
    MsgBox %dir%
	Needle:=" - "
	StringSplit,_name,name,%Needle%
	FullName:=dir . "\" . _name1
Return % FullName

Case_Notepad:
 WinGet pid, PID, A
  wmi := ComObjGet("winmgmts:")
  queryEnum := wmi.ExecQuery(""
  . "Select * from Win32_Process where ProcessId=" . pid)
  ._NewEnum()
  If queryEnum[Process] {
       CMDLine := Process.CommandLine ; 获取进程命令行
       RegExMatch(CMDLine, "i)\s+(.*)", ff_)   ; 正则匹配命令行参数
        ;~ RegExMatch(process.CommandLine,"i).*exe.*?\s+(.*)",CMDLine_1)
       StringReplace,ff,ff_1,`",,All
       if ff<>
         Return % ff
       else
        Return % _ProcessPath
       wmi := queryEnum := Process := ""
    }
    
Case_Default:
Return % _ProcessPath ; 其他程序打开程序所在目录
}


GetCurrentFilePath(scite)
{
	if !scite
	{
		MsgBox, 16, Error, Can't find SciTE!
		ExitApp
	}
	return scite.CurrentFile
}
GetSciTEInstance()
{
	olderr := ComObjError()
	ComObjError(false)
	scite := ComObjActive("SciTE4AHK.Application")
	ComObjError(olderr)
	return IsObject(scite) ? scite : ""
}
;~ 增加打开当前程序的路径,热键设置为win+end。 

#end:: ;仅是打开当前激活窗口的程序所在目录。不常用
  WinGet, _ProcessPath, ProcessPath, A
  Run,% "Explorer.exe /select, " _ProcessPath 
Return

Swift - 文件目录路径获取及数据储存(Home目录,文档目录,缓存目录)

iOS应用程序只能在自己的目录下进行文件的操作,不可以访问其他的存储空间,此区域被称为沙盒。   应用沙盒结构分析 1、应用程序包:包含了所有的资源文件和可执行文件 2、Documents:保存应...

获取"我的文档"路径

获取“我的文档”路径 很多时候“我的文档”位置经常被人移到D盘,如下是获取“我的文档”路径: #include "stdafx.h" #include windows.h> #i...

DedeCMS自学教程13:织梦CMS站点文档存放路径url优化设置

DedeCMS调用指定栏目不包含下级栏目的问题 DedeCMS自学教程13:织梦CMS站点文档存放路径url优化设置 DedeCMS自学教程13:织梦CMS站点文档存放路径url优化设置 ...
  • jxmjrdv
  • jxmjrdv
  • 2014年10月26日 11:22
  • 520

显示我的文档路径

  • 2013年12月28日 12:33
  • 20KB
  • 下载

得到文档路径的几种方法

  • 2013年03月24日 21:07
  • 1KB
  • 下载

C#读取“我的文档”等特殊系统路径及环境变量

返回“我的文档”路径字符串 Environment.GetFolderPath(Environment.SpecialFolder.Personal) 本技巧使用GetFolder...
  • hwt0101
  • hwt0101
  • 2014年08月18日 13:25
  • 1205

修改最近文档路径(朱建强)

  • 2010年06月23日 18:53
  • 561KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:获取打开的文档的路径
举报原因:
原因补充:

(最多只允许输入30个字)