Форум: "Система";
Текущий архив: 2004.03.14;
Скачать: [xml.tar.bz2];
ВнизОбращение к принтеру Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.02 c