Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать сколько страниц распечатано, Печать в сети 
:(
    Опции темы
kj20
  Дата 5.7.2006, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.7.2006

Репутация: нет
Всего: нет



Значит следующая проблема: есть сеть маленькая, есть 2 принтера, задача в следующем - как узнать сколько страниц распечатано на каждом принтере за определенный период времени? (т.е. кто-то печатает сверх нормы, тратит картридж, необходимо его вычислить).

Как это можно организовать, как отловить?
 
PM MAIL   Вверх
chaos
Дата 6.7.2006, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



один вариант есть - подключиться к диспетчеру печати(те perfmon.msc) 
PM WWW   Вверх
kj20
Дата 6.7.2006, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.7.2006

Репутация: нет
Всего: нет



Цитата(chaos @ 6.7.2006,  06:33)
один вариант есть - подключиться к диспетчеру печати(те perfmon.msc)

А как это сделать, ну на примере небольшом? Где можно почитать? 
PM MAIL   Вверх
chaos
Дата 6.7.2006, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



вот тебе пример из msdn думаю разберешься. того гляди и поможет
Код

#include <stdio.h>
#include <tchar.h>
#include <conio.h>
#include <Pdh.h>
#pragma comment(lib, "Pdh.lib")


#define SAMPLE_INTERVAL_MS  1000
#define MAXPATH 80


int _tmain(int argc, _TCHAR* argv[])
{
   HQUERY          hQuery;
   HCOUNTER        *pCounterHandle;
   PDH_STATUS      pdhStatus;
   PDH_FMT_COUNTERVALUE   fmtValue;
   DWORD           ctrType;
   SYSTEMTIME      stSampleTime;
   PDH_BROWSE_DLG_CONFIG  BrowseDlgData;
   TCHAR            szPathBuffer[MAXPATH];
   int             nRetCode = 0;

   // Open the query object.
   pdhStatus = PdhOpenQuery (0, 0, &hQuery);

   // Allocate the counter handle array. Allocate room for
   //  one handle per command line arg, not including the
   //  executable file name.
   pCounterHandle = (HCOUNTER *)GlobalAlloc(GPTR, sizeof(HCOUNTER));
   // Zero the contents of the structure.
   memset (&BrowseDlgData, 0, sizeof(PDH_BROWSE_DLG_CONFIG));

   // Initialize the browser dialog window settings.
   BrowseDlgData.bIncludeInstanceIndex = FALSE;   
   BrowseDlgData.bSingleCounterPerAdd = TRUE;
   BrowseDlgData.bSingleCounterPerDialog = TRUE;  
   BrowseDlgData.bLocalCountersOnly = FALSE;      
   BrowseDlgData.bWildCardInstances = TRUE;
   BrowseDlgData.bHideDetailBox = TRUE;
   BrowseDlgData.bInitializePath = FALSE;     
   BrowseDlgData.bDisableMachineSelection = FALSE;
   BrowseDlgData.bIncludeCostlyObjects = FALSE;
   BrowseDlgData.bReserved = TRUE;
   BrowseDlgData.hWndOwner = NULL;   
   BrowseDlgData.bReserved = FALSE;           
   BrowseDlgData.szReturnPathBuffer = szPathBuffer;
   BrowseDlgData.cchReturnPathLength = MAXPATH;;
   BrowseDlgData.pCallBack = NULL;   
   BrowseDlgData.dwCallBackArg = 0;
   BrowseDlgData.CallBackStatus = ERROR_SUCCESS;
   BrowseDlgData.dwDefaultDetailLevel = PERF_DETAIL_WIZARD;
   BrowseDlgData.szDialogBoxCaption = L"Select a counter to monitor.";

   // Display the counter browser window.
   pdhStatus = PdhBrowseCounters (&BrowseDlgData);

   
   pdhStatus = PdhAddCounter (hQuery,
                              szPathBuffer, 
                              0, 
                              pCounterHandle);


   //szPathBuffer = 0x0012fe30 "\\HQ-DKONONENKO\Ñèñòåìà\Âðåìÿ ðàáîòû ñèñòåìû"
   pdhStatus = PdhCollectQueryData (hQuery);

   // Print counter values until a key is pressed.
   while (!_kbhit()) {

     // Wait one interval.
     Sleep(SAMPLE_INTERVAL_MS);

     // Get the sample time.
     GetLocalTime (&stSampleTime);

     // Get the current data values.
     pdhStatus = PdhCollectQueryData (hQuery);

     // Print the time stamp for the sample.
     _tprintf (
           TEXT("\n\"%2.2d/%2.2d/%4.4d %2.2d:%2.2d:%2.2d.%3.3d\""),
               stSampleTime.wMonth, 
               stSampleTime.wDay, 
               stSampleTime.wYear,
               stSampleTime.wHour, 
               stSampleTime.wMinute, 
               stSampleTime.wSecond,
               stSampleTime.wMilliseconds);

     // Get the current value of this counter.
     pdhStatus = PdhGetFormattedCounterValue (*pCounterHandle,
                                              PDH_FMT_DOUBLE,
                                              &ctrType,
                                              &fmtValue);

     if (pdhStatus == ERROR_SUCCESS) {
         _tprintf (TEXT(",\"%.20g\""), fmtValue.doubleValue);
     } else {

         // Print the error value.
         _tprintf (TEXT(".\"-1\"")); 
     }
   }

   // Close the query.
   pdhStatus = PdhCloseQuery (hQuery);

   return nRetCode;

    return 0;
}

 

смотри объект очередь печати 

Это сообщение отредактировал(а) chaos - 7.7.2006, 06:15
PM WWW   Вверх
likehood
Дата 6.7.2006, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 8
Всего: 24



Есть специальные утилитки, которые следят за принтером и записывают в лог что и когда на принтере печаталось. Сам как то ставил у себя в сети такую утилитку, только давно только это было, название уже забыл. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1206 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.