Form Tasarımım:

Kullandığım Kodlar:
Kod: Tümünü seç
unit yazici;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, cxGraphics, cxLookAndFeels, cxLookAndFeelPainters,
Menus, dxSkinsCore, dxSkinBlack, dxSkinBlue, dxSkinBlueprint,
dxSkinCaramel, dxSkinCoffee, dxSkinDarkRoom, dxSkinDarkSide,
dxSkinDevExpressDarkStyle, dxSkinDevExpressStyle, dxSkinFoggy,
dxSkinGlassOceans, dxSkinHighContrast, dxSkiniMaginary, dxSkinLilian,
dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMoneyTwins,
dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green,
dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black,
dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinPumpkin, dxSkinSeven,
dxSkinSevenClassic, dxSkinSharp, dxSkinSharpPlus, dxSkinSilver,
dxSkinSpringTime, dxSkinStardust, dxSkinSummer2008,
dxSkinTheAsphaltWorld, dxSkinsDefaultPainters, dxSkinValentine,
dxSkinVS2010, dxSkinWhiteprint, dxSkinXmas2008Blue, cxButtons, XPMan;
const
MAXPRINTERBUFFER = 8000;
MAXPRINTERNAME = 500;
MAXPRINTERINFO = 50;
type
TPrinterBuffer = array[0..MAXPRINTERBUFFER - 1] of char;
TFrmYaziciAyarla = class(TForm)
Label1: TLabel;
XPManifest1: TXPManifest;
ListBox1: TListBox;
Label2: TLabel;
cxButton1: TcxButton;
Label3: TLabel;
Label4: TLabel;
procedure FormCreate(Sender: TObject);
procedure GetPrinterNames;
function ParseNames(const namebuffer: TPrinterBuffer; var startPos: integer): string;
function SetPrinter(const PrinterName : String) : boolean;
procedure ListBox1DblClick(Sender: TObject);
procedure cxButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmYaziciAyarla: TFrmYaziciAyarla;
printerNames: TStringList;
defaultPrinter: integer;
implementation
{$R *.dfm}
procedure TFrmYaziciAyarla.GetPrinterNames;
var
buffer: TPrinterBuffer;
currPos: integer;
printerName: string;
begin
printerNames.Free;
printerNames := TStringList.Create;
if GetProfileString(PChar('PrinterPorts'), nil, '', buffer, MAXPRINTERBUFFER) > 0 then
begin
currPos := 0;
while (true) do
begin
printerName := ParseNames(buffer, currPos);
if printerName <> '' then
printerNames.Add(printerName)
else
break;
end;
end;
end;
function TFrmYaziciAyarla.ParseNames(const namebuffer: TPrinterBuffer;
var startPos: integer): string;
var
i, j, NameLength: integer;
str: string;
begin
result := '';
if (startPos > High(namebuffer)) or (namebuffer[startPos] = Chr(0))
then
exit;
for i := startPos to High(namebuffer) do begin
if namebuffer[i] = Chr(0)
then begin
nameLength := i - startPos;
SetLength(str, nameLength);
for j := 0 to nameLength - 1 do
str[j+1] := namebuffer[startPos + j];
result := str;
startPos := i + 1;
break;
end;
end;
end;
function TFrmYaziciAyarla.SetPrinter(const PrinterName: String): boolean;
var
s2 : string;
dum1 : Pchar;
xx, qq : integer;
const
cs1 : pchar = 'Windows';
cs2 : pchar = 'Device';
cs3 : pchar = 'Devices';
cs4 : pchar = #0;
begin
xx := 254;
GetMem( dum1, xx);
Result := False;
try
qq := GetProfileString( cs3, pchar( printerName ), #0, dum1, xx);
if (qq > 0) and (trim( strpas( dum1 )) <> '')
then begin
s2 := PrinterName + ',' + strpas( dum1 );
while GetProfileString( cs1, cs2, cs4, dum1, xx) > 0 do
WriteProfileString( cs1, cs2, #0);
WriteProfileString( cs1, cs2, pchar( s2 ));
case Win32Platform of
VER_PLATFORM_WIN32_NT :
// SendMessage( HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(cs1));
// VER_PLATFORM_WIN32_WINDOWS :
// SendMessage( HWND_BROADCAST, WM_SETTINGCHANGE, 0, LongInt(cs1));
end;
Result := True;
end;
finally
FreeMem( dum1 );
end;
end;
procedure TFrmYaziciAyarla.cxButton1Click(Sender: TObject);
begin
Close;
end;
procedure TFrmYaziciAyarla.FormCreate(Sender: TObject);
begin
GetPrinterNames;
Listbox1.Items.AddStrings(PrinterNames);
end;
procedure TFrmYaziciAyarla.ListBox1DblClick(Sender: TObject);
var
x : integer;
begin
try
for x := 0 to printerNames.Count -1 do begin
If ListBox1.Selected[x] then begin
if (SetPrinter(ListBox1.Items.Strings[x]))
then
begin
Application.MessageBox('Varsayılan Yazıcı Başarıyla Ayarlanmıştır.','Başarılı',MB_ICONINFORMATION+MB_OK)
end
else
begin
Application.MessageBox('Varsayılan Yazıcı Ayarlanamamıştır.','Başarısız',MB_ICONSTOP+MB_OK);
end;
end;
end;
except
Application.MessageBox('Yazıcıyı Ayarlama Sırasında Bir Hata Oluştu','Hata',MB_ICONSTOP+MB_OK);
end;
end;
end.