![]() |
Code für Inno-Setup gesucht
Hallo!
Kann mir jemand die Funktion für das Auslesen der Seriennummer der Festplatte ('C') für den Code-Abschnitt im Inno-Setup geben? Gruß Rüd |
Re: Code für Inno-Setup gesucht
Ihm Zweifel kann man immer externe Programme Starten lasse und dessen Rückgabe auswerten
|
Re: Code für Inno-Setup gesucht
Im Bezug auf Inno habe ich die Frage evtl. nicht richtig verstanden, aber vielleicht suchst Du
![]() |
Re: Code für Inno-Setup gesucht
Zitat:
|
Re: Code für Inno-Setup gesucht
Ich hatte sowas befürchtet :stupid:
|
Re: Code für Inno-Setup gesucht
@Rued: Wenn du unsere beiden Antworten kombinierst, sollte es gehen
|
Re: Code für Inno-Setup gesucht
Zitat:
Die Funktion GetVolumeInformation nutze ich in meinen Programmen, erfordert aber die unit Windows, die offensichtlich nicht in ein Inno-Setup eingebunden werden kann. Ich hatte gehofft, es gibt eine analoge Funktion in Inno. Ein externes Programm müsste zumindest entpackt werden, um gestartet werden zu können, ich will das Setup aber abbrechen, wenn mir die ausgelesene Seriennummer "nicht gefällt". Gruß Rüd |
Re: Code für Inno-Setup gesucht
Man kann in InnoSetup temporär Programme entpacken, diese vom Setup ausführen lassen und deren Rückgabe auswerten
![]() |
Re: Code für Inno-Setup gesucht
Zitat:
Gruß Rüd |
Re: Code für Inno-Setup gesucht
Ja. Und wenn sie nach {tmp} entpackt werden, werden sie automatisch wieder gelöscht
|
Re: Code für Inno-Setup gesucht
Zitat:
Schönes Wochenende wünscht Rüd |
Re: Code für Inno-Setup gesucht
InnoSetup kann doch auch Funktionen aus DLLs importieren und GetVolumeInformation sollte sich doch problemlos so importieren lassen (aus der Kernel32.dll. Genaue Infos sind ja in der Windows.pas drin). Benötigte Konstanten kann man da auch schnell deklarieren - dann spart man sich temporäre Programme und diverse Umwege
|
Re: Code für Inno-Setup gesucht
Zitat:
Delphi-Quellcode:
In meinen Programmen habe ich mit
function GetVolumeInformation(lpRootPathName: PChar;
lpVolumeNameBuffer: PChar; nVolumeNameSize: DWORD; lpVolumeSerialNumber: PDWORD; var lpMaximumComponentLength, lpFileSystemFlags: DWORD; lpFileSystemNameBuffer: PChar; nFileSystemNameSize: DWORD): BOOL; stdcall; {$EXTERNALSYM GetVolumeInformation}
Delphi-Quellcode:
gearbeitet, da ich nur die ersten acht Ziffern benötige.
if GetvolumeInformation(pchar(drive + ':\'), nil, 0, id, dwx, dwy, nil, 0) then result := copy(IntToStr(ID^),1,8)
Wie komme ich über den Import an den String? Gruß Rüd [edit=mkinzler]Delphi-Tags eingefügt Mfg, mkinzler[/edit] |
Re: Code für Inno-Setup gesucht
|
Re: Code für Inno-Setup gesucht
Zitat:
Korrektur: habe jetzt noch einmal spezifisch gesucht, vielleicht geht was... Gruß Rüd |
Re: Code für Inno-Setup gesucht
Brauche doch noch Hilfe:
Im [Code] starte ich mit
Delphi-Quellcode:
Dann baue ich eine Funktion die auf GetVolumeInformation zugreift, wenn ich das richtig verstehe, also etwa
function GetVolumeInformation: BOOL;
external 'GetVolumeInformation@files:Kernel32.dll stdcall';
Delphi-Quellcode:
Inno kennt PDWord und new nicht und moniert die unpassende Anzahl von Parametern.
function FPSeriennummer(FP: string): string;
var ID: PDWord; dwx, dwy: DWord; begin new(ID); If GetVolumeInformation(pchar(FP+ ':\'), nil, 0, id, dwx, dwy, nil, 0) then result := copy(IntToStr(ID^),1,8); end; Kann mir jemand helfen? Gruß Rüd |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz