Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Messages von anderen Programm abfangen???? (https://www.delphipraxis.net/173748-messages-von-anderen-programm-abfangen.html)

tofse 14. Mär 2013 08:17

Messages von anderen Programm abfangen????
 
Hallo,

folgendes Problem: Ich habe ein Textbaustein Programm geschrieben, das permament geöffnet ist. Nun gibt es die blöde Besonderheit, dass eine Fehlermeldung von meinem Programm erscheint, wenn ein Formular aus einer anderen Anwendung geschlossen wird. Die Meldung lautet "Menüindex außerhalb des zulässigen Bereichs".
Die Meldung kann man eigentlich an allen möglichen PC's reproduzieren nur, und das bringt mich zum Verzweifeln, an meinem Entwicklungs-PC nicht! Ich kann also nichts debuggen.
Generell dürfte die Meldung beim Schließen einer anderen Anwendung (Formular) gar nicht auftreten, da es von meinem Programm eigentlich keine Interaktion gibt.
Ich bin mir auch ziemlich sicher, dass ich sauber programmiert habe, was die Index Werte angeht. Von daher ist mir das alles ein Rätsel.

So, nun zum Betreff zurück. Vielleicht schickt die andere Anwendung Messages an andere Programme?? Das wäre mir noch als Idee eingefallen. Deshalb die Frage, ob man das global irgendwie abfangen/prüfen kann???? Das andere Programm veranstaltet halt immer ein ziemliches Durcheinander, wenn es mehrere Formulare öffnet, die fest im Vordergrund sind und nicht.
Mein Formular hat auch fsStayOnTop, vielleicht gibt es da halt irgendeinen Zusammenhang?

Edit: bzw. kann ich mein Programm irgendwie so erzeugen, dass es mir bei Fehlern mehr Infos gibt, z.B. welcher Index etc...

Puuh, sorry, aber keine Ahnung, wie ich das sonst beschreiben soll
Grüße
Christof

tofse 14. Mär 2013 09:30

AW: Messages von anderen Programm abfangen????
 
Hallo,
ich glaube, ich habs gefunden.
Ich verwende in meinem Programm
Delphi-Quellcode:
procedure WMMENURBUTTONUP(var msg: TMessage); message WM_MENURBUTTONUP;
um den Mausklick mit der rechten Taste im Menü abzufangen.

Immer wenn nun die andere Anwendung geschlossen wird, wird die Prozedur aufgerufen.
Ich habe nun einfach ein paar "Sicherheits IF's" drum herumgebaut, und der Fehler tritt nicht mehr auf
Delphi-Quellcode:
mi:=TxtHauptmenue.FindItem(Msg.LParam,fkHandle);
if mi <> nil then
begin
  if mi.Count > Msg.WParam then
    begin
     rightClickItemName:=mi.Items[Msg.WParam].Name; // hier war immer der Fehler, weil es den Index nicht gab, der von der anderen Anwendung geliefert wird
ABER: der Fehler tritt nicht mehr auf, aber warum wird denn überhaupt die Prozedur bei mir aufgerufen. Kann mir das jemand erklären? Ist es denn generell so, dass hier alle entsprechenden Messages ankommen? Ich bin immer davon ausgegangen, dass hier nur die vom "eigenen" Menü abgefangen werden

Danke

Medium 14. Mär 2013 09:36

AW: Messages von anderen Programm abfangen????
 
Vom Prinzip her hält keiner ein Programm davon ab, sich alle Fenster auflisten zu lassen und munter Messages an diese zu verschicken. Wie sinnvoll das im einzelnen Fall ist, lässt sich schwer beurteilen ;)

lbccaleb 14. Mär 2013 10:40

AW: Messages von anderen Programm abfangen????
 
Vllt. hat das andere Programm eine eigene Globale Message mit dem selben Wert erzeugt, und schickt Sie an alle Fenster. Dann wäre es nen Fehler der anderen Anwendung, da man auf sowas achten sollte...


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:44 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