Q&A

  • win98,me에서 기본프린터 설정하기...
<!--CodeS-->
팁에 있는 소스로 기본프린터를 설정하면 2000이나 xp계열에서는 정상적으로 기본 프린터 설정이
됩니다. 근데 98이나 me에서는 정상적으로 안되네요...ㅡㅡ
98이나 me에서  정상적을 설정할 수 있는 방법이 있나요?

아래 소스는 팁 에서 받은 것입니다...

function TForm1.SetDefaultPrinter( const PrinterName : string ) :
// Printername would be like 'Canon BJC-6000'
    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 :
                begin
                    SendMessage( HWND_BROADCAST, WM_WININICHANGE, 0,LongInt(cs1));
                end;
                VER_PLATFORM_WIN32_WINDOWS : //win95
                begin
                    SendMessage( HWND_BROADCAST, WM_SETTINGCHANGE, 0,LongInt(cs1));
                end;
            end; { case }
            Result := True;
        end;
    finally
        FreeMem( dum1 );
    end;
end;

<!--CodeE-->
1  COMMENTS
  • Profile
    김정수 2005.04.12 05:09
    해결했습니다...ㅡㅡ;
    win98이나 me 경우 프린터명 뒤에 on 어쩌구 저쩌구 해서 가져오더군요...
    그래서 GetProfileString 함수에서 프린터의 값을 가져오지 못하네요...
    copy명령으로 on 다음 부분을 짤라 준 프린터명을 넘겨주면 기본 프린터 설정이 되더군요...
    자답이었습니다...ㅡㅡ;