Hallo zusammen,
folgender Sachverhalt:
Das Einstellen des Standard Druckers in Delphi oder C(++) ist ja einfach und in diversen Foren zu finden. Allerdings muß ich sagen daß es in Delphi wohl Probleme gegenüber C(++) gibt.
Delphi:
Hier sind mir 2 Befehle bekannt, von denen SetPrinter scheinbar nicht funzt:
Printer.SetPrinter(PChar('Druckername'), sDriver, sPort, hDeviceMode);
Also bleibt nur
Delphi-Quellcode:
StrPCopy(ResStr,'Druckername');
WriteProfileString ('windows', 'device', ResStr);
StrCopy (ResStr, 'windows');
übrig.
C(++):
Zitat:
SetDefaultPrinter (Druckername);
Broadcast erfolgt anschließend in beiden Sprachen.
Nun zum Problem:
In C(++) funktioniert alles einwandfrei, d.h. Windows erkennt den neuen SD einwandfrei an und das schwarze Häkchen ist auch richtig gesetzt (Start/Einstellungen/Drucker und Faxgeräte).
In Delphi dagegen ist das Häkchen weg, wie wenn kein SD erkannt bzw. gesetzt wird.
(Konsolenanwendung als Test)
Das große Problem ist, daß eine Win-Applikation in Delphi verschiedene Drucker ansteuert. Dazu wird immer der aktuelle SD geholt, temp. nen anderer D zum SD erklärt, benutzt und anschließend der alte SD wiederhergestellt. Will man danach mit einer anderen Applikation den SD benutzen, stürzt diese ab, sofern man nicht vorher extra manuell (Start/Einstellungen/Drucker und Faxgeräte) den SD nochmals zum SD erklärt (obwohl der schw. Haken schon richtig steht).
In C dagegen passiert dies nicht. Deshalb behaupte ich einfach mal, daß in C der einzige Befehl mehr macht als das Pendant in Delphi.
Was mache ich in Delphi falsch?
Wer kennt das und kann weiterhelfen?
Danke!