AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Öffnen eines Fensters überwachen, anschl. Aktionen ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

Öffnen eines Fensters überwachen, anschl. Aktionen ausführen

Ein Thema von waldforest · begonnen am 8. Okt 2008 · letzter Beitrag vom 10. Okt 2008
Antwort Antwort
Seite 1 von 2  1 2      
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#1

Öffnen eines Fensters überwachen, anschl. Aktionen ausführen

  Alt 8. Okt 2008, 21:01
Hallo,
ich möchte geren überwachen ob in einer fremden Anwendung ein bestimmtes Fenster mit einem bestimmten Namen geöffnet wird. Wenn dann soll eine bestimmte Taste (anhand der Caption) gesucht und angeklickt werden.

Die Überwachung über einen Timer, sowie das Vorhandensein der Taste habe ich hin bekommen,
nun zu meinem Problem.

1.) Wie bekomme ich es hin, dass der Button im geöffneten Fenster individuell über den Button Handel ausgewählt werdne kann ??

2.) Ich möchte nachdem ich die Aktion durchgeführt habe das entsprechende Fenster schließen. DestroyWindow schließt das Fenster leider nicht. Die Handels habe ich bereits überprüft.

Delphi-Quellcode:
procedure Tform1.ClickIt;
var
  hWnd : Cardinal;
  hBtn : Cardinal;
  taste : string;
  ret : boolean;
begin

  hWnd := FindWindow(nil, fenstername);
  if hWnd = 0 then
  begin
    Label4.Caption := 'Fenster nicht gefunden.';
    button2.Enabled:=true;
 // exit;
  end
  else
  begin
      timer1.Enabled:=false;
      Label4.Caption := 'Fenster gefunden.';
// SetForegroundWindow(hWnd);
  SetWindowPos(hWnd, HWND_noTopMost, 0, 0, 0, 0, SWP_SHOWWINDOW or SWP_NOMOVE or SWP_NOSIZE);
   hBtn := FindWindowEx(hWnd, 0, nil, drueck_taste );

///// Buttonauswahl funktioniert nicht
   If hBtn <> 0 then
   begin
     PostMessage(hWnd , WM_KEYDOWN, hBtn , 0);
     PostMessage(hWnd , WM_KEYDOWN, VK_RETURN , 0);
   end;
   ////// FENSTER WIRD mit DestroyWindow(hWnd) NICHT GESCHLOSSEN !"!!! WARUM NICHT ?????
   if ((hWnd <> 0) and (not DestroyWindow(hWnd))) then begin
    MessageBox(0, 'Unable to destroy window!', 'Error', MB_OK or MB_ICONERROR);
// hWnd := 0;
   end;
   timer1.Enabled:=true;

 end;

end;
Was mach ich falsch ??, Habt ihr eine Tipp ???

mfg
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü

  Alt 9. Okt 2008, 08:20
Zu 2. hilft ein Blick in die Win32-Hilfe.
Zitat:
A thread cannot use DestroyWindow to destroy a window created by a different thread.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü

  Alt 9. Okt 2008, 09:05
1.EnumChildWindows könnte Dir weiterhelfen.
2.Du kannst ein Fenster i.a. schließen, wenn du ihm die Message 'WM_CLOSE' schickst.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü

  Alt 9. Okt 2008, 09:12
Und wenn Du das Handle des Buttons dann hast, kannst Du ihm ein BM_CLICK schicken, das müsste eigentlich funktionieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#5

Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü

  Alt 9. Okt 2008, 17:09
Also, mit

PostMessage(hWnd , WM_CLOSE , 0 , 0)

kann ich das Fenster schließen, danke funktioniert.

PostMessage(hBtn,BM_ClICK,0,0); (hBtn ist das Button Handle !!!)

BM_Klick geht nun auch, ich hatte den falschen handel eingetragen.

Vielen Dank läuft nun wie ich es möchte.


mfg
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#6

Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü

  Alt 10. Okt 2008, 14:52
Jallo,
brauch nioch einmal Unterstützung,

Gibt es auch eine Möglichkeit einen Text im Fenster zu finden.

z.B.
Das zu überwachende Fenster enthält einen Text z.B. "Aufruf 1", ich möchte nun aus meiner Anwendung im fremden Fenster überprüfen ob dieser Text vorhanden ist.

FindWindowEx(wndChild, 0, PChar('Aufruf 1'), nil);

finde ich nichts,

ich denke hier ist mal wieder ei n Parameter falsch, kann aber nicht erkennen welcher :
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#7

Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü

  Alt 10. Okt 2008, 14:56
Was für ein Control enthält denn den zu suchenden Text? Wenn es sich um ein Label handelt, hast Du schlechte Karten.

[edit] Und dreh die letzten beiden Parameter mal um. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#8

Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü

  Alt 10. Okt 2008, 14:58
Hallo, im 3. Parameter musst du den Klassennamen (oder nil), im 4. Parameter den Fenstertitel (oder nil) übergeben.
Thomas
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#9

Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü

  Alt 10. Okt 2008, 15:18
Hallo,
ist ein Label, mit TEdit habe ich es einmal versucht, da funktionierts problemlos !!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#10

Re: Öffnen eines Fensters überwachen, anschl. Aktionen ausfü

  Alt 10. Okt 2008, 15:19
Labels haben kein Fensterhandle, deshalb findest Du es nicht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 21:56 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