Datei mit Programm öffnen
-
Ich habe meinem Programm eine Endung zugewiesen. Beim Doppelklick auf die datei versucht er es mit meinem Programm zu öffnen. Mein Programm weis aber nix damit anzufangen. Was kann ich tun?
-
Tach auch
Also wie jetzt?
Du hast aus deiner exe was anderes gemacht und kannst es jetzt nicht mehr öffnen?
Benenne die doch einfach wieder in *.exe (oder meintest du was anderes?)
-
Hi!
Hast Du mal geschaut ob Du den Dateinamen in diesem Falle als Parameter bekommst ? (GetCommandLine)
Er möchte einen Dateityp mit seinem selbst geschriebenen Programm verknüpfen und die Datei damit öffnen. Eventuell kennst Du es unter "Zeichenfolgen für Dokumentenvorlagen" - aber ka wie man das nachträglich modifiziert / nachfügen kann.
-
Ich habe es mal mit GetCommandline getestet da wird nix übergeben. Habt Ihr vieleicht noch eine Idee?
-
Also wenn es sich um ein MFC Programm handelt das als SDI/MDI mit dem Assistenten erstellt wurde, dann wird am Anfang CDocument::Serialize() aufgerufen und die Datei übergeben, die doppelgecklickt wurde.
Sonst weiß ich auch nicht

-
du must ne -1 mit übergeben damit du den pfad bekommst.
-
Kannst Du das mit der -1 näher erläutern ?
-
So habe ich mein Programm mit einenem Dateiformat verbunden:
:
char ch_file[_MAX_PATH],ch_path[_MAX_PATH]; GetModuleFileName(NULL, ch_file, _MAX_PATH); CString dir; dir.Format("%s",ch_file); dir += " %1"; lstrcpy(ch_path, ch_file); *_tcsrchr(ch_path, __TEXT('\\')) = 0; CRegKey key; key.Create(HKEY_CLASSES_ROOT,".abc",REG_NONE,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,NULL); key.SetValue("Test-Datein" ,""); key.Close(); key.Create(HKEY_CLASSES_ROOT,"Test-Datein",REG_NONE,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,NULL); key.SetValue("CCP-Profile" ,""); key.Close(); key.Create(HKEY_CLASSES_ROOT,"Test-Datein\\shell\\open\\command",REG_NONE,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,NULL); key.SetValue(dir ,""); key.Close(); key.Create(HKEY_CLASSES_ROOT,"Test-Datein\\shell\\edit\\command",REG_NONE,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,NULL); key.SetValue(dir ,""); key.Close();
-
Stimmt hatte ich vergessen, es handelt sich um Kein SDI/MDI sondern um ein dialogbasierendes Programm.
-1 kann nicht sein da keine Parameter mit übergeben werden. GetCommandLine zeigt nichts an.
-
Hat keiner mehr eine Idee?
-
CString temp(GetCommandLine());
MessageBox(temp,temp,NULL);
-
Ja macht das in die Instance deines Programms!!!
CCommandLineInfo cmdInfo;
ParseCommandLine( cmdInfo );
AfxMessageBox(cmdInfo.m_strFileName);
-
GetCommandLine habe ich ausprobiert, da kommt aber nix zurück!