Drag & Drop, Ordnerauswahl und Integration ins Kontextmenü
-
Ich habe zwei Probleme:
Wie kann ich Dateien aus irgendeinem Fenster per Drag & Drop in mein Programm ziehen, so dass der entsprechende Dateipfad dann in einem Textfeld steht?
Wie ist es möglich, ein Dialogfeld zu öffnen, in dem man Ordner auswählen kann. Windows hat sowas ja, ich hab aber keinen Schimmer, wie ich das mit MFC hinkriegen kann. Mehr als den FileDialog krieg ich nicht hin.
Gibt es eine Möglichkeit, einen Eintrag in das Kontextmenü einzufügen, das beim Rechtsklick auf Dateien und Ordner erscheint, mit welchem mein Programm aufgerufen wird ? Wenn ja, müsste der Pfad dieser Datei an mein Programm übertragen werden. Geht das?
ich Danke allen schon mal im Voraus für ihre Mühe!
-
Zu 1:
Warum benutzt du nicht einfach ein FileDialog ?
Zu 2:
BROWSEINFO bi = { 0 }; bi.lpszTitle = _T("Bitte wählen Sie das gewünschte Verzeichnis :"); LPITEMIDLIST pidl = SHBrowseForFolder (&bi); if (pidl != 0) { TCHAR path[MAX_PATH]; if (SHGetPathFromIDList(pidl, path)) { //AfxMessageBox(path); } IMalloc * imalloc = 0; if (SUCCEEDED(SHGetMalloc(&imalloc))) { imalloc->Free (pidl); imalloc->Release(); } }
Gruß
:: NoName ::
-
Weil das für DIESES Programm viel zu aufwendig ist. Mit ihm kann man die Zugriffsrechte auf Dateien für Windows XP Home Edition ändern. Normallerweise ist dies bei XP Home nur mit dem Befehl cacls möglich, und das ist ziemlich aufwendig. Es wäre hier viel komfortabler, wenn man dieses Programm direkt an den Dateien aufrufen kann.
-
@ NoName
So, Danke für deinen Code-Schnipsel. Funktioniert super!
Trotzdem würde ich noch gerne wissen, wie ich das Programm ins Dateisystem einbinden kann. Kann mir da jemand helfen?
-
Damit ich jetzt nicht extra einen neuen Thread dafür aufmachen muss highlighte ich mal den alten, wenn das niemanden stört...
Es geht um seine dritte Frage. Vor diesem Problem stehe ich nämlich momentan auch gerade. Ich habs nun schon so hingekriegt dass ich mein Programm bei den bestimmten Dateien auswählen kann und wenn ich es öffne lädt er auch alles korrekt etc. Nun würde ich gerne, dass bei den Files mit der Endung .pt* beim rechtsklick ein weiterer Kontextmenüeintrag wie z.B. "PIT-File editieren" kommt. Wie bei WinRAR wenn man auf Archive rechtsklickt. Bei Codecuru und Codeproject hab ich mich schon gründlich umgeschaut, aber entweder ist mein Suchverfahren schlecht oder es gibt da wirklich keine Erklärung. Also bitte ich hier um Hilfe
Danke für die Aufmerksamkeit
-
Ich vermute, das ist ein Eintrag in der Registry. Da gibt es einen Zweig mit allem Dateiendungen die irgendwie bekannt sind.
Vielleicht kannst du dich da ja einklinken. Ich suche mal nach rar, dann kann ich dir vielleicht mehr schreiben.Edit: (Ich nutze 2000)
Erste Fundstelle: HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\
sieht schon mal nett aus - leider verstehe ich den Schlüssel nicht.
Und dann gibt es noch HKEY_CLASSES_ROOT\.rarNaja, du kannst ja noch ein wenig gucken - vielleicht findest du es ja raus.
Achja: Wenn du in der MSDN mal im Index "shell" eingibst, gibt es viel zu lesen. Wie weit es dir hilft hätte ich testen müssen, aber es sieht zum Großteil echt gut aus.
-
Vielleicht findest du von dort aus eine Lösung - würd mich freuen, wenn du sie dannach heir postest :p
-
-
Danke, Idiot