sendmessage 와 postmessage 차이에 대해 알아보시기 바랍니다.
일단 응답대기 문제는 postmessage 를 사용하면 해결은 되나 서로간 차이가 있으므로 숙지할 필요가 있습니다.
예성곤 님이 쓰신 글 :
: 아래의 소스코드로 컴파일은 완료되었으나...
: 실행시키면
: 어느 순간부터
: SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@Device));
: 의 응답이 없습니다.
:
: 어떤 문제인가요?
:
: 사용 OS는 Windows7 32bit 입니다.
:
:
:
: /// 원 소스코드
:
: procedure SetDefaultPrinter(PrinterName: string);
: var
: I: Integer;
: Device: PChar;
: Driver: PChar;
: Port: PChar;
: HdeviceMode: THandle;
: aPrinter: TPrinter;
: begin
: Printer.PrinterIndex := -1;
: GetMem(Device, 255);
: GetMem(Driver, 255);
: GetMem(Port, 255);
: aPrinter := TPrinter.Create;
: try
: for I := 0 to Printer.Printers.Count - 1 do
: begin
: if Printer.Printers[i] = PrinterName then
: begin
: aprinter.PrinterIndex := i;
: aPrinter.getprinter(device, driver, port, HdeviceMode);
: StrCat(Device, ',');
: StrCat(Device, Driver);
: StrCat(Device, Port);
: WriteProfileString('windows', 'device', Device);
: StrCopy(Device, 'windows');
: SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@Device));
: end;
: end;
: finally
: aPrinter.Free;
: end;
: FreeMem(Device, 255);
: FreeMem(Driver, 255);
: FreeMem(Port, 255);
: end;
|