Aktuelle Zeit: 25.08.2019 17:45

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 413 Beiträge ]  Gehe zu Seite Vorherige  1 ... 35, 36, 37, 38, 39, 40, 41, 42  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: WinAPI Library (Snippets) (1.052)
BeitragVerfasst: 04.08.2015 11:13 
Offline
Admin
Benutzeravatar

Registriert: 29.08.2004 11:27
Hallo Ray,

prima Arbeit. :allright:

Kleine Anmerkung habe ich noch. Nachdem ich unter Windows10 in PB den alten
Codebaustein entfernt hatte um die neue hinzuzufügen, wurde das nicht eingefügt.
Purebasic ist dabei aktiv gewesen. Erst nach beenden von Purebasic und Codebausteine
hinzufügen, wurde deine WinAPI-Library übernommen. Vielleicht noch eine Funktion hinzufügen,
die das PB vorher beendet und nach dem Hinzufügen wieder startet. Der Path ist ja bekannt.

Wie gesagt, ich kann das jetzt nur noch unter Windows 10 ausprobieren, da ich alle Rechner darauf umgestellt hatte.

Gruß,
Falko

_________________
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WinAPI Library (Snippets) (1.052)
BeitragVerfasst: 05.08.2015 09:49 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Deutschland::Berlin()
Hi Falko,

die Abfrage, ob PB noch läuft, habe ich auf jeden Fall schon mal gebaut. Wahrscheinlich nur beim Updater. Ich werde diese Abfrage beim Einfügen der Codebausteine ebenfalls hinzufügen, damit der von dir gefundene Fehler nicht mehr auftritt. Danke fürs Melden :allright:

_________________
BildBildBildBild(Update: 17.08.2019 (+196 Dateien, +1392 MB)) BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WinAPI Library (Snippets) (1.052)
BeitragVerfasst: 08.08.2015 23:01 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Deutschland::Berlin()
WinAPI Library 1.4.1 wurde veröffentlicht (3 neue Sprachen)

Hallo ihr lieben,

es gibt einige Nutzer, die wollen gerne eine Multilanguage-Version haben. Außerdem fand ich vor einigen Monaten heraus, dass meine WinAPI Library im französischen Forum bekannt geworden ist und dass es Leute gibt, die die Codes aus meiner WinAPI Libraray mit Google übersetzt haben, damit diese Codes in dieser Sprache ebenfalls verfügbar sind.
Das finde ich echt toll, aber es ist für die fleißigen User zu aufwändig, die Codes nach jedem Update meiner Anwendung übersetzen zu müssen.
Damit sie das nicht jedes Mal machen müssen, habe ich jetzt selber eine Automatisierungsanwendung zum Übersetzen geschrieben und werde sie bei jedem Update ausführen.
Nicht nur französisch wird unterstützt, sondern auch andere Sprachen.

Meine WinAPI Library (inkl. Codes) gibt es ab jetzt in folgenden Sprachen:
  • Deutsch (das ist klar^^)
  • Englisch
  • Spanisch
  • Französisch

Die Sprache könnt ihr am Anfang beim ersten Start dieser Version oder später im Menü unter "Sprache" ändern.
Alle Texte (Kommentare und Strings in den PB-Dateien wurden nicht berücksichtigt) in englischer, französischer und spanischer Sprache wurden mit "Google Translate" maschinell übersetzt und es kann möglich sein, dass einige Texte grammatikalisch nicht korrekt sind, aber ich hoffe, man kann die einzelnen Code-Bezeichnungen trotzdem verstehen.
Wenn ihr zusätzlich eine weitere Sprache haben wollt, sagt Bescheid und ich füg sie hinzu.

Jetzt kann ich meine WinAPI Library auch im englischen und französischen Forum verbreiten und zukünftige Updates ankündigen.

Online: http://www.rsbasic.de/winapi-library
Offline: http://www.rsbasic.de/downloads/winapi_library.zip (aktuelle Version mit allen Codes)

