Neue Antwort
Dies ist das absolute Minimum, das Sie für eine korrekte Zuordnung benötigen. Ich habe dies herausgefunden, indem ich meinen eigenen Tipp Nummer 4 unten ausprobiert habe ( Sie können herausfinden, wie Windows dies für Sie erledigt ... ).
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.myext]
@="myext"
[HKEY_CLASSES_ROOT\myext]
@=".myext file"
[HKEY_CLASSES_ROOT\myext\shell]
[HKEY_CLASSES_ROOT\myext\shell\open]
[HKEY_CLASSES_ROOT\myext\shell\open\command]
@="\"C:\\...\\run.exe\" \"%1\""
Sie können DefaultIcon und andere Dinge nach Bedarf hinzufügen, aber ohne DefaultIcon verwendet Windows einfach das Symbol in run.exe
(falls vorhanden). Sie können eines im Batch-to-Exe-Konverter hinzufügen, wenn Sie das erstellen run.exe
.
Bedeutung %1
und Anführungszeichen
Der Grund, warum Sie ein %1
dort einfügen müssen, besteht darin, den Pfad und den Namen der zugehörigen Datei ( file.myext
) an das Programm zu übergeben run.exe
. Ohne dies weiterzugeben, ist Ihre Zuordnung sinnlos, da sie lediglich als Verknüpfung fungiert. Dies ist nicht erforderlich, da Sie einfach eine normale Verknüpfung erstellen können run.exe
, um denselben Zweck zu erfüllen.
Ihre Batch - Datei sollte auch eine hat %1
irgendwo im Innern , so dass der Pfad und der Name der zugehörigen Datei ( file.myext
) wird verwendet , in der Batch - Datei (vermutlich es passieren zu Ihren mjar.jar
denen etwas tun mit der Datei). Unabhängig davon, auf welche zugeordnete Datei Sie doppelklicken, erhalten Sie von Ihrem Java-Programm immer das gleiche Ergebnis. Dies ist wiederum sinnlos, da Sie einfach eine Verknüpfung zur Batch-Datei haben können, um denselben Zweck zu erfüllen.
Es ist auch wichtig, die %1
Anführungszeichen einzuschließen , da Dateipfade Leerzeichen enthalten können und "
diese Leerzeichen ohne die Anführungszeichen ( ) den Pfad in zwei oder mehr Argumente aufteilen können (wenn der gesamte Pfad als ein Argument betrachtet werden soll).
Beispiel Batch-Datei
Hier ist die Batch-Datei, in die ich zum exe
Testen konvertiert habe . Es wird einfach angezeigt, was auch immer der Wert von %1
ist.
@echo %1
@pause
Ihre Batch-Datei könnte wie mjar.jar
folgt aussehen (damit Sie den Pfad und den Namen der Datei erhalten, auf die Sie doppelklicken):
start /min "C:\...\javaw.exe -jar" "C:\...\mjar.jar" "%1"
Ich habe die exe
Datei mit der .myext
Erweiterung verknüpft (mithilfe der Methode in Tipp 4) und dann die Registrierung überprüft, um die obige .reg
Datei zu erstellen . Wenn ich einen Doppelklick auf eine Datei mit .myext
Erweiterung, öffnet sich ein Befehlsfenster angezeigt wird ( echo
Befehl) , um den Pfad und den Namen der Datei , die ich doppelt geklickt (dies ist , wie mein Test Batch - Datei wird mit der zugehörigen Datei).
Java-Programm
(Dies ist eine Zusammenfassung der vollständigen Chat-Diskussion , die Ihr Problem letztendlich gelöst hat.) Ihr in enthaltenes Java-Programm mjar.jar
muss darauf vorbereitet sein, das eingehende Argument zu akzeptieren und es zu verwenden. Ihr Programm soll die Datei, auf die sich das eingehende Argument bezieht, automatisch öffnen und deren Inhalt anzeigen. Daher sollte die main
Methode ungefähr so aussehen:
public static void main (String[] args) {
if (args.length >= 1) {
openFile(args[0]);
}
}
Die openFile
Methode ist eine Methode, die die Datei unter dem übergebenen Namen öffnet. Die if
Anweisung stellt sicher, dass args[0]
nur gelesen wird, wenn ein solches Argument vorliegt (Vermeidung ArrayIndexOutOfBoundsException
). args[0]
Im obigen Code wird nur das erste Argument verwendet. alle anderen Argumente ( args[1]
, args[2]
usw.) werden ignoriert. Die openFile
Methode wäre ungefähr so ( Deskriptoren und Rückgabetypen nicht enthalten ):
openFile(String filename) {
// code here to open the file referred by "filename" variable,
// read its contents and display it on the GUI
// or use it in the program as intended
}
Wenn in Ihrem Programm ein Open- Befehl in die GUI integriert ist, kann Ihre Anwendung, nachdem der Benutzer eine Datei mit diesem Befehl ausgewählt hat, dieselbe openFile
Methode verwenden, um die ausgewählte Datei zu öffnen und ihren Inhalt anzuzeigen.
Vorherige Antwort
Ich habe noch keine endgültige Antwort auf Ihr Problem , aber hier sind einige Tipps, um Ihnen den Einstieg zu erleichtern:
Haben Sie versucht, Anführungszeichen hinzuzufügen? So: @="\"C:\\...\\run.exe\" \"%1\""
In der Registrierung wird der (Standard-) Wert folgendermaßen angezeigt:"C:\...\run.exe" "%1"
Lesen Sie das offizielle MSDN-Dokument von Microsoft zur Dateitypzuordnung . Sie müssen sich auch über programmatische Kennungen informieren (die im ersten Absatz dieses Dokuments verlinkt sind).
Versuchen Sie zuerst, Ihren .myext
Dateityp mit Notepad zu verknüpfen . Finden Sie heraus, wie Notepad mit .txt
Dateien verknüpft ist, und folgen Sie dem Beispiel. Bei korrekter Ausführung sollte Notepad Ihre file.myext
Datei öffnen .
Sie können herausfinden, wie Windows dies für Sie erledigt. Rechtsklick file.myext
, klicken Sie auf Öffnen mit> Wählen Sie Standardprogramm ... ^ und Durchsuchen Sie Ihre finden run.exe
Datei. Verknüpfen und öffnen Sie die Windows-Registrierung und untersuchen Sie sie, um herauszufinden, wie Windows Ihre manuelle Zuordnung gespeichert hat. Sie können dann einfach den Dateityp und die programmatische Kennung in Registrierungsdateien exportieren.
^ Wenn file.myext
keine Zuordnung besteht, klicken Sie auf Öffnen> Wählen Sie ein Programm aus einer Liste der installierten Programme aus .
PS1: Offenbar Sie müssen doppelt Backslash in .reg - Dateien haben.
PS2: Es ist besser, Inhalte direkt in der Registrierung zu bearbeiten, die Effekte zu testen, dann die Schlüssel in REG-Dateien zu exportieren und sie zu einer einzigen Datei zu kombinieren, als selbst eine REG-Datei zu erstellen.
command
Schlüssel zu verwenden, um festzustellen, ob dies funktioniert?