Drucker Installation über windows api
-
Hallo Martin,
in der Dokumentation steht bei jedem Strukturtyp
cVersion - The operating system version for which the driver was written. The supported value is 3
wenn ich die Zeile
// DriverInfo.pszzCoreDriverDependencies = __T("{D20EA372-DD35-4950-9ED8-A6335AFE79F0},UNIDRV.OEM\0D20EA372-DD35-4950-9ED8-A6335AFE79F5},XPSDRV.OEM,XPSGPD.OEM\0\0");
weglasse erscheint der Treiber schonmal im printer management. Nur AddPrinter hat dann die Fehlermeldung: ERROR_FILE_CORRUPT
memset(&PrinterAddInfo,0,sizeof(PrinterAddInfo)); PrinterAddInfo.pPrinterName = PRINTER_NAME; PrinterAddInfo.pPortName = (pPortName)?pPortName:DEFAULT_PORTNAME; PrinterAddInfo.pDriverName = DRIVER_NAME; PrinterAddInfo.pPrintProcessor = __T("WinPrint"); if (hPrinter = AddPrinter(NULL,2,(LPBYTE)&PrinterAddInfo)) { ClosePrinter(hPrinter); } else eError = EC_CantAddPrinter;
hat jemand noch eine Idee?
Oder weiß jemand was diese Inf File einträge bedeuten?
Include=NTPRINT.INF, MSXPSDRV.INF
Needs=UNIDRV.OEM, XPSGPD.OEM, XPSDRV.OEM
CopyINF=MBPrinterDrv.inf
CoreDriverSections="{D20EA372-DD35-4950-9ED8-A6335AFE79F0},UNIDRV.OEM", "{D20EA372-DD35-4950-9ED8-A6335AFE79F5},XPSDRV.OEM,XPSGPD.OEM"MfG
-
Würest Du mal etwas mehr Code zeigen.
Wo ist die Definition der Struktur?
Wo ist die wichtigste Info: pDriverPath?Irgendwie verstehe ich überhaupt nicht wie Du vorgehst.
-
Hallo Maritn,
also ich möchte den Treiber intallieren / updaten mit AddPrinterDriverEx und danach falls kein drucker mit dem Treiber installiert ist einen mit AddPritner installieren.
PRINTER_INFO_2 PrinterAddInfo;
alle anderen member sind 0 durch das memset. Welche werden noch benötigt?
MfG
-
Ähhhh.. kannst Du lesen was ich Dir geschreiben habe?
-
sorry
PRINTER_INFO_2 PrinterAddInfo;
http://msdn.microsoft.com/en-us/library/windows/desktop/dd162845(v=vs.85).aspx
pDriverPath hat diese Strucktur nicht.
MfG
-
Und warum benutzt Du nicht AddPrinterDriver?
Damit hast Du angefangen:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd162502(v=vs.85).aspx
-
addprinterdriver installiert nur den treiber das klapt jetzt.
Jetzt muß ich noch den drucker hinzufügen also addprinter
-
damit ging es:
PRINTER_INFO_2 PrinterAddInfo; DRIVER_INFO_6 DriverInfo; memset(&DriverInfo,0,sizeof(DriverInfo)); DriverInfo.cVersion = 3; DriverInfo.pName = DRIVER_NAME; DriverInfo.pEnvironment = NULL;//(bIsWin64)?__T("Windows x64"):__T("Windows x86"); DriverInfo.pDriverPath = __T("mxdwdrv.dll"); DriverInfo.pDataFile = __T("MBPrinterDrv.gpd"); DriverInfo.pConfigFile = __T("UniDrvUI.dll"); DriverInfo.pHelpFile = __T("UniDrv.HLP"); DriverInfo.pDependentFiles = __T("MBPrinterDrv-PipelineConfig.xml\0UNIDRV.DLL\0UNIRES.DLL\0STDNAMES.GPD\0STDDTYPE.GDL\0STDSCHEM.GDL\0STDSCHMX.GDL\0XPSSVCS.DLL\0MSXPSINC.GPD\0\0"); DriverInfo.pszMfgName = COMPANY; DriverInfo.pszProvider = COMPANY; //DriverInfo.pszPrintProcessor = __T("winprint"); DriverInfo.dwlDriverVersion = (((DWORDLONG)MAJOR)<<48) | (((DWORDLONG)MINOR)<<32) | (((DWORDLONG)SUBVERSION)<<16) | ((DWORDLONG)BUILD); if (hTemp = CreateFile(pFile,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL)) { GetFileTime(hTemp,&DriverInfo.ftDriverDate,NULL,NULL); CloseHandle(hTemp); } if (!AddPrinterDriverEx(NULL,6,(LPBYTE)&DriverInfo,APD_COPY_ALL_FILES)) eError = EC_CantAddDriver; memset(&PrinterAddInfo,0,sizeof(PrinterAddInfo)); PrinterAddInfo.pPrinterName = PRINTER_NAME; PrinterAddInfo.pPortName = (pPortName)?pPortName:DEFAULT_PORTNAME; PrinterAddInfo.pDriverName = DRIVER_NAME; PrinterAddInfo.pPrintProcessor = __T("winprint"); if (hPrinter = AddPrinter(NULL,2,(LPBYTE)&PrinterAddInfo)) { ClosePrinter(hPrinter); } else eError = EC_CantAddPrinter;
-
Hallo Leute,
ich muß nioch mal dauf zurückkomen. Die Obige Version funktioniert unter Windows 7 64 Bit.
Unter XP habe ich immer den Fehler bei AddPrinterDriverEx:
ERROR_FILE_NOT_FOUND
2 (0x2)
The system cannot find the file specified.nur wenn ich die Datein in Windows/System32/ von had Suche sind alle vorhanden. Wie kann ich herausfinden welche Datei jetzt fehlt
MfG
-
also in der Inf steht das und es funktioniert:
[INSTALL_MBXPS_FILTERS_PRE_VISTA] CopyFiles=DrvFiles DriverFile=mxdwdrv.dll PrintProcessor="MS_XPS,filterpipelineprintproc.dll" ConfigFile=UniDrvUI.dll HelpFile=UniDrv.HLP DataFile=MBPrinterDrv.gpd Include=NTPRINT.INF, MSXPSDRV.INF Needs=UNIDRV.OEM, XPSGPD.OEM, XPSDRV.OEM CopyINF=MBPrinterDrv.inf
aber warum dann gerade eine Datei FEhlt verstehe ich nicht