Zum vorherigen AbschnittZum nächsten Abschnitt Die Windows-API
Über die Windows-API können Sie Funktionen ausführen, die in einer einer DLL (Dynamic Link Library) mit Hochsprachen wie z.B. C++ geschrieben wurden. Diese API-DLLs haben jedoch einen Großen Nachteil: ohne den genauen Aufruf zu kennen, können Sie diese nicht in Ihren Projekten nutzen. Wesentlich leichter kann der Visual-Basic-Programmierer mit den sogenannten ActiveX-DLLs arbeiten. Zu diesen muss jedoch vorher ein Verweis erstellt worden sein.

Eine ziemlich nützliche Windows-API-DLL ist die "shell32.dll". Sie stellt viele nützliche Funktionen zur Verfügung, mit denen Sie Windows steuern können. Diese Funktionen kennt jedoch nicht jeder. Deshalb existiert auch eine ActiveX-DLL, die die Funktionsaufrufe vereinfacht und automatisiert.

 Zum vorherigen AbschnittZum nächsten Abschnitt Neue Möglichkeiten
Als ersten Schritt müssen Sie den Verweis zur ActiveX-DLL erstellen. Hier zu erstellen Sie ein neues Projekt und wählen den Menüpunkt Projekt -> Verweise.... Ein neues Dialogfenster öffnet sich und stellt eine Liste mit möglichen Verweisen dar. Suchen und aktivieren Sie den Eintrag "Microsoft Shell Controls and Automations" und klicken Sie auf "OK".

Nun können Sie auf die Shell-Bibliothek zugreifen. Die Shell32-Bibilithek stellt einige Klassen zur Verfügung. Um mit deren Funktionen zu arbeiten, müssen Sie vorher eine Variable hierfür erstellen:
Dim Shell As New Shell

Über die neue Variable Shell können wir nun auf alle Funktionen der Shell-Klasse zugreifen. Hier ein kleines Beispiel, welches alle geöffneten Fenster minimiert:
Private Sub Command1_Click ()
   Shell.MinimizeAll
End Sub

Dies ist jedoch nur eine von vielen möglichen Funktionen. Hier eine Liste aller Funktionen des "Shell" Objekts:
 Funktion   Beschreibung 
 BrowseForFolder   Zeigt den "Ordner suchen"-Dialog an. Gibt den gewählten Ordner als Folder-Objekt zuück 
 CascadeWindows   Ordnet alle Fenster überlappend an 
 ControlPanelItem   Zeigt einen Systemsteuerungsdialog an 
 EjectPC   Wirft den PC aus.  
 Explore   Startet den Explorer mit einem vorgegebenen Pfad 
 FileRun   Zeigt den "Ausführen" Dialog an. 
 FindComputer   Zeigt den "Suchen nach: Computer" Dialog an 
 FindFiles   Zeigt den "Suchen nach: Alle Dateien" Dialog an 
 Help   Zeigt den "Shell-Hilfe" Dialog an 
 MinimizeAll   Minimiert alle Fenster 
 NameSpace   Setzt die Objektvariable für ein Folderobjekt 
 Open   Öffnet einen Pfad, eine Datei oder eine URL mit dem Standartprogramm 
 RefreshMenu   Aktualisiert das Menü 
 SetTime   Zeigt den "Eigenschaften von Datum/Uhrzeit"-Dialog an 
 ShutdownWindows   Zeigt den "Windows beenden"-Dialog an 
 Suspend   Fährt den Computer in den Standby-Modus 
 TileHorizontally   Ordnet alle Fenster nebeneinander an 
 TileVertically   Ordnet alle Fenster übereinander an 
 TrayProperties   Zeigt den "Eigenschaften von Taskleiste"-Dialog an 
 UndoMinimizeALL   Macht den Befehl MinimizeAll rückgängig 

Weitere Informationen erhalten Sie im Objektkatalog (F2),  wo die einzelnen Funktionen, Methoden und Klassen noch einmal genauestens aufgelistet werden.


 Zum vorherigen AbschnittZum nächsten Abschnitt Das Folder-Objekt
Mit den Folder-Objekten können Sie Dateisystemoperationen ganz leicht ausführen. Das Hauptobjekt ist das FolderObjekt. Dieses können Sie per NameSpace (s.o.) mit einem beliebigen Ordner laden. Der Aufruf:

Dim Folder As Folder
Set
Folder = Shell.NameSpace("C:\")

Dieser Code belädt unser Folder-Objekt mit dem Verzeichniss "C:\". Nun können wir mir unserem Objekt arbeiten. Die wichtigsten Funktionen und Eigenschaften lauten:

 Funktion   Beschreibung 
 Items   Listet alle Dateien und Ordner in dem Verzeichniss auf und gibt diese als FolderItems-Objekt zurück. 
 NewFolder   Erstellt einen neuen Ordner in dem Ordner. 
 ParentFolder   Gibt bei einem Unterverzeichnis das Hauptverzeichnis als Folder-Objekt zurück. 
 Title   Gibt den Namen des Verzeichnis zurück. 


 Zum vorherigen AbschnittZum nächsten Abschnitt Das FolderItems-Objekt & das FolderItem-Objekt
Wie Sie sehen, können wir mit dem Verzeichniss selbst nicht viel anstellen. Um die Dateien zu erhalten, die sich in dem Verzeichnis befinden anzusprechen, müssen wir diese erst Auflisten. Dies geschieht mit der Items-Funktion:

Dim FolderItems As FolderItems
Set
FolderItems = Folder.Items

Nun haben wir den gesamten Inhalt des Verzeichnisses in unserem FolderItems-Objekt aufgelistet. Die Funktionen des FolderItems sind:
 Funktion   Beschreibung 
 Count   Gibt die Anzahl der Dateien an. 
 Item(n  Gibt das n-te Verzeichnis oder Datei in Form eines FolderItem-Objekt zurück. 

Mit diesem Code können wir den gesamten Inhalt auslesen:
Dim Shell32 As New Shell

Dim Folder As Folder
Set Folder = Shell32.NameSpace("C:\")

Dim fItems As FolderItems
Set fItems = Folder.Items

Dim fItem() As FolderItem
ReDim fItem(fItems.Count - 1)

For i = 0 To fItems.Count - 1
   Set fItem(i) = fItems.Item(i)
Next

Nun haben wir alle Dateien in unseren fItem-Array eingelesen. Nun können wir endlich Informationen auslesen. Zur Verfügung stehen:

 Funktion   Beschreibung 
 GetFolder   Gibt, wenn die Datei ein Verzeichnis ist, das Folder-Objekt zurück. 
 GetLink   Gibt, wenn die Datei eine Verknüpfung ist, das  ShellLinkObject -Objekt zurück. 
 IsBrowsable   Bestimmt, ob man die Datei durchsuchen kann (=Ordner). 
 IsFileSystem   Bestimmt, ob die Datei eine Systemdatei ist (Attribute). 
 IsFolder   Bestimmt, ob die Datei ein Verzeichnis ist. 
 IsLink   Bestimmt, ob die Datei eine Verknüpfung ist. 
 ModifyDate   Gibt das Datum zurück, an dem die Datei zuletzt bearbeitet wurde. 
 Name   Gibt den Dateinamen zurück. 
 Path   Gibt den genauen Pfad zurück, an dem sich die Datei/Verzeichnis befindet. 
 Size   Gibt die Größe der Datei in Bytes zurück. 
 Type   Gibt den Typ der Datei zurück. 
 Verbs   Gibt die Liste der möglichen Befehle für eine Datei als FolderItemVerbs-Objekt zurück. 
 InvokeVerb   Führt einen Befehl für die Datei aus. 


 Zum vorherigen AbschnittZum nächsten Abschnitt Das ShellLinkObject-Objekt
Das ShellLinkObject-Objekt ist nichts anderes als ein Extra-Objekt für eine Verknüpfung. Mit ihm können Sie ganz leicht Informationen einer Verknüpfung auslesen und ändern. Hier erhalten Sie eine Liste der Funtionen und Eigenschaften des ShellLinkObjects:

 Funktion   Beschreibung 
 Arguments   Gibt die Argumente, die der Link übergibt zurück oder legt sie fest. 
 Description   Gibt die Beschreibung, der Verknüpfung zurück oder legt diese fest. 
 GetIconLocation   Gibt den Pfad zurück, an dem das Icon ist. 
 Hotkey   Gibt die Tastenkombination der Verknüpfung zurück oder legt diese fest. 
 Path   Gibt den Pfad der Verknüpfung zurück. 
 Resolve   Führt den Link aus (entspricht einem Doppelklick auf dem Link). 
 Save   Speichert die Änderungen ab. 
 SetIconLocation   Setzt den Pfad an dem das Icon ist. 
 ShowCommand   Bestimmt den Modus, in dem der Link gestartet wird (minimiert, maximiert oder normal). 
 WorkingDirectory   Gibt das Arbeitsverzeichnis zurück oder legt dieses fest. 


 Zum vorherigen AbschnittZum nächsten Abschnitt Das FolderItemVerbs-Objekt & das FolderItemVerb-Objekt
Die beiden letzten wichtigen Klassen sind das FolderItemVerbs-Objekt und das FolderItemVerb-Objekt. Mit Ihnen können Sie die verschiedenen Befehle für eine Datei auslesen und ausführen. (im Explorer Rechtsklick auf eine Datei) Als erstes müssen Sie die möglichen Befehle auflisten:

.
.
.

Dim fItemVerbs As FolderItemVerbs
Set fItemVerbs = fItem(0).Verbs

Dim fItemVerb() As FolderItemVerb
ReDim
fItemVerb(fItemVerbs.Count - 1)

For i = 0 To fItemVerbs.Count - 1
   Set fItemVerb(i) = fItemVerbs.Item(i)
Next i

Nun haben wir alle möglichen Befehle aufgelistet und wir können folgende Befehle für jedes fItemVerb ausführen:

 Funktion   Beschreibung 
 DoIt   Führt den jeweiligen Befehl auf die Datei aus. 
 Name   Gibt den Namen des Befehls zurück. 


 Zum vorherigen AbschnittZum nächsten Abschnitt Beispielprojekt
Für alle, denen das hier etwas zu kompliziert war, haben wir ein Beispielprojekt vorbereitet, das alle Funktionen nocheinmal genauestens erklärt:
 Beispielprojekt



Quellen: SHADOWare.de
Letzte Änderung: 02.07.2001
©2001 by SHADOWare, Felix Weis