Beschrijving van een extensie

Status
Niet open voor verdere reacties.

famlam

Gebruiker
Lid geworden
15 okt 2008
Berichten
416
Hoe kan ik in vb.net 2008 de beschrijving van een extensie opvragen? ik weet dat het m.b.v. een API zal moeten, maar ik weet niet hoe ik deze kan opvragen. Op het internet vind ik alleen maar vb6 codes...

Wat ik bedoel is bijvoorbeeld:
-Ik voer ergens een extensie in (bijv. .exe of .doc)
-Ik krijg de bestandsbeschrijving van windows terug (bijv. Toepassing en Microsoft Word document)
 

Deze code helpt wel, maar
1.: als ik hem test met .jpg dan vindt hij geen beschrijving, terwijl dit toch heel zeker te weten "JPEG-afbeelding" is
2.: als ik hem test met een andere extensie waarbij hij wel een beschrijving vindt dan krijg ik de engelse beschrijving. (mijn pc is nederlands)

Is het dus ook mogelijk om
1: van alle bestandsextensies de (juiste) beschrijving te krijgen
2: van alle bestandsextensies de nederlandse beschrijving te krijgen?
 
Hoi

Jpg geeft bij mijn wel een resultaat: JPEG Image
Maar ze zijn inderdaad in engels.
Ik weet niet of hiervoor ook een nederlandse beschrijving te vinden is. Heb je die wel ooit ergens gezien?
 
Ik weet niet of hiervoor ook een nederlandse beschrijving te vinden is. Heb je die wel ooit ergens gezien?

Ja: als ik in verkenner een .exe-bestand zie dan zie ik daarachter staan: "Toepassing", en niet "Application"
 
Hoi,

Nee sorry,

Ik heb nog even gezocht, maar heb hiervoor nu geen oplossing.
In het register staan alleen maar engelse benamingen, ik weet niet waar de vertaling staat.

Misschien iemand anders
 
Nadat je de bestandinfo uit het register hebt gehaald moet je nogmaals in het register zoeken. Bijvoorbeeld de .jpg extensie:
hkey_classes_root\.jpg -> standaard = jpegfile

Zoeken in Nederlandse Windows XP bij
hkey_classes_root\jpegfile -> Jpeg-afbeelding

Zoeken in Engelstalige Windows XP bij
hkey_classes_root\jpegfile -> JPEG Image

En zo kom je dus bij je beschrijving...
 
Nadat je de bestandinfo uit het register hebt gehaald moet je nogmaals in het register zoeken. Bijvoorbeeld de .jpg extensie:
hkey_classes_root\.jpg -> standaard = jpegfile

Zoeken in Nederlandse Windows XP bij
hkey_classes_root\jpegfile -> Jpeg-afbeelding

Zoeken in Engelstalige Windows XP bij
hkey_classes_root\jpegfile -> JPEG Image

En zo kom je dus bij je beschrijving...

Op mijn Windows Vista:

  1. hkey_classes_root\.jpg -> standaard = PhotoShop.JPEGfile (Ik heb geen Photoshop meer???)
    hkey_classes_root\PhotoShop.JPEGfile -> standaard = [niets; lege sleutel]
    Wat staat er in verkenner: 'JPEG-afbeelding'.
    Dit is ook zo bij PNG
    Waarschijnlijk was het dus een 'toevalstreffer' dat ik juist die 'foute' gebruikte om de code te testen, maar er blijkt dus toch nog ergens een andere methode te zijn waardoor Verkenner het wel met beschrijving kan tonen.
  2. hkey_classes_root\.jpeg -> standaard = jpegfile
    hkey_classes_root\jpegfile -> standaard = JPEG Image
    Wat staat er nog meer?: FriendlyTypeName = "@%SystemRoot%\System32\shell32.dll,-30596"
    Zoeken in Shell32.dll: in het ingesloten textbestandje 'Shell32_str.txt' onder nummer 30596: 'JPEG-afbeelding'
    Bij alle andere Standaard-Windows extensies werkt dit (zoals .exe)
    Deze komen dus overeen
  3. Bij een niet-windows-extensie als .XLS (Excel werkblad)
    hkey_classes_root\.xls-> standaard = Excel.Sheet.8
    hkey_classes_root\Excel.Sheet.8 -> standaard = Microsoft Excel-werkblad
    Zo werkt het bij alle andere niet-windows-eigen extensies wel

De vraag wordt dus nu:
  1. Hoe laat ik hem wel de juiste extensie opzoeken die bij jpg of png hoort (oftewel: bij elke extensie die standaard = "" heeft
  2. Hoe laat ik hem het txt bestandje dat IN de dll zit uitlezen bij nummer X
  3. [De derde kan ik wel zelf]

Wel alvast bedankt voor je hulp bij de vorige stap


(De controlevolgorde zal dus moeten worden:
1: Als 'FriendlyTypeName' bestaat dan dll uitlezen (2e voorbeeld hierboven)
- Als 1 mislukt naar 2 anders klaar
2: Als standaard een waarde heeft (3e voorbeeld hierboven) dan die waarde gebruiken
- 2 kan volgens mij niet mislukken dus altijd klaar
3: Als er bij standaard geen waarde staat dan op de een of andere manier toch die extensiebeschrijving boven water halen (1e voorbeeld hierboven)
- Als 3 mislukt naar 4 anders klaar
4: Extensie.ToString + "-bestand" (laatste redmiddel)
- Deze kan volgens mij niet mislukken
5. Als het bestand geen extensie heeft dan "Bestand")


Edit: Ik heb eventjes een projectje aangemaakt waarin jullie kunnen zien wat ik op dit moment heb... (het is echt alleen m.b.t. dit topic, er zit niets anders bij). Al mijn 'probleemlocaties' worden aangegeven door vijf apostroffen ( ' ) ervoor en erna. Het bestand: Bekijk bijlage Beschrijving van een extensie.zip
 
Laatst bewerkt:
Het probleem met JPG en PNG bij mij is verholpen door eerst naar deze registersleutel te kijken:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\[.extensie]\UserChoice\

Deze vraag blijft dus nog staan:
Hoe laat ik hem het txt bestandje dat IN de dll zit uitlezen (met als kleine uitbreiding dat het niet altijd een dll is, maar ook wel eens een exe).
Iemand een idee?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan