

如果是excel的话,有激活当前excel对象的指令,可以获取到完整路径。

但是,如果是word或者PDF文件,怎么判断呢?假设已知电脑中有个word文件被打开状态,如何用影刀获取已打开的文件的路径和名称?
步骤1:缩小范围。通过获取窗口对象列表,找到所有的窗口对象标题,如果其中包含关键字docx - WPS Office,那么就是我们要找的目标文件。

现在获取到了文件名,那么文件的完整路径怎么获取呢?
步骤2:根据文件名称在电脑中查找路径。用在命令行输入 dir/s/b 磁盘名:\文件名 的方式来查找文件,例如dir/s/b D:\授权委托书.docx


查找到四个名称为授权委托书.docx的文件,那么究竟哪个文件是现在打开的呢?
步骤3:判断哪个文件是打开的。借助python的pywin32模块来判断文件是否被占用,代码如下:
import win32file
#想要使用 win32file库,需要先安装 pywin32 库
def is_used(file_name):
#判断文件是否已打开
try:
vHandle = win32file.CreateFile(file_name, win32file.GENERIC_READ, 0, None, win32file.OPEN_EXISTING, win32file.FILE_ATTRIBUTE_NORMAL, None)
return "文件未打开"
except:
return "文件已打开"
finally:
try:
win32file.CloseHandle(vHandle)
except:
pass 然后在主流程中调用:

