Re: Установка принтера по умолчанию
От: Thread  
Дата: 18.02.04 12:44
Оценка:
Здравствуйте, lightix, Вы писали:

L>Программа находится на Win2k Server, которому юзера подключаются посредством Terminal Services. Их локальные принтера автоматически подключаются к серверу.

L>Как получить указатель (имя, номер и т.п.) на локальный принтер клиента, чтобы программно установить его по-умолчанию?
L>Программа для каждого юзера должна перед печатью выставить принтер клиента который ее запустил.

L>Заранее благодарен




int CALLBACK WinMain( HINSTANCE hInst, HINSTANCE hPrevInst,
                LPSTR lpCmdLine, int nShowCmd )
{
        /* Get the port & device settings for the specified printer */
        char szDeviceString[260];

        /* First (and only) parameter is the printer name */
        lstrcpy( szDeviceString, __argv[1] );
        const int Pos = lstrlen( szDeviceString );

        /* Append a ',' */
        szDeviceString[ Pos ] = ',';

        GetProfileString( "Devices", __argv[1], "",
                        &szDeviceString[Pos+1],
                        sizeof( szDeviceString ) - (Pos+1) );

        /* Have we got the printer? */
        if ( szDeviceString[Pos+1] != '\0' )
        {
                /* Set the default printer */
                WriteProfileString( "windows", "device", szDeviceString );

                SendMessageTimeout( HWND_BROADCAST, WM_SETTINGCHANGE, 0L,
                        (LPARAM)(LPCTSTR)"windows", SMTO_NORMAL,
                        1000, NULL );
        }
        else
        {
                MessageBox( NULL, "Printer not found",
                        "Set Default Printer Utility",
                        MB_OK | MB_ICONERROR );
        }

        return 0;
}



References and samples:

Knowledge Base Article Q135387: "How to Get and Set the Default Printer in
Windows"

Knowledge Base Article Q140560 "How to Set the Default Printer Programmatically
in Windows 95"

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.