icaaqMedlem sedan okt. 20004 910 inlägg
Hej.
Jag håller på att göra en intranet-sida där användarna ska få en utskriven kopia av vad dem åstadkommit. Detta löser jag genom att använda
[red]
<body onload="window.print();self.close()">
[/red]
Men för att användaren ska slippa välja skrivare när sidan körs så har jag genom en intensiv letning hittat att man kan installera en ActiveX-komponent i webbläsaren. Jag har dock inte hittat någon komponent i de trådar jag såg.
Så nu kommer frågan, Är det någon som har en sådan eller vet var jag kan hitta någon???
Det behöver inte vara till just IE bara det är till någon webbläsare.
Mv icaaq
/RED. Nu kanske inte detta var det rätta forumet för detta, men det var här jag hittade de flesta trådarna om just print() och ActiveX.
nikoMedlem sedan juni 20022 415 inlägg
Det finns redan komponenter i de flesta Windowssystem som du kan använda (utnyttja). I min IE med hyfsat normala säkerhetsinställningar kan jag tex (tyvärr) göra så här:
<OBJECT ID="WB" WIDTH="0" HEIGHT="0" CLASSID="clsid:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>
<SCRIPT LANGUAGE="VBScript">
Sub window_onload
OLECMDID_PRINT = 6
OLECMDEXECOPT_DONTPROMPTUSER = 2
WB.ExecWB OLECMDID_PRINT, [b]OLECMDEXECOPT_DONTPROMPTUSER[/b]
end sub
</SCRIPT>
<html><head></head><body>
Ooops! Rakt ut på default-skrivaren!
</body></html>
icaaqMedlem sedan okt. 20004 910 inlägg
icaaqMedlem sedan okt. 20004 910 inlägg
Ett litet bekymer dock.
Hur gör jag för att stänga fönstret?
mv icaaq
nikoMedlem sedan juni 20022 415 inlägg
Tja, inte vet jag. Om det är en vanlig pop-up:
..
WB.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
window.close
eller menar du att utskriften inte hinner med då? Isåf:
..
WB.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
settimeout "window.close", 5000, "VBScript"
En annan variant, som jag kom på sen, är att man kör utskriften från ett osynligt IE-fönster:
<script LANGUAGE="VBScript">
set printWin = createobject("InternetExplorer.Application")
printWin.visible = false
printWin.navigate "http://<din intranet-sida>"
do while printWin.busy
loop
printWin.ExecWB 6, 2
settimeout "printWin.quit", 5000, "VBScript"
</script>
Hos mig funkar iaf det med default-säkerhetsinställningarna i "Local Intranet Zone".
icaaqMedlem sedan okt. 20004 910 inlägg
Jag körde på den översta varianten......
mv icaaq
NBTMedlem sedan jan. 200267 inlägg
Hej,
Om jag förstod rätt så skulle följande kodsnutt resultera i att man slapp välja default-printer och utskriften skulle automatiskt skrivas ut på default-printern.
<OBJECT ID="WB" WIDTH="0" HEIGHT="0" CLASSID="clsid:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>
<SCRIPT LANGUAGE="VBScript">
Sub window_onload
OLECMDID_PRINT = 6
OLECMDEXECOPT_DONTPROMPTUSER = 2
WB.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
end sub
</SCRIPT>
<html><head></head><body>
Ooops! Rakt ut på default-skrivaren!
</body></html>
Stämmer det?
nikoMedlem sedan juni 20022 415 inlägg
Stämmer det?
Ja? Under förutsättning att: du kör IE (4-?) på Windows, scriptning är påslaget, och att sidans URL ligger i en zon i vilka rättigheterna är satta så att du får interagera med signerade activeX-komponenter.
Hos mig duger tex default-inställningarna i "Local Intranet Zone". (Att bara dubbelklicka på en html-sida funkar däremot inte eftersom IE isåf inte kan identifiera sidans URL som en som ligger innanför nätmasken.)
NBTMedlem sedan jan. 200267 inlägg
hejsan. Efter lite trixande och så med rättigheterna så fick jag det att fungera. Tack så mycket för hjälpen!
CokeLightMedlem sedan juni 2000506 inlägg
Hejsan, undrar om någon kan hjälpa mig med detta.
OLECMDEXECOPT_DONTPROMPTUSER = 2
verkar inte ha någon som helst effekt när jag kör.. undrar om någon får det att funka.. (alltså att man kan skriva ut utan att få upp dialogfönstret som ber användaren klicka i vilken printer han/hon vill skriva ut till) och om det gick att köra rakt av eller om viss modifikation krävdes?
skulle vara super om det gick... :)
mozillaMedlem sedan juli 20011 202 inlägg
Cokelight skrev:
Hejsan, undrar om någon kan hjälpa mig med detta.
OLECMDEXECOPT_DONTPROMPTUSER = 2
verkar inte ha någon som helst effekt när jag kör.. undrar om någon får det att funka.. (alltså att man kan skriva ut utan att få upp dialogfönstret som ber användaren klicka i vilken printer han/hon vill skriva ut till) och om det gick att köra rakt av eller om viss modifikation krävdes?
skulle vara super om det gick...
:q
niko skrev:
Ja? Under förutsättning att: du kör IE (4-?) på Windows, scriptning är påslaget, och att sidans URL ligger i en zon i vilka rättigheterna är satta så att du får interagera med signerade activeX-komponenter.
Hos mig duger tex default-inställningarna i "Local Intranet Zone". (Att bara dubbelklicka på en html-sida funkar däremot inte eftersom IE isåf inte kan identifiera sidans URL som en som ligger innanför nätmasken.)
NBT skrev:
hejsan. Efter lite trixande och så med rättigheterna så fick jag det att fungera. Tack så mycket för hjälpen!
icaaq skrev:
Wee......
mv icaaq
Verkar som alla 3 fått det att fungera. Har du kontrollerat säkerhetsinställningarna som niko skriver?
Att göra det utan att ändra inställningar är förhoppningsvis omöjligt. För hur skulle det vara om vem som helst skulle kunna skriva ut reklam eller vad som helst på min skrivare bara för att jag surfar in på deras hemsida
CokeLightMedlem sedan juni 2000506 inlägg
hehe.. absolut, det vore ju galet.. jag glömde bort att det var klientinställningarna som jag också borde kolla nu när jag testar klient-script.. jag har lagt till användare på servern etc. och kört impersonate när jag körde server script... men.. hmm.. vad tycker du.. då måste jag ju gå in i varje browser o ställa in säkerhetsinställningarna där eller...?
CokeLightMedlem sedan juni 2000506 inlägg
Hej mozilla, jo, det funkar bra nu också när jag ändrat browser inställningarna... tack för att du påminde om detta.. hade snöat in mig i att leta efter nåt på servern...
Men nu har jag ett följdproblem, startade en ny tråd
http://www.webforum.nu/showthread.php?s=&threadid=123867
eftersom jag inte kan få applikationen att köras som ett "Lokalt intranät"..