AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein SendMessage überträgt String nicht zuverlässig
Thema durchsuchen
Ansicht
Themen-Optionen

SendMessage überträgt String nicht zuverlässig

Ein Thema von Kostas · begonnen am 13. Jun 2014 · letzter Beitrag vom 16. Jun 2014
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: SendMessage überträgt String nicht zuverlässig

  Alt 15. Jun 2014, 13:17
Meinst du nicht PostMessage?

Wobei hier SendMessage eh keine sinnvolle Antwort zurückgeben kann.
Denn, wie gesagt, sendet HWND_BROADCAST die Meldung an alle Programme (TopLevelWindows), hat nur ein Result und kann da natürlich nicht taustende Antworten drin unterbekommen.

Und das Tausende mein ich ernst. (nja, zumindestens paar Hundert sind es bestimmt)
JA natürlich..
Sorry war spät gestern.

Zitat:
@Sir Rufo.. Bei SendMessage kann man den Rückgabewert auswerten und das geht eben nur, wenn so lange gewartet wird, bis SendMessage seine Arbeit verrichtet hat.
Mach aber in seinem Fall nicht wirklich sinn. Oder?

gruss

Geändert von EWeiss (15. Jun 2014 um 13:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: SendMessage überträgt String nicht zuverlässig

  Alt 15. Jun 2014, 14:16
Zitat:
@Sir Rufo.. Bei SendMessage kann man den Rückgabewert auswerten und das geht eben nur, wenn so lange gewartet wird, bis SendMessage seine Arbeit verrichtet hat.
Mach aber in seinem Fall nicht wirklich sinn. Oder?
Nö, nicht wirklich
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#3

AW: SendMessage überträgt String nicht zuverlässig

  Alt 15. Jun 2014, 15:01
Ist das schon erwähnt worden?
1. WM_COPYSTRUCT soll/darf nur mit SendMessage aufgerufen werden.
2. Die zu übertragenden Daten sollen/dürfen keine Pointer enthalten.
3. Der Empfänger soll die Daten schnellstmöglich aus der übergebenen Struktur kopieren und die Abarbeitung beenden.
4. Schneller geht es mit Pipes.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: SendMessage überträgt String nicht zuverlässig

  Alt 15. Jun 2014, 15:21
Nö, nicht wirklich
Genauso, wie es keinen Sinn macht das an ALLES zu senden.

http://www.flounder.com/wm_copydata.htm
Zitat:
So sending a message like this using HWND_BROADCAST is to be considered a seriously antisocial act.
Der Meinung bin ich auch, obwohl das noch nett formuliert ist.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (15. Jun 2014 um 15:27 Uhr)
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.112 Beiträge
 
Delphi 12 Athens
 
#5

AW: SendMessage überträgt String nicht zuverlässig

  Alt 15. Jun 2014, 15:32
Tausend Dank an alle beteiligten,

so funktioniert es einwandfrei und ausreichend schnell.

//zum Senden
Delphi-Quellcode:
procedure SendData;
var receiverHandle : THandle;
    copyDataStruct : TCopyDataStruct;
begin
  receiverHandle := FindWindow(PChar('TfrKamera1'),PChar('frKamera1'));

  if receiverHandle > 0 then
  begin
    copyDataStruct.dwData := Ord(ntCreateSnapShot);
    copyDataStruct.cbData := 1 + Length(SendMsgText);
    copyDataStruct.lpData := PChar(SendMsgText);

    SendMessage(receiverHandle, WM_COPYDATA, LPARAM(Handle), WPARAM(@copyDataStruct)) ;
  end;
end;
//zum Empfangen
Delphi-Quellcode:
procedure TfrKamera1.WMCopyData(var Msg: TWMCopyData) ;
var
  NachrichtTyp : TNachrichtTyp;
begin
  NachrichtTyp := TNachrichtTyp(Msg.CopyDataStruct.dwData);

  case NachrichtTyp of
    ntCreateSnapShot: HandleCopyDataString(Msg.CopyDataStruct);
  end;
end;
Für mein aktuelles Projekt ist es ausreichend.

Gruß Kostas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: SendMessage überträgt String nicht zuverlässig

  Alt 15. Jun 2014, 15:42
so funktioniert es einwandfrei
Beide Anwendungen sind in Delphi5 geschrieben. Da ist das Char noch 1 Byte lang.
Bis jemand auf die abwägige Idee kommt eines oder beide Programme mit seinem neueren Delphi zu kompilieren,
da diesbezüglich alles ignoriert wurde, aber was soll.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (15. Jun 2014 um 15:47 Uhr)
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.112 Beiträge
 
Delphi 12 Athens
 
#7

AW: SendMessage überträgt String nicht zuverlässig

  Alt 15. Jun 2014, 16:03
Für Delphi5 habe ich nun mal keine andere Möglichkeit.
Für zukünftige IDEs habt ihr ja bereits die passenden Hinweise gleich mittgeliefert.
Schönen Dank dafür.

Gruß Kosats
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: SendMessage überträgt String nicht zuverlässig

  Alt 15. Jun 2014, 16:25
so funktioniert es einwandfrei
Beide Anwendungen sind in Delphi5 geschrieben. Da ist das Char noch 1 Byte lang.
Bis jemand auf die abwägige Idee kommt eines oder beide Programme mit seinem neueren Delphi zu kompilieren,
da diesbezüglich alles ignoriert wurde, aber was soll.
Das sind die Nachteile wenn man sich bei so einem Thema mit einbringt.
Man will nichts lernen sondern nur übernehmen wenn es denn passt.
Aber wie du schon sagst... was soll's

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: SendMessage überträgt String nicht zuverlässig

  Alt 15. Jun 2014, 16:34
Gute Erlärung, nur die genannten Pips und eigentlich nahezu alles Andere, was mit IPC zu tun hat, funktioniert auch mit alten Delphis.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz