Ich habe einSpezifischOrdner mit verschiedenen Dateitypen (txt, pdf, docx,irgendetwas), auf das ich beim Doppelklicken im Datei-Explorer nicht möchte, dass die Standardanwendungen diese Dateien öffnen. Stattdessen möchte ich, dass eine bestimmte Anwendung diese Dateien öffnet, die sich nur in diesem bestimmten Ordner befinden.
Ich erkläre das anders. Angenommen, der Ordner C:\Test enthält die folgenden Dateien:
- test.txt
- handbuch.pdf
- Pläne.docx
- finanzen.xlsx
- foo.mp4
Wenn diese Dateien in einem anderen Ordner als C:\Test gefunden wurden, werden sie von ihren Standardanwendungen geöffnet:
- test.txt -> Notizblock
- handbuch.pdf -> Adobe Reader
- pläne.docx -> Microsoft Word
- finance.xlsx -> Microsoft Excel
- foo.mp4 -> Windows Media Player
Da sich diese Dateien jedoch im Verzeichnis C:\Test befinden, möchte ich, dass sie alle von default_app.exe geöffnet werden, wenn ich im Datei-Explorer darauf doppelklicke:
- test.txt -> default_app.exe
- handbuch.pdf -> default_app.exe
- pläne.docx -> default_app.exe
- finance.xlsx -> default_app.exe
- foo.mp4 -> default_app.exe
Entschuldigen Sie, wenn meine Google-Kenntnisse nicht ausreichen, aber ich habe seit einigen Tagen nach Antworten gesucht.
Antwort1
Die kurze Antwort lautet: Nein, und Sie möchten auch nicht, dass es anders funktioniert.
Wenn dies passieren könnte, könnte ein einzelnes Programm ganze Ordner auf Ihrem Computer kapern. Dateiberechtigungen würden falsch verwaltet und das Dateisystem wäre ein fantastisches Ziel für Malware.
Außerdem ist es unwahrscheinlich, dass Ihre App alle Dateitypen lesen und für den Benutzer verständlich machen kann.
Sie können die Dateien in einer Datenbank speichern und sie dann von Ihrem Programm aus der Datenbank statt aus dem Windows-Dateisystem abrufen lassen. Alternativ können Sie Ihre App den Ordner durchsuchen lassen und die Dateierweiterungen in solche ändern, die nur sie versteht, und diese Zuordnungen in Windows festlegen.
Antwort2
Sie könnten dies mit einem AutoHotkey-Skript tun.
; 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
Speichern Sie diesen Code einfach in einer Datei namens explorer-double-click.ahk (oder einer ähnlichen Datei mit der Endung .ahk).
Sie sollten SpecialDir und ExecWith (Zeilen 15 und 16) bearbeiten, um die Pfade entsprechend festzulegen.
Sie müssen zuerst AutoHotkey installieren. Führen Sie es dann aus.