【解决方案】如何获取已打开的文件路径和文件名?——by.北方区平平无奇组织
评论
收藏

【解决方案】如何获取已打开的文件路径和文件名?——by.北方区平平无奇组织

经验分享
小曼
2023-09-06 21:07·浏览量:1294
小曼
发布于 2023-09-06 20:56更新于 2023-09-06 21:071294浏览

客户问题:

思路:

如果是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 

然后在主流程中调用:


收藏
全部评论1
最新
发布评论
评论