Explorer - Drop auf eigenen Dateitypen ermöglichen
Explorer - Drop auf eigenen Dateitypen ermöglichen
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)
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)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
1. Du generierst eine ClassID/GUID:
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.
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)
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.
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
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.http://msdn.microsoft.com/en-us/library/cc144165(v=vs.85).aspx#implement hat geschrieben:Implementing Drop Handlers
Like all Shell extension handlers, drop handlers are in-process Component Object Model (COM) objects implemented as DLLs. They export two interfaces in addition to IUnknown: IPersistFile and IDropTarget.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
Auf eine Anwendung wie bei "open" kann ich garnicht verweisen ?
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
Möchtest du dein Dateityp nur mit deiner Anwendung verknüpfen oder was genau meinst du mit "open"?
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
Nein. Schon bei Windows Vista war diese Methode veraltet soweit ich weiß. Alles wird COM!STARGÅTE hat geschrieben:Auf eine Anwendung wie bei "open" kann ich garnicht verweisen ?
@RSBasic:
Nein, er will wenn man etwas auf einen von ihm registrierten Dateitypen draufschmeißt wissen, was es ist.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
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?
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?
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
Nein, du hast alles richtig verstanden, doch es geht nicht automatischRSBasic 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?

Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Re: Explorer - Drop auf eigenen Dateitypen ermöglichen
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.
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
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.
