Seite 1 von 2
Explorer - Drop auf eigenen Dateitypen ermöglichen
Verfasst: 12.03.2011 04:45
von STARGÅTE
Tachchen,
ich möchte gerne auch eine Aktion starten lassen, wenn ich (wie bei .exe oder .zip) eine andere Datei per Drag&Drop auf diese Datei ziehe.
Im Netz habe ich
Creating Drop Handlers gefunden, womit ich jedoch leicht überfordert bin.
Hat jemand von euch schon Erfahrung damit oder gar ein Stück Code ?
Hintergrund: Ich habe mir mein eigenes Container-Format geschrieben, und möchte nun eben auch Dateien durch Drop direkt hinzufügen, ohne erst mein Container zu öffnen (dort hab ich ja Drop, dank PB)
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
Verfasst: 12.03.2011 13:04
von RSBasic
1. Du generierst eine ClassID/GUID:
Code: Alles auswählen
EnableExplicit
Procedure.s MakeGUID()
Protected guid.GUID, lpsz.s{76}
If CoCreateGuid_(@guid) = #S_OK
ProcedureReturn PeekS(@lpsz, StringFromGUID2_(guid, @lpsz, 76), #PB_Unicode)
EndIf
EndProcedure
MessageRequester("","GUID: "+MakeGUID(),0)
2. Du musst ein paar Registry-Einträge erstellen und zwar die, die auf der MSDN-Seite beschrieben sind:
Dann müsste das eigentlich funktionieren.
Die Registry-Beispielcodes fürs Lesen und Schreiben findest du hier im Forum, wenn du z.B. nach RegCreateKeyEx suchst.
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
Verfasst: 12.03.2011 13:13
von DarkDragon
Dafür musst du eine COM DLL schreiben, was mit PB wirklich grauenvoll ist:
Viele COM DLLs exportieren globale Variablen etc., was in PB nicht implementiert ist. Man müsste also auf die FASM Ebene runtergehen und dort die Symbole zusätzlich exportieren beim schreiben der DLL.
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
Verfasst: 12.03.2011 14:38
von STARGÅTE
Auf eine Anwendung wie bei "open" kann ich garnicht verweisen ?
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
Verfasst: 12.03.2011 14:43
von RSBasic
Möchtest du dein Dateityp nur mit deiner Anwendung verknüpfen oder was genau meinst du mit "open"?
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
Verfasst: 12.03.2011 14:44
von DarkDragon
STARGÅTE hat geschrieben:Auf eine Anwendung wie bei "open" kann ich garnicht verweisen ?
Nein. Schon bei Windows Vista war diese Methode veraltet soweit ich weiß. Alles wird COM!
@RSBasic:
Nein, er will wenn man etwas auf einen von ihm registrierten Dateitypen draufschmeißt wissen, was es ist.
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
Verfasst: 12.03.2011 15:09
von RSBasic
Hm okay,
aber ginge das nicht automatisch?
Wenn man einen Dateityp mit einer eigenen Anwendung verknüpft und man nimmt irgendeine Datei und dropt es auf die Datei mit dem registierten Dateityp, dann müsste doch danach automatisch die Anwendung, die mit dem Dateityp verknüpft ist, gestartet werden und in der Anwendung kann man mit ProgramParameter ermitteln, welche beliebige Datei gedropt wurde:
Oder habe ich dich falsch verstanden und er will was ganz anderes?
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
Verfasst: 12.03.2011 15:12
von DarkDragon
RSBasic hat geschrieben:Hm okay,
aber ginge das nicht automatisch?
Wenn man einen Dateityp mit einer eigenen Anwendung verknüpft und man nimmt irgendeine Datei und dropt es auf die Datei mit dem registierten Dateityp, dann müsste doch danach automatisch die Anwendung, die mit dem Dateityp verknüpft ist, gestartet werden und in der Anwendung kann man mit ProgramParameter ermitteln, welche beliebige Datei gedropt wurde:
Oder habe ich dich falsch verstanden und er will was ganz anderes?
Nein, du hast alles richtig verstanden, doch es geht nicht automatisch

.
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
Verfasst: 12.03.2011 15:19
von RSBasic
Danke für deine Antwort.
Ich wollt' eigentlich einen neuen Film anschauen, aber egal.
Ich hab einen neuen Dateityp in der Registry erstellt und wollte eine beliebige Datei auf meine Datei droppen.
Hm mist, jetzt weiß ich, wo das Problem liegt.
Ich werd mal ein bisschen herumexperimentieren.
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
Verfasst: 12.03.2011 15:42
von RSBasic
Ok habs versucht

, ich hab im Prinzip alles gemacht, was man machen sollte, außer natürlich die Befehlaufrufe über COM+, aber am Ende hat es leider immernoch nicht funktioniert.