![]() |
sendmessage problem
hallo
habe nun schon eine menge beispiele gesehen wie man messages von einem zum andere programm sendet, aber irgendwie sind die ja alle ähnlich aufgebaut und funktionieren bei mir nicht. also eine message kommt auch an aber derren inhalt nicht mehr klar.. nur irgendwelches zeichengewirr. ich habe jetzt soetwas benutzt: ![]() weiß einer wieso mein text nicht klar ankommt? mfg timi-loader |
Re: sendmessage problem
Zitat:
Nein warte, ich lege mal eben schnell die Karten...... Nein, Moment, ich hole mal eben meine Glaskugel aus dem Schrank...... Nein, ich könnte noch im Kaffeesatz lesen.... Aber einfacher wäre es bestimmt, wenn du uns verrätst, wie dein Quellcode dazu aussieht. |
Re: sendmessage problem
:stupid: :mrgreen:
also im prinzip hab ich den ja nur vom link oben abgeschreiben.. dachte vllt ist da ja ein genereller bug drinn.. nja hier mal meins:
Delphi-Quellcode:
//Vom Project1:
begin hPrevWin := FindWindow(nil, 'BTswitcherHilfe'); If hPrevWin <> 0 Then begin txt:='testtext'; SetForegroundWindow(hPrevWin); SendMessage(hPrevWin, WM_USER+77, 0, DWORD(PChar(txt))); application.Terminate; end else begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end; end.
Delphi-Quellcode:
//oben bei private:
private procedure OnMyMessage(var Msg: TMessage); message WM_USER+77;
Delphi-Quellcode:
..so das ganze ist eine billige variante zum verhindern des mehrfachstarts und dabei soll dann zur ersten instanz eine message gegeben werden. (später soll die message den paramstr enthalten.. das kommt ja dann noch)
//und dann unten:
procedure tform1.OnMyMessage(var Msg: TMessage); var txt: PChar; begin txt := PChar(msg.lParam); msg.Result := 1; ShowMessage(txt); end; mfg |
Re: sendmessage problem
Lesen:
Zitat:
Ein Beispiel gibt es hier: ![]() |
Re: sendmessage problem
hey cool ;)
thx so gehts! :thumb: (p.s.: habs auch ohne record gemacht also einfach die messageart ersetzt - ein string geht jetzt irgendwie nur bis 7 zeichen aber egal das reicht^^) |
Re: sendmessage problem
Zitat:
|
Re: sendmessage problem
hm ja habs wohl nur nen bug ausgenutzt oder so..^^ also es klappt nicht wirklich so wie ichs hab.. mss man wohl mit integer() machen.. also ich hab noch mit diesem pchar gearbeitet gehabt..
kann man den code auch kürzer fassen ohne ein record?.. (ja, aber wie?) also ich komm grad mit dieser datentypumwandlung nicht ganz zurecht |
Re: sendmessage problem
Zeig doch mal Code. Meine Glaskugel hat gerade der Kollege.
|
Re: sendmessage problem
nja mein code bin ich grade wieder neu am verhunzen... -.-
also jetzt wollt ichs eigendlich nur so machen(halt ein string nur):
Delphi-Quellcode:
aber so geht das ja nicht..
//sender
txt:='meinstring'; cds.dwData := 0; cds.cbData := sizeof(txt); cds.lpData := @txt; SetForegroundWindow(hPrevWin); SendMessage(hPrevWin, WM_COPYDATA, 0, Integer(@cds)); //empfänger procedure tform1.OnMyMessage(var Msg: TWMCopyData); var txt: string; begin txt := msg.CopyDataStruct.lpData; msg.Result := 1; ShowMessage('ankommend: '+txt); end; also da hab ich jetzt den durchblick grad nicht.. irgendwas mit pointer ist ja kein string.. :gruebel: mfg |
Re: sendmessage problem
Moin Timi,
probier's mal so:
Delphi-Quellcode:
//...
cds.cbData := Length(txt); // wenn txt vom Typ String ist, ist SizeOf(txt) = 4 cds.lpData := @txt[1]; // [1], da ansonsten der Speicher ab der Adresse von txt übertragen wird //... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 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