![]() |
Re: Programmpfad anderer Programme ermitteln
Code:
Benachrichtigung über Debugger-Exception
Im Projekt Project2.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 0045F188 in Modul 'Project2.exe. Lesen von Adresse 0000024' aufgetreten. |
Re: Programmpfad anderer Programme ermitteln
Nochmal den ganzen Code bitte *seufz*
|
Re: Programmpfad anderer Programme ermitteln
Delphi-Quellcode:
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Registry, ComCtrls; type TForm2 = class(TForm) ListView1: TListView; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.FormCreate(Sender: TObject); const UNINST_PATH = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'; var Reg: TRegistry; SubKeys: TStringList; ListItem: TlistItem; i: integer; sDisplayName, sUninstallString: string; begin ListView1.ViewStyle := vsReport; ListView1.Columns.add; ListView1.Columns.add; ListView1.Columns[0].caption := 'DisplayName'; ListView1.Columns[1].caption := 'UninstallString'; ListView1.Columns[0].Width := 300; ListView1.Columns[1].Width := 300; Reg := TRegistry.Create; try try Listview1.Items.BeginUpdate; Listview1.Items.Clear; Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKeyReadOnly(UNINST_PATH) then begin SubKeys := TStringList.Create; try Reg.GetKeyNames(SubKeys); Reg.CloseKey; for i := 0 to subKeys.Count - 1 do if Reg.OpenKeyReadOnly(Format('%s\%s', [UNINST_PATH, SubKeys[i]])) then try sDisplayName := Reg.ReadString('DisplayName'); sUninstallString := Reg.ReadString('UninstallString'); if sDisplayName <> '' then begin Listview1.Items.Add; ListItem.Caption := sDisplayName; ListItem.subitems.Add(sUninstallString); end; finally Reg.CloseKey; end; finally SubKeys.Free; end; end; finally ListView1.AlphaSort; Listview1.Items.EndUpdate; end; finally Reg.CloseKey; Reg.Free; end; end; end. |
Re: Programmpfad anderer Programme ermitteln
Jag das Programm mal durch den Debugger.
|
Re: Programmpfad anderer Programme ermitteln
Zitat:
|
Re: Programmpfad anderer Programme ermitteln
Was willst du uns mit dem Selbstzitat sagen? Step doch mal durch und sag uns dann nach welcher Zeile der Fehler auftritt.
|
Re: Programmpfad anderer Programme ermitteln
Setzte eine Breakpoint und führe das Programm Schritt-für-Schritt aus, dann siehst du in welcher Zeile der Fehler auftritt
|
Re: Programmpfad anderer Programme ermitteln
Delphi-Quellcode:
Hier muss der Fehler liegen...
Listview1.Items.Add;
ListItem.Caption := sDisplayName; ListItem.subitems.Add(sUninstallString); |
Re: Programmpfad anderer Programme ermitteln
Delphi-Quellcode:
ListItem := Listview1.Items.Add;
|
Re: Programmpfad anderer Programme ermitteln
Danke, hat geklappt!
So, und wo muss ich nun InstallLocation und, um beim Beispiel zu bleiben, "Mozilla Firefox" eingeben? Hätte gedacht, hier
Delphi-Quellcode:
, aber dann findet er nichts. :?:
sDisplayName := Reg.ReadString('DisplayName');
sUninstallString := Reg.ReadString('UninstallString'); |
Re: Programmpfad anderer Programme ermitteln
Hab's schon:
Delphi-Quellcode:
Danke an alle für die Hilfe!!!
try
sDisplayName := Reg.ReadString('Comments'); sUninstallString := Reg.ReadString('InstallLocation'); if sDisplayName <> '' then begin if sDisplayName = 'Mozilla Firefox' then begin ListItem := Listview1.Items.Add; ListItem.Caption := sDisplayName; ListItem.subitems.Add(sUninstallString); ShowMessage (sUninstallString); end; end; finally Reg.CloseKey; end; |
Re: Programmpfad anderer Programme ermitteln
Delphi-Quellcode:
Hallo, bei dieser Überprüfung wird aber z.B 'Mozilla Firefox (....)' nicht erkannt.
if sDisplayName = 'Mozilla Firefox' then
Verwende Pos, um 'Mozilla Firefox' als Teilstring zu erkennen. |
Re: Programmpfad anderer Programme ermitteln
Doch, das erkennt er...
Aus einem ganz einfachen Grund - der Wert von "Comments" von Firefox ist schlicht und einfach "Mozilla Firefox". Egal welche Version. (Bei mir zumindest - hab Firefox 3.0 und Firefox 3.0.1 und bei beiden ist das so.) ;-) Gruß, Chrischi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 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 by Thomas Breitkreuz