我有一个具体的包含不同文件类型(txt、pdf、docx、任何事物),当双击文件资源管理器时,我不希望默认应用程序打开这些文件。相反,我希望特定的应用程序打开仅驻留在此特定文件夹中的这些文件。
我换一种方式来解释。假设文件夹 C:\Test 包含以下文件:
- 测试.txt
- 手册.pdf
- 计划.docx
- 财务.xlsx
- foo.mp4
如果这些文件位于 C:\Test 以外的任何其他文件夹中,则其默认应用程序将打开它们:
- test.txt->记事本
- 手册.pdf -> Adobe Reader
- 计划.docx -> Microsoft Word
- finance.xlsx -> Microsoft Excel
- foo.mp4->Windows Media Player
但由于这些文件位于 C:\Test 中,当我在文件资源管理器中双击它们时,我希望它们全部由 default_app.exe 打开:
- 测试.txt->default_app.exe
- manual.pdf->default_app.exe
- 计划.docx -> 默认应用程序.exe
- 财务.xlsx->默认应用程序.exe
- foo.mp4->默认应用程序.exe
抱歉,如果我的谷歌技能不够好,但我已经搜索答案好几天了。
答案1
简短的回答是“不”,而且您也不希望它以任何其他方式工作。
如果发生这种情况,那么一个程序就可以劫持您机器中的整个文件夹。文件权限管理不善,文件系统将成为恶意软件的绝佳目标。
此外,您的一个应用程序可以读取所有文件类型并让用户理解它们的可能性不大。
您可以将文件存储在数据库中,然后让您的程序从数据库而不是 Windows 文件系统中调用它们。或者,您可以让您的应用程序遍历文件夹并将文件扩展名更改为它自己能理解的扩展名,然后在 Windows 中设置这些关联。
答案2
您可以使用 AutoHotkey 脚本执行此操作。
; This script will intercept double-clicks and if you have double-clicked a file within a pre-defined directory,
; instead of opening the file with the default app, open the file with a custom app instead.
#Persistent
#SingleInstance, Force
#InstallKeybdHook
#HotkeyInterval, 100
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
SetTitleMatchMode 2
SetWinDelay, 0
WaitTime := DllCall("GetDoubleClickTime")
SpecialDir := "C:\Test"
ExecWith := "C:\path\to\default_app.exe"
LButton Up::
IfWinActive ahk_exe explorer.exe
{
PrevClip := ClipBoard
If (A_TimeSincePriorHotkey<400) and (A_TimeSincePriorHotkey<>-1)
{
SendInput, ^c ; Get path to file you double-clicked on
Sleep, 50 ; Sleep to give time for clipboard to get contents
If FileExist(ClipBoard)
{
Run %ExecWith% %ClipBoard%
} else {
SendInput, {LButton}
}
ClipBoard := PrevClip
} Else {
SendInput, {LButton}
}
} Else {
SendInput, {LButton}
}
Return
只需将此代码保存到名为 explorer-double-click.ahk 的文件中(或以 .ahk 结尾的类似文件)。
您将需要编辑 SpecialDir 和 ExecWith(第 15 行和第 16 行)以适当地设置路径。
您需要先安装 AutoHotkey。然后运行它。