Datei Assoziation
-
Kennt jemand einen kurzen Algorithmus um den Dateinamen einer Datei Assoziation zu ermitteln.
Ich meine das so Dateiendung übergeben und als Rückgabe dann den Dateipfad
-
Willst du uns verkackeiern?
-
@SK, wieviele Dateipfade brauchst du? Geh in ein Ausgangsverzeichnis, F3, *.[myEndung], abfeuern.
Jetzt mußt du nur noch von F3 lernen und das nachbauen.
Vergiß nicht, die RAM-Riegel zu lockern. Dann wird der PC assoziativ und deutet nur den Pfad raus, den er am sympathischsten findet. Oder du läßt deine App nur ein Randomergebnis ausspucken. Das ist auch assoziativ.
<edit>Ist es noch lang bis zum 1.04.?</edit>
-
@Fritzi und Omega-X:
Das hört jetzt sofort auf! Was soll denn das?@SK: vielleicht solltest du deine Frage nocheinmal etwas präzisieren.
-junix
-
@WebFritzi
NEIN ICH WOLLTE DICH NICHT VERKACKEIERN!@Omega-X
Du bist woll der Absoluter Experte@junix
Ich möchte in mein Programm eine Dateiendung z.B. "*.txt" mit meinen Programm assoziieren. Und ich möchte außerdem die Möglichkeit haben die Assoziation wieder aufzuheben. Bevor die Assoziation aufgehoben wird erscheint es mir sinnvoll festzustellen ob die Dateiendung auch Tatsächlich mit meinen Programm Assoziiert ist und nicht mit ein andren.
-
Hi SK
Du solltest Dich etwas praeziser ausdruecken!!! Da wird doch keiner schlau draus.
Kein Wunder, wenn sich einige versch****ert vorkommen.
Aber mal im Karl aeh Ernst:
Ich glaube Du meinst:
- zu einer gegebenen Dateinamenserweiterung (z.B. .DOC) willst Du die damit
verknuepfte Anwendungsdatei (z.N. Word.exe) mit vollem Pfad haben?Bei mir geht's mit Win2K so:
AnsiString __fastcall TForm1::GetFileApplication(AnsiString File) { AnsiString AS; AnsiString AppName; TStringList *ASL=new TStringList; TRegistry *RIF; char drive[MAXDRIVE]; char dir[MAXDIR]; char file[MAXFILE]; char ext[MAXEXT]; int i,j; fnsplit(File.c_str(),drive,dir,file,ext); RIF=new TRegistry(); RIF->RootKey=HKEY_CLASSES_ROOT; RIF->GetKeyNames(ASL); if (RIF->OpenKey(ext,false)) { AS=RIF->ReadString(""); } RIF->OpenKey("\\",false); if (RIF->OpenKey(AS,false)) { if (RIF->OpenKey("Shell\\Open\\Command",false)) { RIF->GetValueNames(ASL); AS=RIF->ReadString(""); } } delete ASL; RIF->CloseKey(); delete RIF; return(AS); }
In der WinApi- Ecke solltest Du aber noch was besseres finden. Da existiert glaub ich 'ne WinAPI- Funktion
Zum Verknuepfen Deines Programmes mit einem Dateityp gab's letztens einen Beitrag. Weis aber nicht mehr wo der war.
-
Für die Assoziation musst du einen entsprechenden Registry-Eintrag erzeugen (siehe FAQ, "Öffnen mit ...").
Und für die Überprüfung musst du halt nachsehen, ob eine entsprechender Eintrag in der Registry vorhanden ist und diesen auswerten.
DerAltenburger:
Komplettlösungen bitte nur im "Notfall". Danke![ Dieser Beitrag wurde am 13.03.2003 um 12:27 Uhr von Jansen editiert. ]
-
Sorry, ich hatte die Frage wirklich als Gag verstanden. "Assoziation" ist nun mal ein subjektiver Begriff - der im Zusammenhang vielleicht etwas zweckentfremdet wird. Sorry, war keine böse Absicht. Wenn, dann geh ich allenfalls auf den gelungenen Gag ein, :p was hier aber nicht angebracht ist.
@SK, auf deine Frage kann ich leider nur zum Teil eingehen. Mit ParamStr() oder GetCommandLine() kannst du den geklickten Dateinamen mit Pfad ermitteln.
Wie du prüfst, ob deine Anwendung die Standardanwendung ist, weiß ich nicht. Sehr wahrscheinlich mußt du den Registry-Schlüssel überprüfen.
-
@junix: Mein Beitrag sollte als Animation dienen, die Frage nochmal besser zu stellen. IMHO sollte jeder Fragesteller darauf achten, dass er seine Frage auch allgemein verständlich stellt. Wer dumme Fragen stellt, bekommt auch dumme Antworten!
-
Original erstellt von WebFritzi:
@junix: Mein Beitrag sollte als Animation dienen, die Frage nochmal besser zu stellen. IMHO sollte jeder Fragesteller darauf achten, dass er seine Frage auch allgemein verständlich stellt. Wer dumme Fragen stellt, bekommt auch dumme Antworten!Genau! Recht hat er, der WebFritzi!
-
Nein er hat nicht recht. Den die Art und weise dieses sog. Hinweises liess bei weitem keine Rückschlüsse auf eine derartige Animation zu!
-junix