私は特定の異なるファイルタイプ(txt、pdf、docx、何でも) をファイル エクスプローラーでダブルクリックしたときに、既定のアプリケーションでこれらのファイルを開くことは望ましくありません。代わりに、この特定のフォルダーにのみ存在するこれらのファイルを特定のアプリケーションで開くようにしたいのです。
これを別の方法で説明します。フォルダー C:\Test に次のファイルが含まれているとします。
- テスト.txt
- マニュアル.pdf
- 計画.docx
- 財務.xlsx
- フー.mp4
これらのファイルが C:\Test 以外のフォルダーで見つかった場合は、デフォルトのアプリケーションによってファイルが開かれます。
- test.txt -> メモ帳
- manual.pdf -> Adobe Reader
- 計画.docx -> Microsoft Word
- finance.xlsx -> Microsoft Excel
- foo.mp4 -> Windows メディアプレーヤー
しかし、これらのファイルは C:\Test にあるため、ファイル エクスプローラーでダブルクリックすると、すべてが default_app.exe によって開かれるようにします。
- test.txt -> default_app.exe
- manual.pdf -> default_app.exe
- プラン.docx -> default_app.exe
- finance.xlsx -> default_app.exe
- foo.mp4 -> default_app.exe
私の Google スキルが十分でなかったら申し訳ありませんが、私は数日間にわたって答えを探していました。
答え1
簡単に答えると、いいえです。他の方法で動作することを望むことはないでしょう。
これが可能であれば、1 つのプログラムがマシン内のフォルダー全体を乗っ取ってしまう可能性があります。ファイルのアクセス許可が適切に管理されず、ファイル システムがマルウェアの格好の標的となってしまいます。
また、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 をインストールする必要があります。その後、それを実行してください。