getfileversion per "Scripting.FileSystemObject"

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
bingo
Beiträge: 118
Registriert: 16.09.2004 18:33
Wohnort: thüringen
Kontaktdaten:

getfileversion per "Scripting.FileSystemObject"

Beitrag von bingo »

mal eine DEMO (winXP) wie man das scripting DIRECT nutzen kann ... :lol:

Code: Alles auswählen

;getfileversion per "Scripting.FileSystemObject"

Interface IFileSystem Extends IDispatch
  get_Drives(a)
  BuildPath(a,b,c)
  GetDriveName(a,b)
  GetParentFolderName(a,b)
  GetFileName(a,b)
  GetBaseName(a,b)
  GetExtensionName(a,b)
  GetAbsolutePathName(a,b)
  GetTempName(a)
  DriveExists(a,b)
  FileExists(a,b)
  FolderExists(a,b)
  GetDrive(a,b)
  GetFile(a,b)
  GetFolder(a,b)
  GetSpecialFolder(a,b)
  DeleteFile(a,b)
  DeleteFolder(a,b)
  MoveFile(a,b)
  MoveFolder(a,b)
  CopyFile(a,b,c)
  CopyFolder(a,b,c)
  CreateFolder(a,b)
  CreateTextFile(a,b,c,d)
  OpenTextFile(a,b,c,d,e)
EndInterface

Interface IFileSystem3 Extends IFileSystem
  GetStandardStream(a,b,c)
  GetFileVersion(a,b)
EndInterface

Procedure.s Uni2Ansi(*Unicode.l) 
size.l = WideCharToMultiByte_(#CP_ACP, 0, *Unicode, -1, #Null, #Null, #Null, #Null) 
ansi.s=Space(size) 
WideCharToMultiByte_(#CP_ACP, 0, *Unicode, -1, @ansi, size, #Null, #Null) 
ProcedureReturn ansi  
EndProcedure
         

CoInitialize_(0)
If CoCreateInstance_(?CLSID_FileSystemObject,0,1,?IID_IFileSystem3,@Object.IFileSystem3) = 0

file.s = "c:\windows\system32\user32.dll"

SHStrDup_(@file,@file_in_unicode_pointer) ;in unicode umwandeln

Object\GetFileVersion(file_in_unicode_pointer,@version_in_unicode_pointer)
Debug uni2ansi(version_in_unicode_pointer)
Object\Release()

EndIf
CoUninitialize_()

DataSection 
CLSID_FileSystemObject: 
Data.l $0D43FE01
Data.w $F093,$11CF
Data.b $89,$40,$00,$A0,$C9,$05,$42,$28
IID_IFileSystem3: 
Data.l $2A0B9D10
Data.w $4B87,$11d3
Data.b $A9,$7A,$00,$10,$4B,$36,$5C,$9F
EndDataSection

End
1:0>1
Benutzeravatar
Lupo
Beiträge: 147
Registriert: 16.02.2005 15:15

Beitrag von Lupo »

ich häts gern ausprobiert aber bei mir kennt er
SHStrDup_(@file,@file_in_unicode_pointer) nicht :cry:

Ich hab 3.93 und XP-Home

Danke

LUPO
Benutzeravatar
bingo
Beiträge: 118
Registriert: 16.09.2004 18:33
Wohnort: thüringen
Kontaktdaten:

Beitrag von bingo »

dann ersetz die zeile ...

Code: Alles auswählen

OpenLibrary(1,"shlwapi.dll")
;SHStrDup_(@file,@file_in_unicode_pointer) ;in unicode umwandeln 
CallFunction (1, "SHStrDupA",@file,@file_in_unicode_pointer) 
CloseLibrary(1)
SHStrDup ist wohl der einfachste weg , einen ansi->uni zu konvertieren .

bei mir ist allerdings die funktion direkt verfügbar (home und prof.) ...
1:0>1
Benutzeravatar
Lupo
Beiträge: 147
Registriert: 16.02.2005 15:15

Beitrag von Lupo »

jo danke, jetzt is ok.

voll interessant das mit dem unicode. :allright:

Vielen Dank

LUPO
Antworten