| Autor |
Beitrag |
Experience1986
      
Beiträge: 192
Win XP Pro SP2
Delphi 7
|
Verfasst: Fr 30.01.04 21:51
Hi,
ich will von einer Exe das Symbol, sowie verschiedene Versionsinformationen, auf einem Formular ausgeben.
Was brauch ich dafür, ich weis nicht wo ich da in der OH ssuchen sollte, hie rim Forum hab ih auch noch nichts gefunden.
|
|
derDoc
      
Beiträge: 623
Win Vista Prof
D2007 Prof
|
Verfasst: Sa 31.01.04 09:12
Das Symbol einer Anwendung bekommst du mittels
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var Datei: String; FileInfo: SHFILEINFO; begin Datei := Edit1.Text; SHGetFileInfo(PChar(Datei), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON or SHGFI_LARGEICON or SHGFI_TYPENAME); Image1.Picture.Icon.Handle := FileInfo.hIcon; end; |
Du kannst auch im PSDK nach SHFILEINFO oder BY_HANDLE_FILE_INFORMATION suchen. Da siehst du was es noch so alles gibt.
_________________ MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
|
|
Experience1986 
      
Beiträge: 192
Win XP Pro SP2
Delphi 7
|
Verfasst: Sa 31.01.04 10:03
OK, danke, das lösst mein Problem großteils.
Leider will ich die Icons von Autostart einträgen ausgeben.
Die Pfade zu den EXE Dateien hab aber manchmal dahinter einen parameter, zum Beispiel:
c:\test.exe /minimize
oder
c:\test.exe -hide
Mit welchem Befehl kann man da nur den Dateipfad ausfiltern?
|
|
Experience1986 
      
Beiträge: 192
Win XP Pro SP2
Delphi 7
|
Verfasst: Sa 31.01.04 10:25
| Zitat: | | Du kannst auch im PSDK nach SHFILEINFO oder BY_HANDLE_FILE_INFORMATION suchen. Da siehst du was es noch so alles gibt. |
hmm, was bitte ist die PSDK?
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 31.01.04 11:07
Das PSDK ist die Dokumentation von Micosoft für die Win32 API gibt es online hier: msdn.microsoft.com/library/default.asp oder zum Download hier: www.microsoft.com/ms...atformsdk/sdkupdate/
|
|
Experience1986 
      
Beiträge: 192
Win XP Pro SP2
Delphi 7
|
Verfasst: Sa 31.01.04 11:51
Hab da snun einigermaßen kapiert, aber ich brauche die Versionsinformationen, und nicht dateigröße und letzte änderung...
Quelltext 1: 2:
| typedef struct _BY_HANDLE_FILE_INFORMATION { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD dwVolumeSerialNumber; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD nNumberOfLinks; DWORD nFileIndexHigh; DWORD nFileIndexLow; } BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION; |
Mit Versionsinformationen meine ich wenn man eigenschaften auf eine Exe macht und dann auf den Krtenreiter "Version" klickt, also unter anderem Version, Firma usw...
|
|
Sven
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Mo 16.01.06 16:06
Ich weiß das dieses Thema schon etwas älter ist.
Aber ich benötige auch die Informationen zu Major- und Minorversion, sowie Release und Build.
Ich habe schon überall gesucht, aber einfach nichts gefunden.
Hat jemand einen Tip dafür? Wenn möglich auch ein Tip, wie ich das ganze ebenfalls unter Linus (Kylix) hinbekomme.
Danke
Sven
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 16.01.06 16:14
Version und Beschreibung:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66:
| function GetVersionInfo(var VersionString, Description: string): DWORD; type PDWORDArr = ^DWORDArr; DWORDArr = array[0..0] of DWORD; var VerInfoSize : DWORD; VerInfo : Pointer; VerValueSize : DWORD; VerValue : PVSFixedFileInfo; LangInfo : PDWORDArr; LangID : DWORD; Desc : PChar; i : Integer; begin result := 0; VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), LangID); if VerInfoSize <> 0 then begin VerInfo := Pointer(GlobalAlloc(GPTR, VerInfoSize)); if Assigned(VerInfo) then try if GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo) then begin if VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize) then begin with VerValue^ do begin VersionString := Format('%d.%d.%d.%d', [dwFileVersionMS shr 16, dwFileVersionMS and $FFFF, dwFileVersionLS shr 16, dwFileVersionLS and $FFFF]); end; end else VersionString := ''; if VerQueryValue(VerInfo, '\VarFileInfo\Translation', Pointer(LangInfo), VerValueSize) then begin if (VerValueSize > 0) then begin VerValueSize := VerValueSize div sizeof(DWORD); for i := 0 to VerValueSize - 1 do begin LangID := (LoWord(LangInfo[i]) shl 16) or HiWord(LangInfo[i]); if VerQueryValue(VerInfo, @Format('\StringFileInfo\%8.8x\FileDescription', [LangID])[1], Pointer(Desc), VerValueSize) then Description := Desc; end; end; end else Description := ''; end; finally GlobalFree(THandle(VerInfo)); end else result := GetLastError; end else result := GetLastError; end; |
Unter Linux wirst du es komplett noch mal schreiben müssen speziell für Linux, da die Executables unter Linux ein anderes Format haben und natürlich gibt es die API Funktionen nicht.
|
|
Sven
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Mo 16.01.06 18:17
Ok, danke dir erst einmal. Für Linux wird sich noch was finden 
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
Sven
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Di 17.01.06 17:40
Ich habe jetzt das Problem, das mein Delphi diesen Typ PVSFixedFileInfo nicht findet.
Wo gibt es den?
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Di 17.01.06 18:41
Hallo,
steht eigentlich in der Unit windows. 
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|