Avatar billede fsconsult.dk Nybegynder
13. april 2003 - 14:31 Der er 10 kommentarer og
1 løsning

Test om en ActiveX komponent er installeret

Jeg skal kalde en ActiveX komponent på brugerens PC, hvis den ellers er installeret. Men hvordan tester man det?

Hvis jeg bare bruger skriver OBJECT tagget, får jeg en grim boks hvis ActiveX tingesten ikke findes!

Der skulle jo helst ikke komme nogen fejl, uanset om ActiveX komponenten er installeret eller ej..

<OBJECT id="myid" classid="clsid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx">
</OBJECT>
<script defer>
document.forms[0].elements["test"].value = myid.getValue(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2);
</script>
<form>
<hidden name="test" value="-1">
</form>
Avatar billede olebole Juniormester
13. april 2003 - 15:20 #1
<ole>

Er det fejl-meldingens 'grimme boks', du tænker på, kan du vel gøre sådan:

try {
    myid.getValue(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2);
    alert("Er installeret");
}
catch (e) {
    alert("Ikke installeret");
}

En anden ting er så, at de fleste antivirus programmer vil fraråde brugeren at gå ind på siden ... hvis han er så 'tumpet' ikke at have slået ActiveX-understøttelsen fra. Dog afhængig af, hvilken type kontrol, der er tale om  :)
/mvh
</bole>
Avatar billede olebole Juniormester
13. april 2003 - 15:21 #2
Sådan, selvfølgelig:

try {
    document.forms[0].elements["test"].value = myid.getValue(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2);
    alert("Er installeret");
}
catch (e) {
    alert("Ikke installeret");
}
Avatar billede olebole Juniormester
13. april 2003 - 15:23 #3
... og til slut den lidt mere effektive:

try {
    document.forms[0].test.value = myid.getValue(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2);
    alert("Er installeret");
}
catch (e) {
    alert("Ikke installeret");
}
Avatar billede fsconsult.dk Nybegynder
13. april 2003 - 15:24 #4
flot løsning, men jeg skal jo stadig have loadet ActiveX komponenten først med et OBJECT tag, hvis den altså findes ..
Avatar billede olebole Juniormester
13. april 2003 - 15:54 #5
Får du fejl der? Eller hvad?
Avatar billede fsconsult.dk Nybegynder
13. april 2003 - 16:11 #6
Hvis jeg har object tagget i html koden, får jeg en grim lille tingest som advarsel fra exploreren. Så øvelsen går også ud på kun at kalde activex scriptet hvis det findes. Både som object og fra javscript
Avatar billede olebole Juniormester
13. april 2003 - 16:38 #7
Jeg tror, du får svært ved at checke det i JavaScript, men kan du ikke skrive noget à la:

<OBJECT id="myid">
</OBJECT>

<script type="text/JavaScript">
try {
    myid.classid="CLSID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
    myid.getValue(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2);
    alert("Det virker");
}
catch (e) {
    alert("Ikke installeret");
    myid.style.display = "none";
}
</script>

Det er et 'cowboy-hack' - men det burde vel funke.
Ellers kan du måske noget med VBScript:
  http://msdn.microsoft.com/library/en-us/dnwebteam/html/activexcheckdescription0908.asp
Avatar billede olebole Juniormester
13. april 2003 - 16:39 #8
alert'erne skal naturligvis slettes .... de er kun til test  :)
Avatar billede fsconsult.dk Nybegynder
13. april 2003 - 16:47 #9
Det ser ud til at virke fint, når classid først tildeles dynamisk!    :-)
Avatar billede fsconsult.dk Nybegynder
13. april 2003 - 16:48 #10
smid et svar, så får du dine velfortjente point ..
Avatar billede olebole Juniormester
13. april 2003 - 17:12 #11
oki  :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester