Verfügbare Datei Extensions auslesen

Hallo,

vorweg:
ichbin ein Greenhorn was VB angeht, kenne michjedoch recht gut in anderen Sprachen wie PHP, JS und so aus. das Coden ist mir also nicht gänzlich fremd.

Ich suche eine Möglichkeit meinem Programm eine auswahlliste hinzu zufügen, welche alle derzeit möglichen Dateiendungen welche sich auf dem system befinden (*.exe, *.txt usw.) auflistet. Der User soll dann eine oder mehrere davon auswählen können.

Man hat ja die Möglichkeit unter Windows, den einzelnen extensions auch die ausführenden Programme zuzuordnen. Dannm uss es doch auch einen Speicherot geben (Datei?), in welchem sich alle derzeit auf dem System verfügbaren extensions befinden. Gibt es eine Möglichkeit, Die Extensions aus Windows auszulesen?

Danke Michael

Hallo Michael,

die stehen in der Registry. Damit habe ich noch nichts gemacht, deshalb kann ich Dir nicht direkt weiter helfen. Auf http://www.allapi.net findest Du aber eine API-Guide, die Dir das erklärt. (free download)

Gruß, Rainer

Guten Tag Micha

Dafür ist die Function SHGetFileInfo in der Lib „shell32.dll“ zuständig. Dieses kleine Sampel liest die Zuordnung nur aus.

Private Declare Function SHGetFileInfo Lib „shell32.dll“ _
Alias „SHGetFileInfoA“ (ByVal pszPath As String, _
ByVal dwFileAttributes As Long, psfi As SHFILEINFO, _
ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long

Private Const MAX_PATH = 260
Private Const SHGFI_TYPENAME = &H400&

Private Type SHFILEINFO
hIcon As Long
iIcon As Long
dwAttributes As Long
szDisplayName As String * MAX_PATH
szTypeName As String * 80
End Type

Public Function GetFileInfoDescr(ByVal sDatei As _
String) As String

Dim SHInfo As SHFILEINFO
Dim lPos As Long

SHGetFileInfo sDatei, 0, SHInfo, Len(SHInfo), _
SHGFI_TYPENAME

lPos = InStr(SHInfo.szTypeName, Chr$(0))
If lPos > 0 Then
GetFileInfoDescr = Left(SHInfo.szTypeName, lPos - 1)
End If
End Function

Eine anderer Ansatz ist über das „Shell“ Statment den Befehl „assoc“ bzw. „ftype“ auszuführen. Diese Befehle werden von XP und Win2003 erkannt. Sehr wahrscheinlich von der ganzen MS NT-Linie (Ver 4 --> Vista).

Last but not least: VBScript (WSH) kann in die Registry schreiben. VB muss dafür API Calls verwenden.

Grüsse
JTKirk

* * * * * * * * * * * * * * * * * * * * * * * * * * * *
Was weiss ich eigentlich?
Michel de Montaigne (1533 - 1592)
* * * * * * * * * * * * * * * * * * * * * * * * * * * *

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]