AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi [gelöst] Fremde Anwendung ändert Caption

[gelöst] Fremde Anwendung ändert Caption

Ein Thema von gmc616 · begonnen am 11. Okt 2005 · letzter Beitrag vom 11. Okt 2005
Antwort Antwort
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#1

[gelöst] Fremde Anwendung ändert Caption

  Alt 11. Okt 2005, 01:43
Ich schreibe z.Z. an einem Tool für Veridis (vlt. kennt das ja jemand).
Dort ist es möglich über die "Veridis-Start-Leiste" mein Programm zu starten, was vom Endanwender auch so gewünscht wird.
Als Feature hat sich dort Veridis was dolles einfallen lassen, und zwar, dass alle Anwendungen, die über diese Startleiste gestartet werden, eine "animierte Caption" verpasst bekommen, d.h. die Caption meines Programms wird ständig verändert.
Das wäre ja nicht weiter wild, allerings habe ich ein noch ein Tool, das mittels FindWindow(nil,AppTitle); versucht mein Programm zu finden, um diesen eine WM-Message zu senden.

Das Problem: Wenn sich die Caption meines Programms ständig ändert, kann ich es mit FindWindow(nil,AppTitle); nicht finden.

Da stellen sich mir zwei Fragen:
Wie kann ich mein Programm trotzdem finden und ihm Nachrichten schicken, auch wenn sich die Caption ändert?
Oder:
Wie kann ich verhindern, dass diese "Startleiste" die Caption meines Programms verändert.

Habt ihr Ideen?

Gruß
gmc
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Fremde Anwendung ändert Caption

  Alt 11. Okt 2005, 01:57
MSDN-Library durchsuchenFindWindow hat auch noch einen ersten Paramter.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
muRR
(Gast)

n/a Beiträge
 
#3

Re: Fremde Anwendung ändert Caption

  Alt 11. Okt 2005, 02:08
Oder mittels MSDN-Library durchsuchenGetWindowText die Caption im andern Programm überwachen, und mit MSDN-Library durchsuchenWM_SETTEXT reagieren (bin mir aber nicht sicher, ob dies der einzige Weg ist, die Caption zu ändern).
Setzt natürlich einen mittleren Aufwand vorraus, da du alle Programme, die du überwachen möchtest, modifizieren müsstest. Ist auch nur eine Idee.

MfG
  Mit Zitat antworten Zitat
Benutzerbild von LoRd-MuldeR
LoRd-MuldeR

Registriert seit: 9. Okt 2005
Ort: Somewhere over the Slaughterhouse
132 Beiträge
 
Delphi 7 Professional
 
#4

Re: Fremde Anwendung ändert Caption

  Alt 11. Okt 2005, 02:27
Warrum musst du denn dein Programm erst finden, um ihm eine Message zu schicken?
Du kannst doch mit RegisterWindowMessage eine "neue" Message definieren, auf die nur deine Anwendung reagieren wird. Mittles HWND_BROADCAST schickst du diese Message dann an *alle* Anwendungen. Is ja nich schlimm, denn nur die Ziel-Anwendung wird auf diese Message reagieren.

Jedenfalls ne Idee für nen anderen Ansatz...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.145 Beiträge
 
Delphi 12 Athens
 
#5

Re: Fremde Anwendung ändert Caption

  Alt 11. Okt 2005, 02:33
Luckie hat's ja schon gesagt

FindWindow(AppClassName, nil); @Mulder: wäre auch 'ne Möglichkeit ... bleibt nur noch die frage, ob er wirklich diese Nachricht an alle anderen Anwendungen versenden möchte und ob das wirklich nötig ist.

@muRR: Es scheint ja so, als wenn er den Titel garnicht ändern will, denn ansonsten könnte er es ja auch direkt in seinem Programm machen ... also derartige Umwege sind bestimmt nicht nötig (schließlich ist ja sowol das Zielprogramm, wo der Titel geändert wird, sowohl das sendende Programm von ihm)
Ihm ist es halt nur wichtig, daß die Daten versendet werden können, wozu er halt nur das Zielprogramm kennen muß, was sich ja dennoch mit FindWindow gut finden läßt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: Fremde Anwendung ändert Caption

  Alt 11. Okt 2005, 02:37
@Luckie:
Auch den ersten Parameter hab ich probiert, aber damit habe ich noch nicht mal mein Programm gefunden auch "mit ohne" "animierter Caption".

Allerdings habe ich grad festgestellt, dass, wenn die IDE läuft, meine Prozesse sowieso nicht gefunden werden.

Bin aber noch am tüffteln ...


P.S.:
@muRR:
Wenn ich dich richtig verstanden habe ... eine Zweite Applikation laufen zu lassen, um das Ändern der Caption zu überwachen finde ich "übertrieben".

Aber kann man WM_SetText für eine Form, in der eigendlichen Anwendung nicht auch abfangen?

Gibt es in D7-Prof eine Möglichkeit alle Nachrichten für/an meine Applikation anzuzeigen?
In einer Demo von D2005 hab ich sowas gesehen.
Hab ich mich verkuckt, oder hat es Borland mittlerweile auf die Reihe gekriegt?

P.P.S.:
@LoRd-MuldeR
RegisterWindowMessage -> ich glaube das wird die Lösung sein.
Das hatte ich mal testweise laut einem TUT hier im DP probiert.
Werde das morgen einbauen und bin sehr zuversichtlich, dass das funktioniert.
Super Tip!! Danke!
Sch... auf die Caption!

gmc
  Mit Zitat antworten Zitat
Benutzerbild von LoRd-MuldeR
LoRd-MuldeR

Registriert seit: 9. Okt 2005
Ort: Somewhere over the Slaughterhouse
132 Beiträge
 
Delphi 7 Professional
 
#7

Re: Fremde Anwendung ändert Caption

  Alt 11. Okt 2005, 02:41
Hab's mal kurz getestet. Geht 1a


Anwendung 1:
Delphi-Quellcode:
Unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  PostMessage(HWND_BROADCAST,RegisterWindowMessage('MuldeR.TestMessages.Terminate'),1,1);
end;

end.
Anwendung 2:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, AppEvnts;

type
  TForm1 = class(TForm)
    ApplicationEvents1: TApplicationEvents;
    procedure ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if Msg.message = RegisterWindowMessage('MuldeR.TestMessages.Terminate') then
    if (Msg.wParam = 1) and (Msg.lParam = 1) then
      Application.Terminate;
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.145 Beiträge
 
Delphi 12 Athens
 
#8

Re: Fremde Anwendung ändert Caption

  Alt 11. Okt 2005, 02:42
Zitat von gmc616:
@Luckie:
Auch den ersten Parameter hab ich probiert, aber damit habe ich noch nicht mal mein Programm gefunden auch "mit ohne" "animierter Caption".
Was hast'n dort angegeben?
Dort muß ja einfach nur der Klassenname des Forms angegeben werden ... also standardmäßig "TForm1", aber da dieser name ohl nicht so ganz einzigartig sein wird, solltest du sein Formular umbenennen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: Fremde Anwendung ändert Caption

  Alt 11. Okt 2005, 03:01
@himitsu: Natürlich hab ich dort meine Form-Klasse (TFrmTool) angegeben, hat aber nicht funktioniiert.

Hab noch mal auf die schnelle den Thread rausgesucht, welcher meinem Problem sehr nahe gekommen ist:
Programm nur 1x starten , der Beitrag von Christian Seehase.

Das ganze 'n bissl umgebastelt hat funktioniert und wird mit diesem Thema funktionieren.

Danke an Alle für die Tipps.
gmc
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:12 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