SendMessage return value

Thomasio

Erfahrenes Mitglied
Wenn ich eine eigene Windows Message registriere oder mit WM_COPYDATA etwas an ein Fenster sende, wieviele Möglichkeiten habe ich dann für den return Wert?
Ist das auf bool 0 oder 1 beschränkt, oder kann ich auch etwas anderes zurück geben, z.b. einen string?
Und wenn, dann wie?
 
Da würde ich dir raten in die MSDN zu schauen.
http://msdn2.microsoft.com/en-us/library/ms644950(VS.85).aspx

Wie du dort lesen kannst ist es abhängig von der Fenster-Message was zurück gegeben
wird.

Mein tipp:
Wenn du eine Beschreibung zu einer Fenster-Message oder einer Funktion suchst,
kannst du bei google "MSDN FunktionName" oder "MSDN WM_XXX" eingeben.
Meistens führt dich das erste Ergebnis direkt auf die Beschreibung die du suchst.

Best wishes
FBIagent
 
Klar habe ich bei MSDN geschaut, aber das hat mir nicht allzuviel geholfen.
Die meisten Messages sind eh Typ bool.
Ich habe im Moment das Problem umgangen, aber ich bin mit der Lösung nicht ganz glücklich.

Der Absender schickt eine selbst definierte Message, der Empfänger gibt 0 zurück wenn er nichts zu antworten hat und 1 wenn die Antwort länger wird, plus sendet via WM_COPYDATA die tatsächliche Antwort.
Erhält der Absender eine 1 zurück wartet er auf ein WM_COPYDATA in dem dann die tatsächliche Antwort steht.

Problem dabei ist, dass ich das fast alles in threads packen muss, weil sich sonst beide Anwendungen zeitweise aufhängen, bis das alles durch ist.
So viele Threads wiederum bringen ganz andere Probleme mit sich, vor allem im timing.

Kurz gesagt, ich wäre glücklicher, wenn ich beides auf einmal machen könnte.
 
Hallo, du kannst doch über den lParam-Parameter beliebige Datenstrukturen (Zeiger) übergeben.

Gruß
MCoder
 
Übergeben ja, aber mir geht es ums zurück geben.

Was ich im Moment versuche ist:
Mein Test-Lern-Projekt ist in den letzten Monaten heftig gross geworden, und OOP funktioniert bei mir noch nicht wirklich.
Um nun zu "überwachen", was meine Anwendung macht, habe ich mir eine zweite Anwendung geschrieben, mit ein paar Dutzend Buttons, die auf Klick eine Message an die Hauptnwendung sendet und von dort diverse Werte abrufen soll, so dass mein Überwachungs-Programm mir anzeigt, was im Hauptprogramm vor sich geht, ohne dass das Hauptprogramm im Ablauf gestört wird.
Will ich aber z.B. einen WindowText abrufen, dann muss die Hauptanwendung einen string zurück geben, was aber nicht geht, solange SendMessage() keinen string als return akzeptiert, darum der Umweg über das zusätzliche WM_COPYDATA
 
Wow, die Idee ist super.
Da mache ich mich gleich ans Werk, mal sehen, wie ich das hin bekomme, wo ich mit Pointern eher auf Kriegsfuss stehe.

Erstmal ganz vielen Dank.
 
Zurück