у меня естьспецифическийпапка с различными типами файлов (txt, pdf, docx,что-либо) который при двойном щелчке в File Explorer, я не хочу, чтобы приложения по умолчанию открывали эти файлы. Вместо этого я хочу, чтобы определенное приложение открывало эти файлы, которые находятся только в этой конкретной папке.
Я объясню это по-другому. Допустим, папка C:\Test содержит следующие файлы:
- тест.txt
- руководство.pdf
- планы.docx
- финансы.xlsx
- фу.mp4
Если эти файлы были найдены в любой другой папке, а не в C:\Test, их откроют приложения по умолчанию:
- test.txt -> Блокнот
- руководство.pdf -> Adobe Reader
- планы.docx -> Microsoft Word
- финансы.xlsx -> Microsoft Excel
- foo.mp4 -> Проигрыватель Windows Media
Но поскольку эти файлы находятся в C:\Test, то при двойном щелчке по ним в Проводнике я хочу, чтобы все они открывались с помощью default_app.exe:
- test.txt -> default_app.exe
- руководство.pdf -> default_app.exe
- plans.docx -> default_app.exe
- финансы.xlsx -> default_app.exe
- foo.mp4 -> default_app.exe
Извините, если мои навыки работы с Google недостаточно хороши, но я уже несколько дней ищу ответы.
решение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. Затем запустите его.