Microsoft говорит нам, что мы можем модифицировать поток печати посредством разработки плагинов для драйвера печати
И даже предоставляет пример того, как это делается (watermarkuni). Я скомпилировал проект и получил .dll, зарегистрировал .dll, как COM объект в системе с зарезервированным GUID.
Затем сделал простое console приложение, которое загружает этот COM объект и может вызывать реализованные функции интерфейса библиотеки.
int main(int argc, char *argv[])
{
cout << "Initializing COM" << endl;
if (FAILED(CoInitialize(NULL)))
{
cout << "Unable to initialize COM" << endl;
return 0;
}
CLSID clsid;
HRESULT hr = ::CLSIDFromProgID(L"My.PSWmark.1", &clsid);
if (FAILED(hr))
{
cout << "Unable to get CLSID " << endl;
return 0;
}
IClassFactory* pCF;
hr = CoGetClassObject(clsid, CLSCTX_INPROC, NULL, IID_IClassFactory, (void**)&pCF);
if (FAILED(hr))
{
cout << "Failed to GetClassObject " << endl;
return 0;
}
IWmarkUni* pWmark;
hr = pCF->CreateInstance(NULL, IID_IPrintOemUni, (void**)&pWmark);
//pCF->Release();
if (FAILED(hr))
{
cout << "Failed to create server instance " << endl;
return 0;
}
cout << "Instance created" << endl;
DRVENABLEDATA enData;
PDEVOEM pOEM;
DWORD version = 0;
DWORD size = 0;
pWmark->EnableDriver(version,size,&enData);
while (1);
}
В отладке я вижу, что приложение подключилось к объекту и вызываемые методы (pWmark->EnableDriver) действительно вызываются. Однако, хуки, описанные в ddihook.cpp watermarkuni не срабатывают.
P.S. Я понимаю, что это просто демопример, но одновременно не до конца понимаю, каким образом предоставляемый Microsoft IPrintOemUni должен взаимодействовать с физическим потоком печати реального принтера, чтобы обеспечить описываемую в доках возможность производить"controlling PCL data injected in the printing stream". ЧЯДНТ?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Необходимо считать в std::string байты файлаОдно из требований: поддержка юникодных имен файлов
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме
Есть некоторая таблица в которую из базы данных через промежуточную структуру подгружаются данные(вектор объектов класса)В структуре данные...