Конференция "WinAPI" » Определить готовность устройства [D6, WinXP]
 
  • TN_TN (25.12.09 11:18) [0]
    Какая функция определяет готовность устройства ?
    Необходимо определить готовность флешки , принтера .
    Спасибо .
  • KilkennyCat © (25.12.09 11:22) [1]
    готовность к чему?
    нужна одна функция на всех? :)
  • TN_TN (25.12.09 11:44) [2]
    Прежде чем печатать или делать копию , необходимо определить :
    - влючено ли устройство печати ;
    - вставлена ли флешка в порт .
  • brother © (25.12.09 11:50) [3]
    > Прежде чем печатать или делать копию , необходимо определить
    > :
    > - влючено ли устройство печати ;
    > - вставлена ли флешка в порт .

    ппц логига)
  • brother © (25.12.09 11:51) [4]
    ты так лихо определил принципиально разные устройства (я молчу про разные марки, модели) в общее - устройства
    и хочещь уже общую для них функцию?
  • oldman © (25.12.09 12:00) [5]

    > TN_TN   (25.12.09 11:44) [2]
    > Прежде чем печатать или делать копию , необходимо определить:
    > - влючено ли устройство печати ;
    > - вставлена ли флешка в порт .


    А почему это должна делать программа, а не пользователь?
    Пишешь программу для обезьян?
  • KilkennyCat © (25.12.09 12:49) [6]
    возможно, некая автоматизация... например, после окончания рабочего дня, пользователи проходят мимо воронки, куда опускают свои флэшки. Специальное устройство ночью автоматически их вставляет в комп, включает принтер, ждет, когда все вставится и включится (вот тут и трабл) и печатает, печатает... Утром люди приходят на работу, специальное устройство определяет, чья флэшка и выдает им взад (здесь не опечатка, именно слитно - взад).
  • GENAONYX © (25.12.09 13:06) [7]
    function TfrmMain.PrinterStatus(MyPrinterName:string):integer;
    var
     PrinterName:    string;
     szPrinterName:  array[0 .. 127] of char;
     pPrinter:       array[0 .. 19] of TPrinterInfo2;//PRINTER_INFO_2A; //20 is a guess
     pcReturned,
     pcbNeeded:      DWORD;
     l:              integer;
     pBuffer:        pointer;

    begin
     l:= 0;
     //MyPrinterName:='hp laserjet iiid';
     EnumPrinters(PRINTER_ENUM_NAME, // types of printer objects to enumerate
                  nil, //PChar(MyPrinterName),                // name of printer object
                  2,                // specifies type of printer info structure
                  nil,         // pointer to buffer to receive printer info structures
                  0,                // we use 0 so that Windows tells us how big a buffer it wants
                  pcbNeeded,          // pointer to variable with no. of bytes copied (or required)
                  pcReturned          // pointer to variable with no. of printer info. structures copied
      );
     GetMem(pBuffer,pcbNeeded);       //create a buffer of the required size
     fillchar(pBuffer^,pcbNeeded,0);
     EnumPrinters(PRINTER_ENUM_NAME, //now we read the printer list
                  nil,
                  2,
                  pBuffer,
                  pcbNeeded,          // this is the real size, in bytes, of buffer
                  pcbNeeded,
                  pcReturned
      );

    //now we copy that part of the buffer that we are interested in to our array
    system.move(pBuffer^,pPrinter,pcReturned*sizeof(TPrinterInfo2));

    // Find my printer
     for l:= 0 to pcReturned - 1 do
     begin
       if l > 3 then
         ShowMessage('Value l: ' + IntToStr(l));
       PrinterName:=  string(pPrinter[l].pPrinterName);
       if UpperCase(PrinterName) = UpperCase(MyPrinterName) then
       begin
         Result:= pPrinter[l].Status;    
        break;
       end;
     end;
     FreeMem(pBuffer,pcbNeeded);
    end;



    {either 0 or one of the following

         PRINTER_STATUS_BUSY
         PRINTER_STATUS_DOOR_OPEN
         PRINTER_STATUS_ERROR
         PRINTER_STATUS_INITIALIZING
         PRINTER_STATUS_IO_ACTIVE
         PRINTER_STATUS_MANUAL_FEED
         PRINTER_STATUS_NO_TONER
         PRINTER_STATUS_NOT_AVAILABLE
         PRINTER_STATUS_OFFLINE
         PRINTER_STATUS_OUT_OF_MEMORY
         PRINTER_STATUS_OUTPUT_BIN_FULL
         PRINTER_STATUS_PAGE_PUNT
         PRINTER_STATUS_PAPER_JAM
         PRINTER_STATUS_PAPER_OUT
         PRINTER_STATUS_PAPER_PROBLEM
         PRINTER_STATUS_PAUSED
         PRINTER_STATUS_PENDING_DELETION
         PRINTER_STATUS_PRINTING
         PRINTER_STATUS_PROCESSING
         PRINTER_STATUS_TONER_LOW
         PRINTER_STATUS_USER_INTERVENTION
         PRINTER_STATUS_WAITING
         PRINTER_STATUS_WARMING_UP
        }

  • Anatoly Podgoretsky © (25.12.09 13:09) [8]
    > TN_TN  (25.12.2009 11:44:02)  [2]

    1. Включить питание.
    2. Пытаться писать, обработать ошибку.
  • 12 © (25.12.09 17:43) [9]
    1. Включить питание.
    2. Пытаться писать, обработать ошибку.

    1 - лишнее
    Делать что хотел и обработать ошибку.
 
Конференция "WinAPI" » Определить готовность устройства [D6, WinXP]
Есть новые Нет новых   [134431   +15][b:0][p:0.002]