Avatar billede hlj Nybegynder
24. januar 2000 - 19:35 Der er 22 kommentarer og
2 løsninger

Detektere installerede Active X komponenter

Hvordan kan man nemmest, i Delphi, detektere om en given Active X komponent er installeret?

Er det samme fremgangsmåde på Windows 95/98/NT/2000?

Kan man installere Active X komponenten fra Delphi?
Avatar billede canman Nybegynder
30. januar 2000 - 23:24 #1
Du går bare ind i Delphi Menuen (component/Import ActiveX Control) Der har du en liste med de activex componenter der er installeret. Og der kan du også installere et activex component.
Avatar billede hlj Nybegynder
31. januar 2000 - 09:00 #2
canman> Jeg mener inde fra et Delphi program.
Avatar billede hlj Nybegynder
07. februar 2000 - 15:18 #3
Og pointene gik lige lidt op for et godt svar
Avatar billede pellelil Nybegynder
09. februar 2000 - 12:05 #4
Når active X (COM) componenter registreres så liggers netop disse "registreringer" ind i Windows' registrerings database, så det er blot et spørgsmål om at finde dem her.

F.eks. VSSpell Activ-X componenten der følger med Delphi kan du finde under:

HKEY_CLASSES_ROOT\VSPELLER...

Den løsning som Canman (hej Ven) foreslår vil sikkert kunne vise dig (har ikke kigget) de "oplysninger" som du skal finde i registrerings databasen. Når du således ved hvad du skal kigge efter så er det ingen sag at lave et Delphi program der kigger i registrerings databasen efter det samme (Eksemplet "bruges til noget andet" men viser princippet):

Const
  _ProgramKey  = '\Software\FccSoft\FccMessage';
  _PollInterval = 'PollInterval';

var
Reg  : TRegistry;
iVar : Integer;

begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_CURRENT_USER;
  Reg.OpenKey(_ProgramKey, True);
  iVar := Reg.ReadInteger(_PollInterval);
end;
Avatar billede pellelil Nybegynder
09. februar 2000 - 12:08 #5
Du skal selvfølgelig huske en "Reg.Free;" inden "end;", og skulle du ikke lige kunen se det så vil program-stumpen læse (Integer) værdien af nøglen "PollInterval" der er registreret under "HKET_CURRENT_USER\Software\FccSoft\FccMessage"
Avatar billede hlj Nybegynder
09. februar 2000 - 12:21 #6
Jeg checker det lige engang.

Hved du hvordan man kan installere en ActiveX komponent indefra et Delphi program?
Avatar billede pellelil Nybegynder
09. februar 2000 - 12:51 #7
Det "simple svar" ville være at bruge registrerings databasen "modsat", så i stedet for at læse værdier, så skal du skrive i Databasen (erstat linien "iVar := Reg.ReadInteger(_PollInterval);" med "Reg.WriteInteger(_PollInterval,iVar);").

Der findes sikkert en anden nemmere måde, med dertil har jeg arbejdet for lidt med COM (herunder Active-X).
Avatar billede pellelil Nybegynder
09. februar 2000 - 13:34 #8
Jeg har lige undersøgt det, og de kloge (Tak canman) siger at der findes et program i "Windows\System" der hedder "RegSvr32". Dette program kaldes med et parameter der "indeholder" filnavn (og sti) på det Active-X component der skal installeres.
Avatar billede canman Nybegynder
09. februar 2000 - 13:37 #9
(Pellelil) Læs lige hans spørgsmål igen. Han skal kunne registrere hans ActiveX indefra hans program. Ihhh alstå.
Avatar billede pellelil Nybegynder
09. februar 2000 - 14:07 #10
"Hved du hvordan man kan installere en ActiveX komponent indefra et Delphi program?"

Canman: Hvilket ord forstod du ikke ?  ;-)

