AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Fenster anhand eines Teils des "Namens" finden?
Thema durchsuchen
Ansicht
Themen-Optionen

Fenster anhand eines Teils des "Namens" finden?

Ein Thema von Sharky · begonnen am 28. Sep 2003 · letzter Beitrag vom 28. Jul 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#1

Fenster anhand eines Teils des "Namens" finden?

  Alt 28. Sep 2003, 10:40
Hai Profis,

ich kann ja mit :

Delphi-Quellcode:
const
 IDS_WNDTITLE = 'Viewer (SHARKY)';
var
 hWnd: DWORD;
begin
 hWnd := FindWindow(nil, IDS_WNDTITLE);
end;
Ein Fenster (Programm) finden.

Jetzt habe ich das Problem das ich von dem Fenster nur weiss das der Titel mit Viewer beginnt.
Habe ich eine Chance das Fenster trotzdem zu finden um es dann mit
  SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, 0) beenden zu könnne?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Fenster anhand eines Teils des "Namens" finden

  Alt 28. Sep 2003, 10:46
Hi Sharky,
da müsstest du mal nach [dp]*EnumWindow*[/dp] oder so suchen. Das hatten wir schonmal.

Chris
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Fenster anhand eines Teils des "Namens" finden

  Alt 28. Sep 2003, 11:02
Zitat von Chakotay1308:
Hi Sharky,
da müsstest du mal nach [dp]*EnumWindow*[/dp] oder so suchen. Das hatten wir schonmal.

Chris
Hai Chris,

danke für den Tip.

Jetzt muss ich nur noch verstehen wie das funktioniert

Wenn ich das richtig verstehe muss ich EnumWinow eine EnumWindowsProc Function übergeben.

Mal sehen ob mir eine weitere Tips geben kann.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Fenster anhand eines Teils des "Namens" finden

  Alt 28. Sep 2003, 13:40
Moin Sharky,

das einfachste wäre wahrscheinlich, wenn Du Dir mal die entsprechenden Threads durchsiehst, und dann gezielt Deine Verständnisprobleme bezüglich des Ablaufes ansprichst.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Fenster anhand eines Teils des "Namens" finden

  Alt 29. Sep 2003, 10:05
Zitat von Christian Seehase:
Moin Sharky,

das einfachste wäre wahrscheinlich, wenn Du Dir mal die entsprechenden Threads durchsiehst, und dann gezielt Deine Verständnisprobleme bezüglich des Ablaufes ansprichst.
Hai Christian,

mit Hilfe von Luckies Demo zu EnumWindow habe ich das hier gebastest:

Delphi-Quellcode:
function EnumWindowsProc(const hWnd : Longword; Param: lParam): LongBool; stdcall;
var
  Buffer: array[0..1024] of Char;
begin
  Result := True;
  GetWindowText(hWnd, Buffer, sizeof(Buffer));
  if lstrlen(Buffer) = 0 then
   begin
    exit;
   end
  else
   begin
    Form1.Memo1.Lines.Add (buffer);
   end;
end;

  {****************************************************}

procedure TForm1.Button1Click(Sender: TObject);
var
 LPARRAM : DWord;
begin
 EnumWindows (@EnumWindowsProc,Integer(@LPARRAM));
end;
Jetzt habe ich alle Fenstertitel in einem Memo.

Ist das von der Logik richtig?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Fenster anhand eines Teils des "Namens" finden

  Alt 29. Sep 2003, 10:07
Zitat von Sharky:
Jetzt habe ich alle Fenstertitel in einem Memo.

Zitat:
Ist das von der Logik richtig?
Wenn es funktioniert....
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Fenster anhand eines Teils des "Namens" finden

  Alt 29. Sep 2003, 13:34
Moin Sharky,

wenn Du an die Callback Funktion (EnumWindowsProc) keinen Wert übergeben musst kannst Du auch das Integer(@LPARRAM) weglassen, und stattdessen z.B. eine 0 reinschreiben.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Fenster anhand eines Teils des "Namens" finden

  Alt 29. Sep 2003, 14:02
Zitat von Christian Seehase:
....kannst Du auch das Integer(@LPARRAM) weglassen, und stattdessen z.B. eine 0 reinschreiben.
Hai Christian,

super! Danke für den Hinweiss.

Hihi... mit der Zeit werde ich die API-Aufrufe auch noch verstehen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Sushibb

Registriert seit: 28. Jul 2004
13 Beiträge
 
Delphi 6 Personal
 
#9

Re: Fenster anhand eines Teils des "Namens" finden

  Alt 28. Jul 2004, 16:44
hm ich hab da ein ähnliches Problem und hab mir auch schon die EnumWindows-Lösung angesehen. Nur stirbt mein Delphi 6 PE an dieser stelle:

Code:
EnumWindows(@EnumWinProc, Application.Handle);
Der cursor bleibt hinter dem Komma von @EnumWinProc stehen und die Fehlermeldung lautet:

Zitat:
Variable required
Ich bin da nun am Rätseln, was der mir eigentlich sagen will... Hier nochmal der Komplette Code, damit ihr mir helfen könnt

Code:
procedure TForm1.Button5Click(Sender: TObject);
begin
  EnumWindows(@EnumWinProc, Application.Handle);
end;

function EnumWinProc(Wnd: hWnd): Boolean; StdCall;
 var
  WinCaption : Pchar;
  WinHandle : string;
 begin
   GetMem(WinCaption, 255);
   try
     GetWindowText(Wnd, WinCaption, 255);
     Result := True;
     if (Trim(WinCaption) <> '') then
     begin
       WinHandle := IntToHex(Wnd, 6);
       Form1.ListBox1.Items.add(WinHandle + ' : ' + WinCaption);
     end;
   finally
    FreeMem(WinCaption, 255);
   end;
 end;
Hab diese Lösung schon in leichten Variationen 100mal im Netz gefunden, allerdings kommt es immer zu gleichem Fehler
Vermutlich hab ich Tomaten auf den Augen...

THX, so far...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Fenster anhand eines Teils des "Namens" finden

  Alt 28. Jul 2004, 16:59
Kopier deine EnumWiNproc vor den ButtonClick ode rhast du sie irgendwo im Interface-teil mit forward deklariert?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:49 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