Newsgroup: it.comp.lang.delphi
Titolo: flash plugin installato?

Ciao a tutti,
Dovrei controllare se il plugin di flash è installato su un pc, ci sono
varie strade, controllo registro (però è facile con non sono admin della
macchina), controllo sulla presenza del file .ocx, ecc, ecc...qualcuno di
voi a qualche link o esempio di codice sul quale mi posso basare?
Grazie a tutti in anticipo!

provare a instanziarlo con createoleobejct e intercettare l'eccezione?
AS

 voi a qualche link o esempio di codice sul quale mi posso basare?
...oppure, oltre alla soluzione di Alberto, potresti verificare se nel 
Registro di Configurazione sono presenti le apposite chiavi di 
registrazione dell'oggetto COM relativo:
[HKEY_CLASSES_ROOT\MacromediaFlashPaper.MacromediaFlashPaper]
@="Macromedia Flash Paper"
[HKEY_CLASSES_ROOT\MacromediaFlashPaper.MacromediaFlashPaper\CLSID]
@="{D27CDB6E-AE6D-11cf-96B8-444553540000}"
[HKEY_CLASSES_ROOT\MacromediaFlashPaper.MacromediaFlashPaper\DefaultIcon]
@="\"%1\""
[HKEY_CLASSES_ROOT\MacromediaFlashPaper.MacromediaFlashPaper\shell]
[HKEY_CLASSES_ROOT\MacromediaFlashPaper.MacromediaFlashPaper\shell\open]
[HKEY_CLASSES_ROOT\MacromediaFlashPaper.MacromediaFlashPaper\shell\open\command]
@="......"
Non sono certo che a versione differente del player corrisponda una 
CLSID differente.
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

 @="Macromedia Flash Paper"
Ciao,
Grazie a entrambi!
Ciao!

uhm, sai che condivido poco l'accesso diretto al registro.
AS

 AS
Ciao,
Ho provato ad istanziarlo:
vObjFlash := CreateOLEObject('swfObjs.swfMovie');
Ho un errore: "Invalid class string", ho preso questo esempio in internet,
ma non funziona?
Qualche idea?

 AS
Ciao,
IMHO infatti non è la soluzione su cui mi baserò, preferisco usare la
createOLE, ma ho alcuni problemi.
L'ho appena segnalato sul tuo post.
Grazie!

dove lo hai preso?
AS

 uhm, sai che condivido poco l'accesso diretto al registro.
Qual è il problema, nel caso in esame?


il caso in esame non so....ma...
1) esistono molte api che fanno da wrapper alla lettura di chiavi del
registro
2) trattandosi di zio billy non hai garanzie certe che le chiavi siano
sempre nello stesso posto e dello stesso tipo.
3) subentra poi la terza parte... non è solo zio billy a lavorare una
latrina...
in genere, se esiste una api uso quella.
se non c'è e non esisotno alternative ovviamente non hai scelta e
accedi al registro, anche se 'sta cosa non mi lascia molto tranquillo.
Nel caso specifico, l'uso di una try..except sul tentativo di
istanziare la classe la vedo una alternativa.
Il tutto ovviamente imho.
AS

 in genere, se esiste una api uso quella.
Concordo che l'uso di un API è preferibile in generale, ma la soluzione 
sul Registro di Configurazione l'ho suggerita semplicemente perchè, 
trattandosi di un ActiveX e quindi di un server COM, c'è un legame a 
doppio filo con il Registro di Configurazione e quindi è possibile 
utilizzarlo senza problemi.
Come dicevo prima, un API la preferisco anche io, ma allora cercherei 
una funzione in grado di restituirmi esattamente l'informazione che 
cerco, cioè se un plugin è installato oppure no, invece di tentare la 
creazione di un'istanza.
Se vuoi sapere se esiste memoria disponibile sul sistema, in genere 
richiami un API specifica che ti restituisce il numero di byte...non 
tenti invece di allocare un buffer per vedere se il tentativo di 
allocazione non va a buon fine, no? :-)
Comunque, era una soluzione come un'altra per determinare la presenza di 
un ActiveX senza crearne un'istanza; anche per il Registro esiste un API 
dedicata ed è ancora il mezzo favorito per la memorizzazione delle 
impostazioni, oltre al fatto che gli oggetti COM ricoprono un'area 
specifica del Registro, quindi non mi sembra una "pratica" così brutta o 
un tentativo di hacking del Registro... :-/


 AS
Ciao,
L'ho trovato su delphi3000, sinceramente non riesco più a risalire a quel
link, ho preso la linea di codice copiato e incollato per testare.
Adesso cerco la stringa per istanziare la classe con la createOLE, sarà ma
non riesco a trovarla così facilmente.
Poi esiste il problema secondario, il metodo createOLE funziona per IE, ma
se il mio browser di default è Mozilla e ho installato il plugin Flash per
questo browser e non per IE, cosa succede?

 un tentativo di hacking del Registro... :-/
si, marco. ma dopo aver tozzato con crystal report 8 il cui setup
sovrascriveva delle chiavi nel registro relative a dcom, quando sento
"accesso al registro" mi viene la pelle d'oca, senza contare le altre
cose dette prima.
Inoltre, visto che lo uso poco, non so se da user o poweruser riesci a
leggere certe chiavi.
Mentre di certo riesci a istanziare un ole/com se esiste visto che di
fatto corrisponde all'avvio di una applicazione.
AS