Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Assistent zum CD Brennen unter Vista aufrufen (https://www.delphipraxis.net/107954-assistent-zum-cd-brennen-unter-vista-aufrufen.html)

groundcontrol 5. Feb 2008 09:40


Assistent zum CD Brennen unter Vista aufrufen
 
Moin zusammen,

ich habe vor einigen Jahren eine Anwendung geschrieben mit der meine Kunden diverse Dateien auf CD brennen können. Ich habe damals die Komponente TCDBurner (http://www.bayden.com/delphi/cdburner.htm) genutzt. Im wesentlichen nutze ich die Methode "StartBurn" die (nachdem ich die zu brennenden Dateien in das entsprechende Brennverzeichnis kopiert habe) den Brennassistenten von XP aufruft.
Nun hat mein Kunde auf Vista umgestellt und da gibt es das Problem, daß der Brennassistent zwar startet, jedoch meldet es wären keine Dateien zum Brennen vorhanden. Definitiv sind sie das aber, ich kann auch mit dem Explorer den Brennassistenten manuell starten und dann funktioniert es problemlos.
Der Komponentenautor bestätigt das auch auf der o.g. Homepage mit "5/20/2007 -- Note: The code provided here does not generally appear to work on Windows Vista. While the ICDBurn interface still exists, launching the Wizard always appears to return "There are no files to burn" despite the files appearing in the staging area. Investigation continues..."
Offensichtlich gibt es noch keinen Fix für das Problem.

Gibt es denn eine andere Möglichkeit wie ich den Brennassistenten aus der Anwendung heraus aufrufen kann?
Mit einer Nachbildung eines eigenen "Assistenten" via IMAPI-Aufrufe ist mein Kunde nicht einverstanden, da die Anwendung in verschiedensten Sprachen läuft und es keinen Sinn macht eine multlinguale Oberfläche zu bauen, wenn es im Betriebssystem diese schon gibt.

Ich würde mich freuen, wenn es eine Lösung für mein Problem gibt.

Schönen Gruß
Groundcontrol

OregonGhost 5. Feb 2008 11:35

Re: Assistent zum CD Brennen unter Vista aufrufen
 
Mich irritiert hierbei, dass einerseits das Vista SDK keinerlei Einschränkungen von ICDBurn erwähnt, andererseits dass in einem Technet-Chatlog explizit auf eine bestimmte Verwendungsmöglichkeit von ICDBurn unter Vista hingewiesen wird. Handelt es sich vielleicht "nur" um ein Rechteproblem? Da gab es doch schon unter XP damals gewisse Probleme, für die u.a. Nero Burnrights entwickelt wurde, eventuell ist die UAC da noch etwas brutaler. Hast du einmal das Programm mit Admin-Rechten gestartet und das Brennen ausprobiert?

groundcontrol 5. Feb 2008 12:03

Re: Assistent zum CD Brennen unter Vista aufrufen
 
Zitat:

Zitat von OregonGhost
Handelt es sich vielleicht "nur" um ein Rechteproblem? Da gab es doch schon unter XP damals gewisse Probleme, für die u.a. Nero Burnrights entwickelt wurde, eventuell ist die UAC da noch etwas brutaler. Hast du einmal das Programm mit Admin-Rechten gestartet und das Brennen ausprobiert?

Ja, hab ich grad getestet. Das löst das Problem leider nicht, die Meldung ist die gleiche.
Aber danke für den Tipp schonmal.

ralfschwalbe 5. Feb 2008 15:26

Re: Assistent zum CD Brennen unter Vista aufrufen
 
Hallo,

leider kann ich Dir auch nicht helfen...

Aber ich bemerkte (leider erst durch Deine Frage), dass ich das gleiche Problem habe. Es wäre also sehr nett, solltest Du zu einer Lösung kommen, wenn Du diese dann mal kurz vorstellst...

groundcontrol 6. Feb 2008 13:50

Re: Assistent zum CD Brennen unter Vista aufrufen
 
Ich hätte da noch eine Idee.
Gibt es eine Möglichkeit den Windows Explorer von Vista von Delphi aus quasi "fernzusteuern"?
Ich bräuchte ja nur einen Klick im Explorer auf "Daten auf CD brennen" (oder wie auch immer der Button heißt)...

OregonGhost 6. Feb 2008 15:45

Re: Assistent zum CD Brennen unter Vista aufrufen
 
Buttons fernzusteuern ist eine schlechte Idee. Sonst wirst du schon bald wieder ein Update machen müssen, wenn der Button plötzlich anders heißt o.ä.

Ich nehme an, es ist keine Option, einfach den CD-Ordner zu öffnen und in den Vordergrund zu holen, so dass der Benutzer dort selbst auf "CD brennen" klicken kann?

groundcontrol 6. Feb 2008 16:27

Re: Assistent zum CD Brennen unter Vista aufrufen
 
Leider nicht, die Anwendergruppe ist damit teilweise überfordert.

Ich dachte auch weniger an eine echte Fernsteuerung, sondern eher an einen API-Befehl (dem es dann auch egal wäre, welche Caption der Button hat). Ich tummel mich aber eher selten in solch tiefen Delphi- rsp. Windowsschichten, von daher frag ich halt hier.

ralfschwalbe 7. Feb 2008 10:15

Re: Assistent zum CD Brennen unter Vista aufrufen
 
Hi,

hab noch ein bisschen geforscht...

Das Problem scheint allerdings ganz woanders zu liegen!

Ich habe von TCDBurner eine oder mehrere Dateien ins "Brennverzeichnis" kopieren lassen, dann raus aus der Prozedur, rein in den Explorer und auf brennen...

Keine Chance, der sagt dann auch, dass nicht vorhanden ist!

Ist es möglich, das der der Explorer evtl. eine "Verzeichnisüberwachung" benutzt und somit nur das kennt, was er selbst kopiert hat? Das würde allerdungs bedeuten, dass noch woanders eine Dateiliste liegen müsste...

groundcontrol 8. Feb 2008 10:06

Re: Assistent zum CD Brennen unter Vista aufrufen
 
Mahlzeit zusammen,

ich hätte da eine Lösung:
http://www.delphi3000.com/printartic...ArticleID=4730

Damit konnte ich meine Anwendung umschreiben.

Schöne Grüße

ralfschwalbe 5. Feb 2009 08:37

Re: Assistent zum CD Brennen unter Vista aufrufen
 
Hallo,

ist zwar etwas spät, aber besser spät als nie!! oder?? :mrgreen:

Es ist ganz einfach: Man lasse in StartBurn das TBurnThread.Create(self) weg und ruft ohne Thread ExecuteCopies und iiCDBurn.Burn((Owner as TForm).Handle) auf.

Sieht dann so aus:

Delphi-Quellcode:
procedure TCDBurner.StartBurn;
begin
  if (not fIsBurning) and fInitialized then
  begin
    fIsBurning := True;
//    TBurnThread.Create(self);
// ab hier bis end neu, damit es auch mit vista geht
    ExecuteCopies;
    iiCDBurn.Burn((Owner as TForm).Handle);
    FIsBurning := False;
    if Assigned(fOnBurnDone) then fOnBurnDone(0);
  end
  else if Assigned(fOnBurnDone) then fOnBurnDone(-1);
end;
Vielleicht hilft es noch jemand.

Meine Frage wäre allerdings: Warum funktioniert das Ganze im Thread nicht???


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:55 Uhr.
Seite 1 von 2  1 2      

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