Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.14;
Скачать: CL | DM;

Вниз

Обращение к принтеру   Найти похожие ветки 

 
SkySlider   (2003-12-22 13:14) [0]

Для опроса к-ва документов в спулере использую такой кусочек:

procedure TtrPrnThread.GetInSpoolCount;
var
pJob : Array of _JOB_INFO_1A;
pcbNeeded, pcbNeeded2, pcReturned : Cardinal;
begin
pcbNeeded := 0;
pcbNeeded2 := 0;
pcReturned := 0;

pJob := nil;
if true <> EnumJobs(phPrinter, 0, 10, 1, pJob, 0, pcbNeeded, pcReturned) then
begin
ReallocMem(pJob,pcbNeeded);
if EnumJobs(phPrinter, 0, 10, 1, pJob, pcbNeeded, pcbNeeded2, pcReturned) then
begin
end;
FreeMem(pJob, pcbNeeded);
end;

iInSpoolCount := pcReturned;
pcbNeeded := 0;
pcbNeeded2 := 0;
pcReturned := 0;
end;


При повторном запуске потока на GetInSpoolCount


...
GetInSpoolCount; <-- туточки
while (5 <= iInSpoolCount) and (not Terminated) do
begin
sPrintStatus := "Waiting for printer";
Synchronize(UpdateStatus);
Sleep(250);
GetInSpoolCount;
end;
...


вываливается сообщение: "Invalid pointer operation".
Если опрашивать принтер в основном потоке, делфи сидит тихо.
Но мне надо в отдельном (чтоб программа не "замерзала").
В чем проблема?


 
SkySlider   (2003-12-22 16:46) [1]

Изменил


pJob : Array of _JOB_INFO_1A;


на


pJob : ^_JOB_INFO_1A;


пока работает :)



Страницы: 1 вся ветка

Текущий архив: 2004.03.14;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.034 c
1-43667
Новичек
2004-03-01 19:52
2004.03.14
TStringList.IndexOf и русские символы


1-43446
TUser
2004-03-03 20:46
2004.03.14
Как конвертировать имена файлов


3-43369
griban
2004-02-15 15:56
2004.03.14
V C++builder bil QuickReport estj li ego nalog v B Delphi 7


1-43624
Vanja
2004-03-01 19:00
2004.03.14
как программно удалить папку?


3-43265
Владий
2004-02-12 16:25
2004.03.14
Помогите найти причину - где у меня проблема, кроме головы?