AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fenster Handle bekommen.

Ein Thema von kingflo · begonnen am 31. Mai 2005 · letzter Beitrag vom 31. Mai 2005
Antwort Antwort
kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#1

Fenster Handle bekommen.

  Alt 31. Mai 2005, 21:03
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
Florian Gilde
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Fenster Handle bekommen.

  Alt 31. Mai 2005, 21:12
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#3

Re: Fenster Handle bekommen.

  Alt 31. Mai 2005, 21:17
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.
Florian Gilde
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Fenster Handle bekommen.

  Alt 31. Mai 2005, 21:57
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).
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#5

Re: Fenster Handle bekommen.

  Alt 31. Mai 2005, 22:09
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:
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;
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...
Florian Gilde
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Fenster Handle bekommen.

  Alt 31. Mai 2005, 22:38
Starte die Anwendung mit ShellexecuteExShellexecuteEx, da hast du eine ProzessID. Dann gehst du alle Fenster durch und guckst mit MSDN-Library durchsuchenGetWindowThreadProcessId ob das Fenster zum Prozess gehört. Wenn du mehrere Fenster findest, dann musst du selbst sehen, was du dann machst.

Alternativ kannst du auch mit MSDN-Library durchsuchenFindeWindow das Fensterhandle holen, musst dann aber den genauen Fenstertext kennen. Oder du nimmst MSDN-Library durchsuchenEnumWindows, holst dir den kompletten Titel und vergleichst in mit dem, was du kennst Delphi-Referenz durchsuchenpos.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#7

Re: Fenster Handle bekommen.

  Alt 31. Mai 2005, 22:58
Zitat von Luckie:
Starte die Anwendung mit ShellexecuteExShellexecuteEx, da hast du eine ProzessID. Dann gehst du alle Fenster durch und guckst mit MSDN-Library durchsuchenGetWindowThreadProcessId ob das Fenster zum Prozess gehört. Wenn du mehrere Fenster findest, dann musst du selbst sehen, was du dann machst.

Das hört sich doch schon gut an hast du da zufällig ein Codebeispiel?
Florian Gilde
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Fenster Handle bekommen.

  Alt 31. Mai 2005, 23:02
Klick auf den Link, dann solltest du ein Codeschnippsel in der Code-Lib finden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz