![]() |
Fenster Handle bekommen.
Ich habe mal eine Frage und hoffe jemand kann mir helfen.
Also ich habe in einer ListBox koplette Pfade von Anwendungen, und möchte jetzt, wenn z.B die Anwendung an zweiter stelle lauft das Fenster bzw die Anwendung maximiert nach ganz forne setzten. Also in der art so: application:= 'C:\test.exe' If application run then begin application.bringToFront; application.windowstyle:=wsMaximized; end; das kann man doch bestimmt irgendiwe machen oder??? Denn ich habe nur beispiele gefunden, in denen gezeigt wird wie man eine Anwendung in den Vordergrund bringt wenn man den Fensternamen weiß. Aber den Fensternamen weiß ich nicht aber dafür den exe namen. Ich hoffe mir kann jemand helfen mfg flo |
Re: Fenster Handle bekommen.
das ganze ist nur beding möglich. Eine Anwendung kann mehre Fenster haben und dementsprechend müsstest du dich für eines der Fenster der Anwendung entscheiden. Zum Beispiel die Anwendung "Delphi32" hat mehre Fenster. Wonach sollte jetzt entschieden werden ob der Objectinspektor in den Fordergrund kommt, das Codefenster, der Formdesigner etc...?
im Gegensatz dazu kann es auch Anwendungen geben die gar kein Fenster haben. |
Re: Fenster Handle bekommen.
das dürfte nicht so schlimm werden, denn die Anwendungen in der ListBox haben nur ein Fenster, und wenn nicht dann sollte am bessten das Hauptfenster angezeigt werden oder alle.
|
Re: Fenster Handle bekommen.
bei einer Anwendung gibt es kein Hauptfenster, alle Fenster sind gleichberechtigt...
Der Lösungsweg sollte über EnumWindows gehen und dann musst du von jedem Fenster(handle) den Exenamen ermitteln. (mal im Forum suchen). |
Re: Fenster Handle bekommen.
Kann man das nicht einfacher machen, denn die anwendungen in der ListBox werden vorher sowieso per shellExecute gestartet. Kann man es dann nicht irgendwie machen, das man ein Handle oder eine variable mitgibt, und diese dann wieder benutzen kann.
denn so starte ich die anwendungen bis jetzt:
Code:
und danach soll nämlich dann ein Timer laufen, der die Anwendungen der reihe nach z.B nach 5 sekunden in den vordergrund holt also erst anwendung 1 dann anwendung 2 usw...
memo1.Clear;memo1.Lines.Clear;
anwbox.ItemIndex:=0; while anwbox.ItemIndex< anwbox.Items.Count do begin memo1.Lines.Add(anwbox.Items.strings[anwbox.itemIndex]+' wird gestartet...'); if FileExists(anwbox.Items.strings[anwbox.itemIndex]) then // wenn gefunden ShellExecute(Handle,'open',PChar(anwbox.Items.strings[anwbox.itemIndex]),nil,nil,SW_HIDE) ; memo1.Lines.Add(anwbox.Items.strings[anwbox.itemIndex]+' wurde geladen!'); anwbox.ItemIndex:=anwbox.ItemIndex+1; end; |
Re: Fenster Handle bekommen.
Starte die Anwendung mit
![]() ![]() Alternativ kannst du auch mit ![]() ![]() ![]() |
Re: Fenster Handle bekommen.
Zitat:
|
Re: Fenster Handle bekommen.
Klick auf den Link, dann solltest du ein Codeschnippsel in der Code-Lib finden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 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