webForumDet fria alternativet

window.print() och ActiveX

12 svar · 791 visningar · startad av icaaq

icaaqMedlem sedan okt. 20004 910 inlägg
#1

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
#2

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
#3

Wee......

mv icaaq

icaaqMedlem sedan okt. 20004 910 inlägg
#4

Ett litet bekymer dock.

Hur gör jag för att stänga fönstret?

mv icaaq

nikoMedlem sedan juni 20022 415 inlägg
#5

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
#6

Jag körde på den översta varianten......

mv icaaq

NBTMedlem sedan jan. 200267 inlägg
#7

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
#8

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
#9

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
#10

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
#11

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
#12

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
#13

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"..

Genererad på 382 ms · cache AV · v20260730165559-full.f96bc7eb