03. oktober 2011 - 15:10Der er
15 kommentarer og 1 løsning
Print til printer via ActiveX control
Hej Jeg har udviklet en ActiveX kontrol, for at give brugere af et website muligheden for, at printe direkte til en Zebra label printer.
Jeg giver brugere muligheden for at printe til printeren via IP og port eller ved at indtaste en sti til en delt printer.
Via IP har vi ingen problemer.
Problemet opstår når vi forsøger at printe til en delt printer, men kun hvis klientens styresystem er Windows 7 (Vi har ikke testet på en Vista maskine). Der er ingen problemer med at fange printeren fra en XP maskine.
Koden ser således ud:
Byte[] data = System.Text.Encoding.GetEncoding(1252).GetBytes(Text); SafeFileHandle printer = CreateFile(Path, GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero); if (printer.IsInvalid == true) { return "Could not connect to printer. Printer path:" + Path; }
FileStream lpt1 = new FileStream(printer, FileAccess.ReadWrite); lpt1.Write(data, 0, data.Length);
Jeg kunne da forstille mig at det er noget AV software og/eller Firewall der går ind og blokere. Og når det er en ActiveX kontrol, så har Internet Explorer sikker også en finger på pulsen.
Hvad sker der hvis Firewall og AV software slås fra, kan der så udskrives.
Logges der nogen events i eventloggen, når printeren tilgås?
I had a similar problem with Windows 7 on HP Pavilion Slimline trying to print to a shared printer (HP4250) connected via parallel port to a Windows XP machine.
I saw some posts about Vista having similar problems (see "Windows vista printing to shared windows xp machine") and copied their technique. I added the printer as a local printer (not networked), then selected Create a New Port, and for Type Of Port, a selected Local Port from the drop down list. Click next, then enter the network name (ie \\xpmachinename\printername ). This didn't work at first, but then I changed the printer sharing on the XP machine from Shared to Don't Share, and then back to Shared. Then the Windows 7 machine was able to recognise \\xpmachinename\printername and the rest of the configuration was straighforward - I was able to find the correct driver without having to download a driver from HP's website.
Hej igen Ja, jeg har forsøgt med at staret IE som administrator, men det løser det ikke. Jeg har ikke forsøgt med at slå UAC fra, men det vil jeg da prøve.
Det er en maskine som står i Mexico, så jeg får først adgang til den senere i dag. Du skal nok høre fra mig om det løser det.
Min share er operret som følgende: Højreklikket på printer og valgt Printer Properties. Fanen Delt og hak i Del denne printer. Herefter er indtastet et printer share navn.
Jeg forsøger at fange printeren på printerstien \\computernavn\printersharenavn
Nej jeg kan ikke pinge stien. Jeg kan pinge computeren og jeg kan fange den delte printer fra en anden PC (XP maskine). Så delingen må være fin nok.
Jeg kan heller ikke fange printeren via ActiveX kontrollen, hvis jeg skrifter computernavn ud med IP adressen. Printeren er koblet til den PC som jeg prøver at fange den på.
Kan du se printeren på din Windows 7 PC under Netværk og Internet | Vis computere og enheder på netværket (Network and internet | View network computers and devices)?
Prøv lige at gøre de ting som står i denne guide og kom med resultatet her.
Jeg har fuld Share a Printer from XP to Windows 7 guiden og har ingen problemer med at dele printeren og se den fra andre maskiner. Jeg kan end uden problemer printe fra en XP maskine til den delte printer på Windows 7 maskinen, så det er ikke delingen som er problemet.
Jeg tror problemet er at min ActiveX ikke kan se printer driver eller får lov til at forbinde til printeren via driveren..
Marshal.GetHRForLastWin32Error() returnerer: -2147024894 og Marshal.GetLastWin32Error()returnerer: 2
Hvis jeg kalder en printer som ikke findes får jeg følgende fejl: Marshal.GetHRForLastWin32Error() returnerer: -2147024829 og Marshal.GetLastWin32Error()returnerer: 67
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.