Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Autoplay realisieren, aber wie? (https://www.delphipraxis.net/127540-autoplay-realisieren-aber-wie.html)

Marco Steinebach 15. Jan 2009 08:58


Autoplay realisieren, aber wie?
 
Hallo zusammen,
Mein Programm sollte mit in der Liste der Programme auftauchen, die man auswählen kann, wenn eine Audio-CD eingelegt wird.
Okay, google: autoPlay V2
Grob konnte ich dem auch folgen, also die generelle Vorgehensweise ist mir schon klar.
Aaaber: wie kriege ich meinem Programm den Laufwerkbuchstaben der eingelegten CD übergeben? Die ganzen Dateien, die ja mittels COM übergeben werden könnten, brauch ich gar nicht unbedingt - außerdem weiß ich nicht mal, ob mein D5 das überhaupt kann.
Kann mir mal jemand weiterhelfen, wo cih mich schlau machen, kann, ein codeschnipselchen oder ähnliches?
Herzliche Grüße
Marco

matashen 15. Jan 2009 10:01

Re: Autoplay realisieren, aber wie?
 
Na wenn du autorun machst oder aus irgend einem Grund eine Datei mit deinem Programm geöffnet werden soll, dann übergibt das ganze doch Windows mit einem parameter an deine Anwendung

Also wenn du paramstr aufrufts hast du als
paramstr(0) Deine Anwendung
paramstr(1) Parameter 1..

das kannst du ja mal auslesen und ausgeben

normalerweise kommt da sowas wie /open "Zieldatei" dabei raus

damit kannst du dann
extractfilepath(<Zieldatei>) den Pfad rausbekommen
und mit extractfiledrive(<Zieldatei>) Dein Laufwerk

Gruß Matthias

Hyperspacer 15. Jan 2009 10:08

Re: Autoplay realisieren, aber wie?
 
Zitat:

Zitat von Marco Steinebach
Mein Programm sollte mit in der Liste der Programme auftauchen, die man auswählen kann, wenn eine Audio-CD eingelegt wird.

Auf diese Liste lässt sich zugreifen. Am einfachsten geht dies mit einem Toll von Microsoft: Tweak UI

Zitat:

Zitat von Marco Steinebach
Aaaber: wie kriege ich meinem Programm den Laufwerkbuchstaben der eingelegten CD übergeben?

Dein Programm wird dann mit dem Laufwerksbuchstaben als Parameter aufgerufen. So wie das matashen beschrieben hat. Nur ohne das /open glaube ich.
Also in der Form: "C:\meinprogramm.exe F:\"

Viele Grüße
Daniel

matashen 15. Jan 2009 10:12

Re: Autoplay realisieren, aber wie?
 
Das /open kommt glaub ich wenn über den explorer per "öffnen mit" ein kommando an dein Programm übergeben wird. Ich würde einfach mal alle Varianten die du bedienen willst ausprobieren und die Parameter angucken was Windows rüberkommen läßt. Dann kannst du entsprechende Aktionen in dein Programm einbauen.

gruß Matthias

Marco Steinebach 15. Jan 2009 11:06

Re: Autoplay realisieren, aber wie?
 
Halllo Zusammen,
Erstmal vielen herzlichen Dank für die raschen Antworten.
Ich glaube, ich hab mich ein wenig mißverständlich ausgedrückt.
Das Auswerten der Parameter ist nicht mein Problem, sondern wie ich Windows dazu bringe, mir welche zu liefern. ;-)
Also:
Unter
Code:
HKEY_Local_Machine
Software
Windows
Current Version
Explorer
AutoplayHandlers
können Autoplay-Handler definiert werden.
Man braucht einen sog. Content-Sniffer, und einen Eventhandler, oder 'nen ContenttypeHandler, hier geht mein unverständnis schon los.
Soweit, so fast gut, ;-), jetzt muß hier irgendwo mein Programm rein, und zwar gefolgt von "was auch immer", damit es dann auch wirklich "meinprogramm.exe f:\" wird.

Und genau hierfür bräuchte ich nochmal eure Hilfe.
Herzliche Grüße
Marco

matashen 15. Jan 2009 11:59

Re: Autoplay realisieren, aber wie?
 
Heist das du willst eine bestimmte Endung z.B. *.mp3 so eintragen das deine Anwendung die Standardsoftware dafür ist?

Gruß Matthias

olee 15. Jan 2009 12:02

Re: Autoplay realisieren, aber wie?
 
Also ParamStr(1) liefert dir den Ordner, aus dem das Prog gestartet wurde,
bzw. den Namen einer Datei, die mit deinem Prog geöffnet werden soll.

Also ich denke Windows wird dir da wohl dann das Laufwerk vom Autostart übergeben...
... Also: Probieren geht über ... ihr kennts ja :wink:

MFG

Marco Steinebach 15. Jan 2009 12:03

Re: Autoplay realisieren, aber wie?
 
Zitat:

Zitat von matashen
Heist das du willst eine bestimmte Endung z.B. *.mp3 so eintragen das deine Anwendung die Standardsoftware dafür ist?

Gruß Matthias

Nein, nicht ganz. Wenn man eine Audio CD ins laufwerk legt, kommt ein Dialog zur Auswahl, was man jetzt machen will. z.B.: mit Nero brennen, ordner öffnen, mit Windows Media Player wiedergeben etc.
Und da soll auch noch auftauchen:
"Mit Marco's Programm starten."
Gruß
Marco

matashen 15. Jan 2009 13:32

Re: Autoplay realisieren, aber wie?
 
Ich hab jetzt mal einen alten Fred aus der DP gekramt wo evtl die antworten stehen, wie du deine Anwendung registrierst.

http://www.delphipraxis.net/internal...ct.php?t=61377

hoff der Hilft dir was.

Gruß Matthias

Hyperspacer 15. Jan 2009 14:11

Re: Autoplay realisieren, aber wie?
 
Zitat:

Zitat von Marco Steinebach
Wenn man eine Audio CD ins laufwerk legt, kommt ein Dialog zur Auswahl, was man jetzt machen will. z.B.: mit Nero brennen, ordner öffnen, mit Windows Media Player wiedergeben etc.
Und da soll auch noch auftauchen:
"Mit Marco's Programm starten."

Genau das hab ich doch schon oben geschrieben. Ich kenne den Registry-schlüssel dafür selber nicht. Aber das ist doch auch egal, es sein denn du willst dir auch einen Installer schreiben, der das automatiscvh macht.

Wenn du das nur an deinem PC eintragen willst nutze Tweak UI von Microsoft. Ist kostenlos und schön klein. Damit kannst du deine Programm in genau diese Liste für AudioCDs eintragen.
Link: download Tweak UI

Bei Tweak UI gehst du dann auf: My Computer -> AutoPlay -> Handlers -> Create. Programm eintragen, fertig!
Hab ich selbst schon gemacht.

Und wenn du dann umbedingt den Reg-Schlüssel und die nötigen einträge wissen willst, nimm Regmon und zeichne das ganze damit auf;)

Viele Grüße
Daniel


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz