![]() |
Brauche Hilfe zu wnd: HWND
Hallo,
ich bin auf der Suche nach einem vernünftigen Lösungsansatz für folgendes Problem: Also ich möchte eine fremde Anwendung mehrfach ausführen und überwachen. Beim starten übergebe ich mit Hilfe von ShellExecute für jede Instanz unterschiedliche Parameter die dann von der Anwendung parallel abgearbeitet werden sollen. Nun hab ich mir gedacht das ich die handle der einzelnen Fenster mit den jeweiligen Parametern in eine Stringliste lege und diese über einen Timer in regelmäßigen Abständen überprüfe. Dabei geht es eigentlich nur darum zu überprüft ob evtl. eine Instanz abgestürzt ist und mit den selben Parametern neu gestartet werden muss. Meine Idee mit der Stringliste die ich ständig parsen müßte finde ich aber weniger toll und so wirklich im klaren wie ich die verschiedenen Instanzen überwachen kann bin ich mir auch noch nicht. Gibts da draußen vielleicht Jemanden der mir da ein wenig unter die Arme greifen mag? Mfg |
Re: Brauche Hilfe zu wnd: HWND
Du willst die Werte nur im Zusammenhang speichern?
Wie wärs dann mit einem Array of Record?
Delphi-Quellcode:
type
Instanz = record wnd:HWND; FileName, Path, Param:String; end; Var Instanzen:Array of Instanz; |
Re: Brauche Hilfe zu wnd: HWND
oh danke, aber mit records hab ich noch nie wirklich viel gemacht,
wie füg ich denn da informationen hinzu und wie kann ich die nach informationen (handle) durchsuchen? |
Re: Brauche Hilfe zu wnd: HWND
Delphi-Quellcode:
Also praktisch "ganz normal"... Du weißt wie man mit dynamischen Arrays umgeht ?
Instanz[Index].wnd := Wert;
Wert := Instanz[Index].wnd; Instanz.Filename := 'Test'; Str := Instanz.Filename; //usw Gruß Neutral General |
Re: Brauche Hilfe zu wnd: HWND
leider nicht so wirklich und ich bin auch ein wenig übermüdet,
was momentan nicht grad förderlich ist, also ich hab es nun wie folgt eingebunden:
Delphi-Quellcode:
wie du siehst bin ich noch nicht sehr weit und einen fehler gibt es auch gleich =(
type
TInstanz = record wnd:HWND; Params:String; end; TMainForm = class(TForm) ... var MainForm: TMainForm; Instanzen: Array of TInstanz; implementation ... procedure TMainForm.Button1Click(Sender: TObject); var w: HWND; begin w := FindWindow(nil, 'Rechner'); if w <> 0 then begin with Instanzen do // hier meckert er - record, objekt oder klassentyp erforderlich begin wnd:= w; Params:= 'test'; end; end; end; |
Re: Brauche Hilfe zu wnd: HWND
Also Instanzen ist ein Array.. In diesem Fall ein dynamisches... Erstmal was generelles zu Arrays:
Delphi-Quellcode:
Das ist ein statisches Array. Damit hast du gleich 6 (nicht 5!) Integervariablen definiert.
var
IntArray: Array[0..5] of Integer; Das ist etwa das gleiche als würdest du
Delphi-Quellcode:
Nur eben in einer Zeile ;)
var
IntArray0: Integer; IntArray1: Integer; IntArray2: Integer; IntArray3: Integer; IntArray4: Integer; IntArray5: Integer; Auf ein statisches Array kannst du folgendermaßen zugreifen:
Delphi-Quellcode:
Nun jetzt hast du kein IntegerArray sondern ein Array vom Datentyp "Instanz" -> Ein Record.
// schreiben
IntArray[0] := 5; IntArray[3] := 10; // lesen Caption := IntToStr(IntArray[0]); Zugriff:
Delphi-Quellcode:
Verstanden? Nunja der Nachteil bei einem statischen Array ist das du nur eine vordefinierte Anzahl an Daten in ihm speichern kannst. Lösung: Dynamische Arrays:
var
Instanzen: Array[0..5] of Instanz; // schreiben Instanzen[0].wnd := FindFindow(...); Instanzen[3].wnd := FindFindow(...); // lesen Caption := IntToStr(Instanzen[3].wnd); Auf ein dynamisches Array kannst du nicht einfach so zugreifen! Du musst dem Array erst eine Größe zuordnen. Das geht mit ![]()
Delphi-Quellcode:
Wenn du SetLength vergisst, dann bekommst du eine Zugriffsverletzung...
var
Instanzen: Array of Instanz; SetLength(Instanzen,6); // Nun hast du ein Array[0..5] of Instanz SetLength(Instanzen,3); // Nun hast du ein Array[0..2] of Instanz // usw... Auf ein dynamisches Array greifst du genaus zu wie auf ein statisches, nur musst du vorher die Länge setzen! Ich hoffe ich konnte dir das ganze mal etwas verständlich erklären, sodass du jetzt alleine klar kommst... Ansonsten frag einfach nochmal nach ;) Gruß Neutral General |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:27 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