Delphi Can

Orjinalini görmek için tıklayınız: Delphi ile yazıcı tanıtmak
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhaba,
Butona bastığımda belirlediğim ve sistem üzerinde driveri bulunan bir yazıcıyı windows'a tanıtmak istiyorum, ve tanıtırken de hangi portu kullanacağını da belirtmek istiyorum
Bunu nasıl yapabilirim?
Bilgisayar başında değilim. Deneyip yazamadım. 

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. deneyip burada sonucu bildirirsen sevinirim. (expert exchange linki "How to add Printer using Delphi Add Printer Function  " )

not. tabii çalışıyor olan kod örneği ile..   Wink
ben bunu uygulamıştım ama her nedense hiçbir tepkime vermiyor. hata da vermiyor
(13-03-2019, Saat: 08:17)ermanispir@gmail.com Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba,
Butona bastığımda belirlediğim ve sistem üzerinde driveri bulunan bir yazıcıyı windows'a tanıtmak istiyorum, ve tanıtırken de hangi portu kullanacağını da belirtmek istiyorum
Bunu nasıl yapabilirim?

Merhabalar,

Bu link'lere de bakın iserseniz.

1. Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
2. Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Kolay gelsin.
Projenizi Admin olarak çalıştırmayı deneyin.
Bilgisayar başına geçtim denedim. 
Hata kodu 1798 veriyordu, bunun Türkçesi için SysErrorMessage kullandım dedi ki Print Processor ( Yazırma İşlemcisi ) bulunamadı...

Dolayısıyla eksik parametreyi 'WinPrint' ile tamamlayınca çalıştı....

Sonuç :
Uses WinSpool;

function AddAPrinter(PrinterName, PortName, DriverName, PrintProcessor: string): boolean;
var
 pName: PChar;
 Level: DWORD;
 pPrinter: PPrinterInfo2;
begin
 pName := nil;
 Level := 2;

 New(pPrinter);
 pPrinter^.pServerName         := nil;
 pPrinter^.pShareName          := nil;
 pPrinter^.pComment            := nil;
 pPrinter^.pLocation           := nil;
 pPrinter^.pDevMode            := nil;
 pPrinter^.pSepFile            := nil;
 pPrinter^.pDatatype           := nil;
 pPrinter^.pParameters         := nil;
 pPrinter^.pSecurityDescriptor := nil;
 pPrinter^.Attributes          := 0;
 pPrinter^.Priority            := 0;
 pPrinter^.DefaultPriority     := 0;
 pPrinter^.StartTime           := 0;
 pPrinter^.UntilTime           := 0;
 pPrinter^.Status              := 0;
 pPrinter^.cJobs               := 0;
 pPrinter^.AveragePPM          :=0;

 pPrinter^.pPrinterName        := PCHAR(PrinterName);
 pPrinter^.pPortName           := PCHAR(PortName);
 pPrinter^.pDriverName         := PCHAR(DriverName);
 pPrinter^.pPrintProcessor     := PCHAR(PrintProcessor);

 if AddPrinter(pName, Level, pPrinter) <> 0 then
 begin
   Result := true;
 end
 else begin
   ShowMessage( SysErrorMessage(GetlastError) );
   Result := false;
 end;
end;

Kullanım Şekli.
procedure TForm1.BitBtn1Click(Sender: TObject);
var
myPtrName, myPtrPort, myPtrDriver, myPtrProcessor : String;
begin
myPtrName      := 'Canon MF8200C Series';
myPtrPort      := 'LPT1:';
myPtrDriver    := 'Canon MF8200C Series V4';
myPtrProcessor := 'WinPrint';

if AddAPrinter( myPtrName, myPtrPort,  MyPtrDriver, myPtrProcessor ) then ShowMessage( 'Başarılı...' );
end;