Seite 1 von 1

getfileversion per "Scripting.FileSystemObject"

Verfasst: 27.05.2005 19:43
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

Verfasst: 27.05.2005 23:34
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

Verfasst: 28.05.2005 09:28
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.) ...

Verfasst: 28.05.2005 21:35
von Lupo
jo danke, jetzt is ok.

voll interessant das mit dem unicode. :allright:

Vielen Dank

LUPO