안녕 하십니까?
첨부파일의 소스는 Windows XP에서 드라이버 설치하는 소스입니다.
하지만 Windows Vista에서 설치할 수 가 없습니다.
소스중 아래의 함수에서 에러가 발생하고 있습니다.
bStatus 가 XP에서는 True로 되지만 Vista에서는 False가 됩니다.
bStatus :=AddPrinterDriver(PChar(nil),3,@pDI3 );
참고로 Vista의 권한상승과 전혀 무관합니다.
물론 프로그램중 일부는 Vista에서 권한 상승을 이루어 져야만 정상 처리되기 때문에 프로그램
실행시에는 관리자 권한으로 프로그램을 실행 해야 만 합니다.
고수님 소스를 한번 확인 바랍니다.
수고 하십시요.
소스 파일
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Printers, WinSpool,StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetEnvironment(sName : string) : string;
var
lpBuffer : PChar ;
nSize : DWORD ;
begin
getmem(lpBuffer, 1024); nSize := 1024;
GetEnvironmentVariable(PChar(sName), lpBuffer, nSize);
Result :=StrPas(lpBuffer);
end;
function DeleteFiles(Path : string) :Boolean ;
var
Dirinfo : TSearchRec ;
r : Integer;
begin
r:= FindFirst(Path +'*.*',faAnyFile ,Dirinfo );
while r=0 do begin
if ((DirInfo.Attr and FaDirectory <> FaDirectory) and (DirInfo.Attr and FaVolumeId <> FaVolumeID)) then
if DeleteFile(pChar(Path + DirInfo.Name)) = false then
ShowMessage('Unable to delete :' + DirInfo.Name);
r := FindNext(DirInfo);
end;
FindClose(Dirinfo);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
sDriverPathWin32,sDriverpathWin64 : string;
sDriverFilePath : string;
pDI3 : TDriverInfo3;
pPI2 : TPrinterInfo2;
bStatus : LongBool ;
hPrint : THandle;
begin
sDriverPathWin32 := GetEnvironment('WinDir')+ '\system32\spool\drivers\w32x86\';
sDriverFilePath := ExtractFilePath(Application.ExeName)+'Driver\';
CopyFile(PChar(sDriverFilePath + 'GENUXP.DLL'),PChar(sDriverPathWin32 +'GENUXP.DLL'), False);
CopyFile(PChar(sDriverFilePath + 'GENUXPUI.DLL'),PChar(sDriverPathWin32 +'GENUXPUI.DLL'), False);
CopyFile(PChar(sDriverFilePath + 'GENUXP.HLP'),PChar(sDriverPathWin32 +'GENUXP.HLP'), False);
pDI3.cVersion := 3;
pDI3.pName :=PChar('Chungho CHP-680');
pDI3.pEnvironment :=PChar(nil);
pDI3.pDriverPath := PChar(sDriverPathWin32 +'GENUXP.DLL');
pDI3.pDataFile := PChar(sDriverPathWin32 +'GENUXPUI.DLL');
pDI3.pConfigFile := PChar(sDriverPathWin32 +'GENUXPUI.DLL');
pDI3.pHelpFile := PChar(sDriverPathWin32 +'GENUXP.HLP');
pDI3.pMonitorName :=PChar('PJL Language Monitor');
pDI3.pDefaultDataType :=PChar('RAW');
bStatus :=AddPrinterDriver(PChar(nil),3,@pDI3 );
if bStatus then begin
ShowMessage('Printer Driver Setup OK');
end else begin
ShowMessage('Printer Driver Setup NG');
end;
DeleteFiles(sDriverPathWin32);
pPI2.pServerName := nil;
pPI2.pPrinterName := 'Chungho CHP-680';
pPI2.pDriverName := 'Chungho CHP-680';
pPI2.pPortName := 'LPT1:';
ppi2.pPrintProcessor := 'WinPrint';
pPI2.Priority := 1;
pPI2.DefaultPriority :=1;
pPI2.pComment := nil;
pPI2.pDatatype := 'RAW';
pPI2.pLocation := nil;
pPI2.pShareName :=nil;
hPrint := AddPrinter(nil, 2,@pPI2);
if hPrint <> 0 then
ClosePrinter(hPrint);
end;
end.