PS: Ein Offline-Update von einer älteren Version auf diese neue Version ist leider nicht möglich. Bitte ladet die vollständige ZIP-Datei herunter.

@Falko
Erledigt

_________________
BildBildBildBild(Update: 17.08.2019 (+196 Dateien, +1392 MB)) BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WinAPI Library (Snippets) (1.052)
BeitragVerfasst: 09.08.2015 01:56 
Offline
Benutzeravatar

Registriert: 01.04.2007 20:18
Alle Achtung... :allright:

Ist dann ja nicht mehr weit bis zur Weltherrschaft :mrgreen:

_________________
PureBasic 5.70 LTS (Windows x86/x64) | Windows10 Pro x64 | Z370 Extreme4 | i7 8770k | 32GB RAM | iChill GeForce GTX 980 X4 Ultra | HAF XF Evo​​


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WinAPI Library (Snippets) (1.052)
BeitragVerfasst: 09.08.2015 21:45 
Offline
Benutzeravatar

Registriert: 18.03.2009 14:47
Wohnort: Essen
Hi Ray,
auch an dieser Stelle nochmal ein "w0w das ist toll" und vielen Dank für dieses hilfreiche Tool Bild

Lieber Gruß ~ Vera

_________________
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WinAPI Library (Snippets) (1.052)
BeitragVerfasst: 10.08.2015 18:21 
Offline
Admin
Benutzeravatar

Registriert: 29.08.2004 11:27
@Ray,
danke, und super Arbeit. :allright: :allright: :allright:

_________________
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WinAPI Library (Snippets) (1.052)
BeitragVerfasst: 02.01.2016 15:48 
Offline
Benutzeravatar

Registriert: 11.08.2005 19:08
Ermitteln, ob EXE-Datei eine 16 Bit-, 32 Bit- oder 64 Bit-Version ist
Der zweite Parameter von GetBinaryType_() muss ein Pointer auf eine Long-Variable sein.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa364819%28v=vs.85%29.aspx
https://msdn.microsoft.com/de-de/library/windows/desktop/aa383751%28v=vs.85%29.aspx#LPDWORD

_________________
Bild
Warum OpenSource eine Lizenz haben sollte
PureBasic-CodeArchiv-Rebirth: Git-Repository / Download -- Jede Hilfe ist willkommen!
Manjaro Xfce x64 (Hauptsystem) :: WindowsXP/Xubuntu x86 (VirtualBox) :: PureBasic (Linux: x86/x64, Windows: x86) :: jeweils neueste Version


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WinAPI Library (Snippets) (1.052)
BeitragVerfasst: 02.01.2016 15:57 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Deutschland::Berlin()
Ist das eigentlich so schlimm, wenn das eine Integer-Variable ist?

_________________
BildBildBildBild(Update: 17.08.2019 (+196 Dateien, +1392 MB)) BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WinAPI Library (Snippets) (1.052)
BeitragVerfasst: 02.01.2016 16:38 
Offline
Benutzeravatar

Registriert: 11.08.2005 19:08
Code:
Define.l a = 129
Define.q b

CopyMemory(@a, @b, SizeOf(Long))

;ShowMemoryViewer(@b, SizeOf(Quad)) 000000000064788C
b = 129
;ShowMemoryViewer(@b, SizeOf(Quad)) 000000000064788C
Ok, hast recht, macht kein Unterschied.

_________________
Bild
Warum OpenSource eine Lizenz haben sollte
PureBasic-CodeArchiv-Rebirth: Git-Repository / Download -- Jede Hilfe ist willkommen!
Manjaro Xfce x64 (Hauptsystem) :: WindowsXP/Xubuntu x86 (VirtualBox) :: PureBasic (Linux: x86/x64, Windows: x86) :: jeweils neueste Version


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WinAPI Library (Snippets) (1.052)
BeitragVerfasst: 02.01.2016 17:01 
Offline
Benutzeravatar

Registriert: 11.08.2005 19:08
Code:
EnableExplicit