Og alle ved jo hvordan man kalder et eksternt program (RegSvr32) fra Delphi
Avatar billede canman Nybegynder
09. februar 2000 - 15:14 #11
Jamen, så fortæl mig lige hvordan du gør det!!! Hvad betyder Hved ?
Avatar billede delphi Nybegynder
09. februar 2000 - 15:53 #12
Først: Jeg skal ikke være moderator eller så'en her, men er vi ikke alle enige om, at man IKKE kommenterer andre folks slå/taste/stave fejl?  Gud vide at jeg selv har mit hyr med at ramme tasterne og 'Ekspertens' minimale input felt gør ikke sagen bedre.

Vedr. problemer med ActiveX:  Det er klart, at der i RegDB'en er gemt informationer om alle installerede OCX'er/ActiveX komponter og at man her kan finde deres Class ID's/file locations etc.
Hvis man således går ind under HKEY_CLASSES_ROOT\CLSID vil man finde en aller helvedes (undskyld) lang liste over GUID's, hvoraf nogle vil være på installerede ActiveX components.  Jeg er dog ikke lige umiddelbart klar over hvor man finde en liste der skiller skidt fra kanel.  At det kan lade sig gøre, er klart, for når både Delphi IDE'en og fx. M$Excel kan... så kan man vel også selv.

NiP
Avatar billede delphi Nybegynder
09. februar 2000 - 16:01 #13
UPs: Jeg gik i ovenstående ud fra at man ønsker en liste over alle komponenter.  Pellelil's svar af 9/2 beskriver ganske rigtigt hvorledes info om en installeret komponent findes.

Vedr. installation af komponent:  Hvis din komponent er en Com-server, så vil mange af dem selv sørge for at installere sig selv (dvs opdatere RegDB'en) første/hvergang de køres (det gør fx. Word og Excel).

For at en Komponent kan være en ActiveX komponent, så skal den indehode en registrerings funktion (lidt ligesom en Delphi unit med en VCL komponent, skal indeholde en Register funktion for at kunne installeres).  Hvordan og hvorledes kan jeg ikke lige huske, idet jeg ikke har rodet med det emne i lang tid, men det er den funktionalitet RegSvr32 udnytter - det kan man se'følig også gøre selv fra Delphi, uden at kalde RegSvr som et eksternt program

NiP
Avatar billede canman Nybegynder
09. februar 2000 - 16:08 #14
Det er sgu' uretfærdig at du holder med pellelil.
Avatar billede delphi Nybegynder
09. februar 2000 - 16:11 #15
Så'en er jeg - dybt uretfærdig :)
Avatar billede canman Nybegynder
09. februar 2000 - 16:33 #16
Så er den vist svaret.
Avatar billede pellelil Nybegynder
09. februar 2000 - 16:33 #17
Nej jeg synes ikke at du er uretfærdig, tværdigmod  du er sku' go' nok "delphi". Jeg takker for at du "kom mig til undsætning", men (trash)canman er en af mine venner (øhh forhenværende venner) så hans "udfald" var ikke så alvorligt som det måske kunne lyde.
Avatar billede delphi Nybegynder
09. februar 2000 - 16:34 #18
Jeg anede det...
Avatar billede canman Nybegynder
09. februar 2000 - 16:37 #19
En ven ringer ikke altid og spørger om problemer!!!
Avatar billede canman Nybegynder
09. februar 2000 - 16:38 #20
Eller svar på problemer!
Avatar billede delphi Nybegynder
09. februar 2000 - 16:42 #21
Der er for mange venner/kollegaer i dette forum  (lig'som jeg selkv/ANold og Egemar...)

NiP

PS: God Weekend/ferie - vi tales ved i Uge 8
Avatar billede canman Nybegynder
09. februar 2000 - 16:42 #22
Hvor bliver min 150 point af ?
Avatar billede canman Nybegynder
18. februar 2000 - 09:47 #23
hihi, tak hlj men det var nu kun for sjov. Pellelil burde have fået alle pointene. Men jeg takker og bukker for de 5 jeg fik ;)
Avatar billede hlj Nybegynder
18. februar 2000 - 10:00 #24
Han får 5 point ekstra næste gang. Jeg syntes at du havde fortjent de 5 point ;)
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
Kurser inden for grundlæggende programmering

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