안녕하세요.
별다른 것은 없고요 현재 설정된 기본 프린트를 바꿀려하는데 바꿔도
이전설정된 프린트장치에서 프린트됩니다. 간단히 루틴은 다음과 같습니다.
if PrinterSetupDlg.Execute = True then
begin
try
MsWord := CreateOleObject('Word.Basic');
except
ShowMessage('MS-Word를 시작할수 없습니다.');
end;
MSWord.FileOpen(GFileName);
MSWord.FilePrint;
MSWord.FileExit;
end;
원인을 알려 주시면 감사하겠습니다.
참고하시구요... 이것은 프린터 이름의 일부만 넣어줘도 됩니다.
procedure TMainForm.SetDPrinter(PrnStr : String);
var
WinIni : TIniFile;
WinIniFileName : array[0..MAX_PATH] of char;
s : array[0..64] of char;
i : integer;
pDevice : array[0..31] of Char;
pDevice2 : array[0..31] of Char;
pDriver : array[0..259] of Char;
pPort : array[0..259] of Char;
DeviceMode : THandle;
begin
//프린터를 세팅하는 함수.
for i := 0 to Printer.Printers.Count - 1 do
If Pos(PrnStr,Printer.Printers[i]) > 0 then Break;
If (Printer.Printers.Count - 1 < i) then
begin
ShowMessage('프린터이름이 없습니다.');
Exit;
end;
If (Printer.PrinterIndex <> i) then
begin
printer.PrinterIndex := -1;
Devicemode:=0;
printer.getprinter(pdevice2,pDriver,pPort,DeviceMode);
Printer.PrinterIndex := i;
Devicemode:=0;
printer.getprinter(pdevice,pDriver,pPort,DeviceMode);
If StrPas(pDevice) <> StrPas(pDevice2) then
begin
GetWindowsDirectory(WinIniFileName, sizeof(WinIniFileName));
StrCat(WinIniFileName, 'win.ini');
WinIni := TIniFile.Create(WinIniFileName);
try
WinIni.WriteString('windows',
'device',
StrPas(pdevice)+','+StrPas(pDriver)+','+StrPas(pPort));
finally
WinIni.Free;
end; //Try
StrCopy(S, 'windows');
SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@S));
Application.ProcessMessages;
Delay(1000);
end;
end;
end;
이호선 wrote:
> 안녕하세요.
> 별다른 것은 없고요 현재 설정된 기본 프린트를 바꿀려하는데 바꿔도
> 이전설정된 프린트장치에서 프린트됩니다. 간단히 루틴은 다음과 같습니다.
>
> if PrinterSetupDlg.Execute = True then
> begin
> try
> MsWord := CreateOleObject('Word.Basic');
> except
> ShowMessage('MS-Word를 시작할수 없습니다.');
> end;
> MSWord.FileOpen(GFileName);
> MSWord.FilePrint;
> MSWord.FileExit;
> end;
>
> 원인을 알려 주시면 감사하겠습니다.
>