WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   An die VB6 Gurus (http://www.wcm.at/forum/showthread.php?t=108001)

Take_Five 06.09.2003 20:21

An die VB6 Gurus
 
Hi. Ich muss bis morgen (Sonntag) ein ActiveX Steuerelement erstellen, dass folgendes tut

1. Ein User gibt in ein Textfeld den Namen einer Applikation ein (z.B.: winword.exe).
Das Steuerelement sucht nun in der Registry nach dieser Anwendung und liest, wenn sie gefunden wurde, den Pfad aus und führt ihn aus (shell.execute).

Wenn der Pfad nicht gefunden wurde, sucht das Steuerelement die Datei auf der Platte. Wenn sie gefunden wurde, wird ebenfalls der Pfad ausgelesen und wieder ausgeführt.

2. Der user kann aber auch ins Textfeld den bereits vollständigen Pfad eingeben (C:\Programme\winword.exe). Der Pfad wird dann durchsucht und wenn die Applikation darin nicht vorkommt, dann wird wieder die Registry durchsucht und geschaut, ob die Applikation nicht vielleicht doch irgendwo is. Falls doch, wird die Datei wieder ausgeführt (so auch wenns in der Registry gefunden wurde).

Mein Problem is nun folgendes: Wie genau erstell ich ein ActiveX Steuerelement, und
2. Wie durchsuch ich die Registry?

Bitte, bitte helft mir

Lg Take_Five

Seidl 07.09.2003 02:08

Ich will dich ja nicht entmutigen aber das mit der Registry kann eigentlich gar nicht funktionieren. Mit Winword könnte ich es mir noch vorstellen, da davon kaum jemand mehrere Versionen installiert haben dürfte. Bei Access ist das schon wieder was anderes. Die meisten Access-Entwickler dürften die Versionen 97 und XP parallel installiert haben. Die Executable beider Versionen trägt dabei den selben Namen. Welche sollte dann ausgeführt werden?
Abgesehen davon, ist mir keine Möglichkeit bekannt, um aus der Registry den Pfad für eine Anwendung anhand ihres Dateinamens herauszufinden. Eine ziellose Suche kannst du ja mal im RegistryEditor versuchen. Da gibt's für den Suchbegriff winword.exe ziemlich viele Treffer.
Eine Möglichkeit die ich mir noch eher vorstellen könnte, wäre das Starten der Standardanwendung für eine Extension. Siehe dazu folgende Links:

AssocQueryString =>
http://msdn.microsoft.com/library/de...uerystring.asp

AssocQueryKey =>
http://msdn.microsoft.com/library/de...ocquerykey.asp


Was das suchen einer Anwendung im Filesystem angeht, so hast du wieder das selbe Problem wie mit der Registry. Was tun, bei mehreren Treffern?

wbendl 07.09.2003 20:42

Hi!

Also grundsätzlich halte ich es für machbar, aber nicht bis heute.

1. Ein neues Projekt beginnen und ActiveX-Steuerelement auswählen.
Falls das bei dir nicht geht, hast du nur die "Sparversion" von VB6.
Besorg die die Enterprise-Edition.

2. Alle ordnungsgemäß installierten Programme sind unter folgendem Pfad in der Registry zu finden.
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\App Paths\
Dabei ist auch der Pfad zu Anwendung abgelegt.
Das Auslesen der Werte ist wohl nur mit Hilfe des API möglich.

3. Eine Datei auf der Festplatte zu suchen kann mit Bordmitteln programmiert werden, der Suchvorgang kann aber ziemlich lange dauern.

Wenn du eine Fristverlängerung schaffst, dann such in den VB-Foren nach dem Code für den Zugriff auf die Registry.
Ich kann dir soetwas frühestens in 2 Wochen schnitzen.

mfg

WB

Seidl 08.09.2003 22:03

Hmmm. In dem Pfad war ich auch. Ich habe aber zu allererst nach Winamp gesucht. Als ich das nicht gefunden habe, habe ich die anderen Einträge gar nicht mehr angesehen. Auf den zweiten Blick allerdings scheint die Liste (bis auf Ausnahmen) wirklich fast alles zu enthalten.

Das Auslesen der Werte aus der Registry ist kein wirkliches Problem. Entweder du bindest die Registry Access Functions (REGTOOL5.dll) in dein Projekt ein oder du holst dir die nötigen Infos von HIER.

Für die Suche nach einem File kannst du entweder die Infos unter folgendem Link verwenden:
http://support.microsoft.com/default...b;en-us;185476

oder auch die FileSearch-Klasse der Microsoft Office 10.0 Object Library (mso.dll) verwenden.

Ich hoffe die Infos kommen nicht endgültig zu spät.


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag