Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

AddPrinterDriver [D6, WinXP]


Lingo ©   (2004-10-21 14:19:00) 

Всем привет уже второй день парюсь с этой функцией
Народ может кто знает что конкретно делает AddPrinterDriver и почему при ее выполнении возникает ошибка 5 (нет доступа) причем через свойства принтеров Windows я могу менять им драйвера, имена и т.д. (т.е. работаю под правами администратора)
Из MSDN я понял что эта функция добавляет в систему новый драйвер принтера но почему тогда она выполняется только когда значение pName есть имя уже установленного принтера иначе GetlastError = 1801(Имя принтера заданно неверно)


var
       pName: string;
       pDriver: driver_INFO_2;
       pDriver2: ^driver_INFO_2;
begin
        pName:='HP LaserJet 4000';
       pdriver.cVersion:=3;
       pdriver.pName:='HP LaserJet 4000 PS';
       pdriver.pEnvironment:='Windows XP';
       pdriver.pDriverPath:='c:\driver\pscript.dll';
       pdriver.pDataFile:='c:\driver\HP4000_7.PPD';
       pdriver.pConfigFile:='c:\driver\Pscrp.dll';
       if addPrinterDriver( pName,2,pDriver2)=false
          then
          showmessage('Error # '+inttostr(GetlastError));
end;


Lingo   (2004-10-22 13:14:00) [1]


> rundll32 printui.dll,PrintUIEntry <параметры>

Да все заработало жаль конечно что так и не разобрался с addPrinterDriver ну да ладно времени уже нету.
Спасибо друзья.
http://maxz.ru/index.asp?CodeRazdel=25


Маг Похмеляйнен   (2004-10-22 10:27:00) [2]

А через rundll32 пробовали?
rundll32 printui.dll,PrintUIEntry <параметры>


Lingo   (2004-10-22 08:35:00) [3]

Извеняюсь
pDriver2:=^pDriver;
Да конечно так


Lingo   (2004-10-22 08:35:00) [4]

Incopatible types: 'Char' and 'Pointer'


Lingo   (2004-10-22 07:42:00) [5]

И так тоже не хочет работать не воспринимает строку
Dpriver2:=^pDriver;
Выдает ошибку:
Incopatible types: 'Char' and 'Pointer'


GobliNGuT   (2004-10-21 15:55:00) [6]

Ты хочешь установить локальный принтер? тогда смотри сюда

var
      pDriver: driver_INFO_2;
      pDriver2: ^driver_INFO_2;
begin
      pdriver.cVersion:=3;
      pdriver.pName:='HP LaserJet 4000 PS';
      pdriver.pEnvironment:='Windows XP';
      pdriver.pDriverPath:='c:\driver\pscript.dll';
      pdriver.pDataFile:='c:\driver\HP4000_7.PPD';
      pdriver.pConfigFile:='c:\driver\Pscrp.dll';
      pDriver2:=^pDriver;
      if addPrinterDriver( NULL,2,pDriver2)=false
         then
         showmessage('Error # '+inttostr(GetlastError));
end;

комент:

The AddPrinterDriver function installs a local or remote printer driver and links the configuration, data, and driver files.

BOOL AddPrinterDriver(

   LPTSTR pName, // pointer to server name
   DWORD Level, // printer info. structure level
   LPBYTE pDriverInfo  // pointer to printer info. structure
  );


Parameters

pName

Pointer to a null-terminated string that specifies the name of the server on which the driver should be installed.
If pName is NULL, the driver will be installed locally.

pDriverInfo

Pointer to either a DRIVER_INFO_2 structure or a DRIVER_INFO_3 structure. If Level is 2, this parameter receives a DRIVER_INFO_2 structure. If Level is 3, this parameter receives a DRIVER_INFO_3 structure.


Да и маленькая рекомендация:
когда работаешь с указателями не называй статические переменные с маленькой бувы p. Намного удобнее искать у себя глюки если статика у тебя называется Name а указатель на нее называется pName (pointer to Name)


Наверх

Титульная страница Поиск, карта сайта Написать письмо