DeclareModule FileInfo
  EnableExplicit
 
  Declare.s GetFixedProductVersion(File.s)
  Declare.s GetFixedFileVersion(File.s)
  Declare.s GetFixedFileType(File.s)
  Declare.s GetProductVersion(File.s)
  Declare.s GetFileVersion(File.s)
  Declare.s GetProductName(File.s)
  Declare.s GetFileDescription(File.s)
  Declare.s GetFileComments(File.s)
  Declare.s GetFileCompanyName(File.s)
  Declare.s GetFileInternalName(File.s)
  Declare.s GetFileLegalCopyright(File.s)
  Declare.s GetFileLegalTrademarks(File.s)
  Declare.s GetFileOriginalFilename(File.s)
EndDeclareModule

Module FileInfo
  Procedure.s GetFixedProductVersion(File.s)
    Protected.i NeededBufferSize, PointerLen
    Protected   *Buffer, *Pointer.VS_FIXEDFILEINFO
    Protected.s RetVal
 
    NeededBufferSize = GetFileVersionInfoSize_(@File,0)
    If NeededBufferSize < 1: ProcedureReturn "": EndIf
 
    *Buffer = AllocateMemory(NeededBufferSize)
   
    GetFileVersionInfo_(@File,0,NeededBufferSize,*Buffer)
    VerQueryValue_(*Buffer,"\",@*Pointer,@PointerLen)
    If *Pointer
      RetVal = Str(*Pointer\dwProductVersionMS >> 16 & $FFFF) + "." +
               Str(*Pointer\dwProductVersionMS & $FFFF) + "." +
               Str(*Pointer\dwProductVersionLS >> 16 & $FFFF) + "." +
               Str(*Pointer\dwProductVersionLS & $FFFF)
    EndIf
    FreeMemory(*Buffer)
   
    ProcedureReturn RetVal
  EndProcedure
 
  Procedure.s GetFixedFileVersion(File.s)
    Protected.i NeededBufferSize, PointerLen
    Protected   *Buffer, *Pointer.VS_FIXEDFILEINFO
    Protected.s RetVal
 
    NeededBufferSize = GetFileVersionInfoSize_(@File,0)
    If NeededBufferSize < 1: ProcedureReturn "": EndIf
 
    *Buffer = AllocateMemory(NeededBufferSize)
   
    GetFileVersionInfo_(@File,0,NeededBufferSize,*Buffer)
    VerQueryValue_(*Buffer,"\",@*Pointer,@PointerLen)
    If *Pointer
      RetVal = Str(*Pointer\dwFileVersionMS >> 16 & $FFFF) + "." +
               Str(*Pointer\dwFileVersionMS & $FFFF) + "." +
               Str(*Pointer\dwFileVersionLS >> 16 & $FFFF) + "." +
               Str(*Pointer\dwFileVersionLS & $FFFF)
    EndIf
    FreeMemory(*Buffer)
   
    ProcedureReturn RetVal
  EndProcedure
 
  Procedure.s GetFixedFileType(File.s)
    Protected.i NeededBufferSize, PointerLen
    Protected   *Buffer, *Pointer.VS_FIXEDFILEINFO
    Protected.s RetVal
 
    NeededBufferSize = GetFileVersionInfoSize_(@File,0)
    If NeededBufferSize < 1: ProcedureReturn "": EndIf
 
    *Buffer = AllocateMemory(NeededBufferSize)
   
    GetFileVersionInfo_(@File,0,NeededBufferSize,*Buffer)
    VerQueryValue_(*Buffer,"\",@*Pointer,@PointerLen)
    If *Pointer
      Select *Pointer\dwFileType
        Case #VFT_APP
          RetVal = "Application"
        Case #VFT_DLL
          RetVal = "DLL"
        Case #VFT_DRV
          Select *Pointer\dwFileSubtype
            Case #VFT2_DRV_COMM
              RetVal = "Communications Driver"
            Case #VFT2_DRV_DISPLAY
              RetVal = "Display Driver"
            Case #VFT2_DRV_INSTALLABLE
              RetVal = "Installable Driver"
            Case #VFT2_DRV_KEYBOARD
              RetVal = "Keyboard Driver"
            Case #VFT2_DRV_LANGUAGE
              RetVal = "Language Driver"
            Case #VFT2_DRV_MOUSE
              RetVal = "Mouse Driver"
            Case #VFT2_DRV_NETWORK
              RetVal = "Network Driver"
            Case #VFT2_DRV_PRINTER
              RetVal = "Printer Driver"
            Case #VFT2_DRV_SOUND
              RetVal = "Sound Driver"
            Case #VFT2_DRV_SYSTEM
              RetVal = "System Driver"
            ;Case #VFT2_DRV_VERSIONED_PRINTER
             ; RetVal = "Versioned Printer Driver"
            Case #VFT2_UNKNOWN
              RetVal = "Unkown by the system"
          EndSelect
        Case #VFT_FONT
          Select *Pointer\dwFileSubtype
            Case #VFT2_FONT_RASTER
              RetVal = "Raster Font"
            Case #VFT2_FONT_TRUETYPE
              RetVal = "TrueType Font"
            Case #VFT2_FONT_VECTOR
              RetVal = "Vector Font"
            Case #VFT2_UNKNOWN
              RetVal = "Unkown by the system"
          EndSelect
        Case #VFT_STATIC_LIB
          RetVal = "Static-link Library"
        Case #VFT_UNKNOWN
          RetVal = "Unkown by the system"
        Case #VFT_VXD
          RetVal = "Virtual Device"
      EndSelect
    EndIf
    FreeMemory(*Buffer)
   
    ProcedureReturn RetVal
  EndProcedure
 
  Procedure.s GetProductVersion(File.s)
    Protected.i NeededBufferSize, PointerLen
    Protected   *Buffer, *Pointer
    Protected.s TranslationCode, RetVal
 
    NeededBufferSize = GetFileVersionInfoSize_(@File,0)
    If NeededBufferSize < 1: ProcedureReturn "": EndIf
 
    *Buffer = AllocateMemory(NeededBufferSize)
   
    GetFileVersionInfo_(@File,0,NeededBufferSize,*Buffer)
    VerQueryValue_(*Buffer,"\\VarFileInfo\\Translation",@*Pointer,@PointerLen)
    If *Pointer
      TranslationCode = RSet(Hex(PeekW(*Pointer)),4,"0") + RSet(Hex(PeekW(*Pointer + 2)),4,"0")
      If VerQueryValue_(*Buffer,"\\StringFileInfo\\" + TranslationCode + "\\ProductVersion",@*Pointer,@PointerLen)
        RetVal = Trim(PeekS(*Pointer))
      Else
        ; Manche Programme haben einen falschen TranslationCode, zu dem es kein Informationen-Block gibt.
        ; Ich habe die Erfahrung gemacht, dass in diesem Fall immer ein Block mit diesem TranslationCode vorhanden ist:
        If VerQueryValue_(*Buffer,"\\StringFileInfo\\040904E4\\ProductVersion",@*Pointer,@PointerLen)
          RetVal = Trim(PeekS(*Pointer))
        EndIf
      EndIf
    EndIf
    FreeMemory(*Buffer)
 
    ProcedureReturn Trim(RetVal)
  EndProcedure
 
  Procedure.s GetFileVersion(File.s)
    Protected.i NeededBufferSize, PointerLen
    Protected   *Buffer, *Pointer
    Protected.s TranslationCode, RetVal
 
    NeededBufferSize = GetFileVersionInfoSize_(@File,0)
    If NeededBufferSize < 1: ProcedureReturn "": EndIf
 
    *Buffer = AllocateMemory(NeededBufferSize)
   
    GetFileVersionInfo_(@File,0,NeededBufferSize,*Buffer)
    VerQueryValue_(*Buffer,"\\VarFileInfo\\Translation",@*Pointer,@PointerLen)
    If *Pointer
      TranslationCode = RSet(Hex(PeekW(*Pointer)),4,"0") + RSet(Hex(PeekW(*Pointer + 2)),4,"0")
      If VerQueryValue_(*Buffer,"\\StringFileInfo\\" + TranslationCode + "\\FileVersion",@*Pointer,@PointerLen)
        RetVal = Trim(PeekS(*Pointer))
      Else
        ; Manche Programme haben einen falschen TranslationCode, zu dem es kein Informationen-Block gibt.
        ; Ich habe die Erfahrung gemacht, dass in diesem Fall immer ein Block mit diesem TranslationCode vorhanden ist:
        If VerQueryValue_(*Buffer,"\\StringFileInfo\\040904E4\\FileVersion",@*Pointer,@PointerLen)
          RetVal = Trim(PeekS(*Pointer))
        EndIf
      EndIf
    EndIf
    FreeMemory(*Buffer)
 
    ProcedureReturn Trim(RetVal)
  EndProcedure
 
  Procedure.s GetProductName(File.s)
    Protected.i NeededBufferSize, PointerLen
    Protected   *Buffer, *Pointer
    Protected.s TranslationCode, RetVal
 
    NeededBufferSize = GetFileVersionInfoSize_(@File,0)
    If NeededBufferSize < 1: ProcedureReturn "": EndIf
 
    *Buffer = AllocateMemory(NeededBufferSize)
   
    GetFileVersionInfo_(@File,0,NeededBufferSize,*Buffer)
    VerQueryValue_(*Buffer,"\\VarFileInfo\\Translation",@*Pointer,@PointerLen)
    If *Pointer
      TranslationCode = RSet(Hex(PeekW(*Pointer)),4,"0") + RSet(Hex(PeekW(*Pointer + 2)),4,"0")
      If VerQueryValue_(*Buffer,"\\StringFileInfo\\" + TranslationCode + "\\ProductName",@*Pointer,@PointerLen)
        RetVal = Trim(PeekS(*Pointer))
      Else
        ; Manche Programme haben einen falschen TranslationCode, zu dem es kein Informationen-Block gibt.
        ; Ich habe die Erfahrung gemacht, dass in diesem Fall immer ein Block mit diesem TranslationCode vorhanden ist:
        If VerQueryValue_(*Buffer,"\\StringFileInfo\\040904E4\\ProductName",@*Pointer,@PointerLen)
          RetVal = Trim(PeekS(*Pointer))
        EndIf
      EndIf
    EndIf
    FreeMemory(*Buffer)
 
    ProcedureReturn Trim(RetVal)
  EndProcedure
 
  Procedure.s GetFileDescription(File.s)
    Protected.i NeededBufferSize, PointerLen
    Protected   *Buffer, *Pointer
    Protected.s TranslationCode, RetVal
 
    NeededBufferSize = GetFileVersionInfoSize_(@File,0)
    If NeededBufferSize < 1: ProcedureReturn "": EndIf
 
    *Buffer = AllocateMemory(NeededBufferSize)
   
    GetFileVersionInfo_(@File,0,NeededBufferSize,*Buffer)
    VerQueryValue_(*Buffer,"\\VarFileInfo\\Translation",@*Pointer,@PointerLen)
    If *Pointer
      TranslationCode = RSet(Hex(PeekW(*Pointer)),4,"0") + RSet(Hex(PeekW(*Pointer + 2)),4,"0")
      If VerQueryValue_(*Buffer,"\\StringFileInfo\\" + TranslationCode + "\\FileDescription",@*Pointer,@PointerLen)
        RetVal = Trim(PeekS(*Pointer))
      Else
        ; Manche Programme haben einen falschen TranslationCode, zu dem es kein Informationen-Block gibt.
        ; Ich habe die Erfahrung gemacht, dass in diesem Fall immer ein Block mit diesem TranslationCode vorhanden ist:
        If VerQueryValue_(*Buffer,"\\StringFileInfo\\040904E4\\FileDescription",@*Pointer,@PointerLen)
          RetVal = Trim(PeekS(*Pointer))
        EndIf
      EndIf
    EndIf
    FreeMemory(*Buffer)
 
    ProcedureReturn Trim(RetVal)
  EndProcedure
 
  Procedure.s GetFileComments(File.s)
    Protected.i NeededBufferSize, PointerLen
    Protected   *Buffer, *Pointer
    Protected.s TranslationCode, RetVal
 
    NeededBufferSize = GetFileVersionInfoSize_(@File,0)
    If NeededBufferSize < 1: ProcedureReturn "": EndIf
 
    *Buffer = AllocateMemory(NeededBufferSize)
   
    GetFileVersionInfo_(@File,0,NeededBufferSize,*Buffer)
    VerQueryValue_(*Buffer,"\\VarFileInfo\\Translation",@*Pointer,@PointerLen)
    If *Pointer
      TranslationCode = RSet(Hex(PeekW(*Pointer)),4,"0") + RSet(Hex(PeekW(*Pointer + 2)),4,"0")
      If VerQueryValue_(*Buffer,"\\StringFileInfo\\" + TranslationCode + "\\Comments",@*Pointer,@PointerLen)
        RetVal = Trim(PeekS(*Pointer))
      Else
        ; Manche Programme haben einen falschen TranslationCode, zu dem es kein Informationen-Block gibt.
        ; Ich habe die Erfahrung gemacht, dass in diesem Fall immer ein Block mit diesem TranslationCode vorhanden ist:
        If VerQueryValue_(*Buffer,"\\StringFileInfo\\040904E4\\Comments",@*Pointer,@PointerLen)
          RetVal = Trim(PeekS(*Pointer))
        EndIf
      EndIf
    EndIf
    FreeMemory(*Buffer)
 
    ProcedureReturn Trim(RetVal)
  EndProcedure
 
  Procedure.s GetFileCompanyName(File.s)
    Protected.i NeededBufferSize, PointerLen
    Protected   *Buffer, *Pointer
    Protected.s TranslationCode, RetVal
 
    NeededBufferSize = GetFileVersionInfoSize_(@File,0)
    If NeededBufferSize < 1: ProcedureReturn "": EndIf
 
    *Buffer = AllocateMemory(NeededBufferSize)
   
    GetFileVersionInfo_(@File,0,NeededBufferSize,*Buffer)
    VerQueryValue_(*Buffer,"\\VarFileInfo\\Translation",@*Pointer,@PointerLen)
    If *Pointer
      TranslationCode = RSet(Hex(PeekW(*Pointer)),4,"0") + RSet(Hex(PeekW(*Pointer + 2)),4,"0")
      If VerQueryValue_(*Buffer,"\\StringFileInfo\\" + TranslationCode + "\\CompanyName",@*Pointer,@PointerLen)
        RetVal = Trim(PeekS(*Pointer))
      Else
        ; Manche Programme haben einen falschen TranslationCode, zu dem es kein Informationen-Block gibt.
        ; Ich habe die Erfahrung gemacht, dass in diesem Fall immer ein Block mit diesem TranslationCode vorhanden ist:
        If VerQueryValue_(*Buffer,"\\StringFileInfo\\040904E4\\CompanyName",@*Pointer,@PointerLen)
          RetVal = Trim(PeekS(*Pointer))
        EndIf
      EndIf
    EndIf
    FreeMemory(*Buffer)
 
    ProcedureReturn Trim(RetVal)
  EndProcedure
 
  Procedure.s GetFileInternalName(File.s)
    Protected.i NeededBufferSize, PointerLen
    Protected   *Buffer, *Pointer
    Protected.s TranslationCode, RetVal
 
    NeededBufferSize = GetFileVersionInfoSize_(@File,0)
    If NeededBufferSize < 1: ProcedureReturn "": EndIf
 
    *Buffer = AllocateMemory(NeededBufferSize)
   
    GetFileVersionInfo_(@File,0,NeededBufferSize,*Buffer)
    VerQueryValue_(*Buffer,"\\VarFileInfo\\Translation",@*Pointer,@PointerLen)
    If *Pointer
      TranslationCode = RSet(Hex(PeekW(*Pointer)),4,"0") + RSet(Hex(PeekW(*Pointer + 2)),4,"0")
      If VerQueryValue_(*Buffer,"\\StringFileInfo\\" + TranslationCode + "\\InternalName",@*Pointer,@PointerLen)
        RetVal = Trim(PeekS(*Pointer))
      Else
        ; Manche Programme haben einen falschen TranslationCode, zu dem es kein Informationen-Block gibt.
        ; Ich habe die Erfahrung gemacht, dass in diesem Fall immer ein Block mit diesem TranslationCode vorhanden ist:
        If VerQueryValue_(*Buffer,"\\StringFileInfo\\040904E4\\InternalName",@*Pointer,@PointerLen)
          RetVal = Trim(PeekS(*Pointer))
        EndIf
      EndIf
    EndIf
    FreeMemory(*Buffer)
 
    ProcedureReturn Trim(RetVal)
  EndProcedure
 
  Procedure.s GetFileLegalCopyright(File.s)
    Protected.i NeededBufferSize, PointerLen
    Protected   *Buffer, *Pointer
    Protected.s TranslationCode, RetVal
 
    NeededBufferSize = GetFileVersionInfoSize_(@File,0)
    If NeededBufferSize < 1: ProcedureReturn "": EndIf
 
    *Buffer = AllocateMemory(NeededBufferSize)
   
    GetFileVersionInfo_(@File,0,NeededBufferSize,*Buffer)
    VerQueryValue_(*Buffer,"\\VarFileInfo\\Translation",@*Pointer,@PointerLen)
    If *Pointer
      TranslationCode = RSet(Hex(PeekW(*Pointer)),4,"0") + RSet(Hex(PeekW(*Pointer + 2)),4,"0")
      If VerQueryValue_(*Buffer,"\\StringFileInfo\\" + TranslationCode + "\\LegalCopyright",@*Pointer,@PointerLen)
        RetVal = Trim(PeekS(*Pointer))
      Else
        ; Manche Programme haben einen falschen TranslationCode, zu dem es kein Informationen-Block gibt.
        ; Ich habe die Erfahrung gemacht, dass in diesem Fall immer ein Block mit diesem TranslationCode vorhanden ist:
        If VerQueryValue_(*Buffer,"\\StringFileInfo\\040904E4\\LegalCopyright",@*Pointer,@PointerLen)
          RetVal = Trim(PeekS(*Pointer))
        EndIf
      EndIf
    EndIf
    FreeMemory(*Buffer)
 
    ProcedureReturn Trim(RetVal)
  EndProcedure
 
  Procedure.s GetFileLegalTrademarks(File.s)
    Protected.i NeededBufferSize, PointerLen
    Protected   *Buffer, *Pointer
    Protected.s TranslationCode, RetVal
 
    NeededBufferSize = GetFileVersionInfoSize_(@File,0)
    If NeededBufferSize < 1: ProcedureReturn "": EndIf
 
    *Buffer = AllocateMemory(NeededBufferSize)
   
    GetFileVersionInfo_(@File,0,NeededBufferSize,*Buffer)
    VerQueryValue_(*Buffer,"\\VarFileInfo\\Translation",@*Pointer,@PointerLen)
    If *Pointer
      TranslationCode = RSet(Hex(PeekW(*Pointer)),4,"0") + RSet(Hex(PeekW(*Pointer + 2)),4,"0")
      If VerQueryValue_(*Buffer,"\\StringFileInfo\\" + TranslationCode + "\\LegalTrademarks",@*Pointer,@PointerLen)
        RetVal = Trim(PeekS(*Pointer))
      Else
        ; Manche Programme haben einen falschen TranslationCode, zu dem es kein Informationen-Block gibt.
        ; Ich habe die Erfahrung gemacht, dass in diesem Fall immer ein Block mit diesem TranslationCode vorhanden ist:
        If VerQueryValue_(*Buffer,"\\StringFileInfo\\040904E4\\LegalTrademarks",@*Pointer,@PointerLen)
          RetVal = Trim(PeekS(*Pointer))
        EndIf
      EndIf
    EndIf
    FreeMemory(*Buffer)
 
    ProcedureReturn Trim(RetVal)
  EndProcedure
 
  Procedure.s GetFileOriginalFilename(File.s)
    Protected.i NeededBufferSize, PointerLen
    Protected   *Buffer, *Pointer
    Protected.s TranslationCode, RetVal
 
    NeededBufferSize = GetFileVersionInfoSize_(@File,0)
    If NeededBufferSize < 1: ProcedureReturn "": EndIf
 
    *Buffer = AllocateMemory(NeededBufferSize)
   
    GetFileVersionInfo_(@File,0,NeededBufferSize,*Buffer)
    VerQueryValue_(*Buffer,"\\VarFileInfo\\Translation",@*Pointer,@PointerLen)
    If *Pointer
      TranslationCode = RSet(Hex(PeekW(*Pointer)),4,"0") + RSet(Hex(PeekW(*Pointer + 2)),4,"0")
      If VerQueryValue_(*Buffer,"\\StringFileInfo\\" + TranslationCode + "\\OriginalFilename",@*Pointer,@PointerLen)
        RetVal = Trim(PeekS(*Pointer))
      Else
        ; Manche Programme haben einen falschen TranslationCode, zu dem es kein Informationen-Block gibt.
        ; Ich habe die Erfahrung gemacht, dass in diesem Fall immer ein Block mit diesem TranslationCode vorhanden ist:
        If VerQueryValue_(*Buffer,"\\StringFileInfo\\040904E4\\OriginalFilename",@*Pointer,@PointerLen)
          RetVal = Trim(PeekS(*Pointer))
        EndIf
      EndIf
    EndIf
    FreeMemory(*Buffer)
 
    ProcedureReturn Trim(RetVal)
  EndProcedure
EndModule

Define File.s = "notepad.exe"

Debug "FileComments:         " + FileInfo::GetFileComments(File)
Debug "FileCompanyName:      " + FileInfo::GetFileCompanyName(File)
Debug "FileDescription:      " + FileInfo::GetFileDescription(File)
Debug "FileInternalName:     " + FileInfo::GetFileInternalName(File)
Debug "FileLegalCopyright:   " + FileInfo::GetFileLegalCopyright(File)
Debug "FileLegalTrademarks:  " + FileInfo::GetFileLegalTrademarks(File)
Debug "FileOriginalFilename: " + FileInfo::GetFileOriginalFilename(File)
Debug "FileVersion:          " + FileInfo::GetFileVersion(File)
Debug "FixedFileType:        " + FileInfo::GetFixedFileType(File)
Debug "FixedFileVersion:     " + FileInfo::GetFixedFileVersion(File)
Debug "FixedProductVersion:  " + FileInfo::GetFixedProductVersion(File)
Debug "ProductName:          " + FileInfo::GetProductName(File)
Debug "ProductVersion:       " + FileInfo::GetProductVersion(File)

_________________
Bild
Warum OpenSource eine Lizenz haben sollte
PureBasic-CodeArchiv-Rebirth: Git-Repository / Download -- Jede Hilfe ist willkommen!
Manjaro Xfce x64 (Hauptsystem) :: WindowsXP/Xubuntu x86 (VirtualBox) :: PureBasic (Linux: x86/x64, Windows: x86) :: jeweils neueste Version


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 413 Beiträge ]  Gehe zu Seite Vorherige  1 ... 35, 36, 37, 38, 39, 40, 41, 42  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye