У меня есть определенная папка с разными типами файлов (txt, pdf, docx, что угодно), при двойном щелчке по File Explorer я не хочу, чтобы приложения по умолчанию открывали эти файлы. Вместо этого я хочу, чтобы определенное приложение открывало эти файлы, которые находятся только в этой конкретной папке.

Я объясняю это по-другому. Скажем, папка C:\Test содержит следующие файлы:

  • test.txt
  • manual.pdf
  • plans.docx
  • finance.xlsx
  • foo.mp4

Если эти файлы были найдены в любой другой папке вместо C:\Test, их приложения по умолчанию открывают их:

  • test.txt -> Блокнот
  • manual.pdf -> Adobe Reader
  • планы.docx -> Microsoft Word
  • finance.xlsx -> Microsoft Excel
  • foo.mp4 -> Windows Media Player

Но так как эти файлы находятся в C:\Test, когда я дважды щелкаю по ним в File Explorer, я хочу, чтобы все они открывались с помощью default_app.exe:

  • test.txt -> default_app.exe
  • manual.pdf -> default_app.exe
  • plan.docx -> default_app.exe
  • finance.xlsx -> default_app.exe
  • foo.mp4 -> default_app.exe

Извините, если мои навыки Google не достаточно хороши, но я искал ответы в течение нескольких дней.

2 ответа2

3

Короткий ответ - нет, и вы бы не хотели, чтобы это работало как-то иначе.

Если это может произойти, то одна программа может захватить целые папки на вашем компьютере. Право доступа к файлам будет неправильно управляться, а файловая система будет фантастической целью для вредоносных программ.

Кроме того, вероятность того, что ваше одно приложение сможет прочитать все типы файлов и понять их для пользователя, маловероятна.

Вы можете хранить файлы в базе данных, а затем заставить свою программу вызывать их из базы данных вместо файловой системы Windows. В качестве альтернативы вы можете сделать так, чтобы ваше приложение делало переход по папке и изменяло расширения файлов на те, которые оно понимает само по себе, и устанавливало эти ассоциации в Windows.

1

Вы можете сделать это с помощью скрипта 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. Тогда запустите это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .