AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Programm über SendMessage kontrollieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm über SendMessage kontrollieren

Ein Thema von Hybrid666 · begonnen am 4. Feb 2007 · letzter Beitrag vom 5. Sep 2007
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Programm über SendMessage kontrollieren

  Alt 11. Mär 2007, 20:56
Über Messages geht es so einfach nicht.
Vielleicht ist ein anderes Konzept für dich günstiger. Ich kenn aber dein Programm nicht.

Hier erstmal die Lösung für Messages:
Du kannts immer nur 32bit-Werte senden. Da passt selten ein ganzer Text rein. Allerdings passt da ein Pointer rein. Das ist dann Variante 1. Du schickst von Programm A einen Pointer an Programm B rüber, der sagt wo der String liegt und in Programm B kannst du dann die Zeichenkette über "readprocessmemory aus Programm A" auslesen. Da musst au Allerdings sicher stellen, dass Programm A den String solange bereit hält, bis B ihn ausgelesen hat.
Variante 2 ist über ein globales Atom. Da kannst du global einen string hinterlegen und der ist mit seiner Nummer von jedem Programm aus lesbar und die Nummer schickst du über Messages.

Das erstmal kurz dazu.

Wenn du viel Text (also immer wieder Text) schicken willst, solltest du vielleicht mal über andere Möglichekiten (Pipes z.B.) nachdenken.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Programm über SendMessage kontrollieren

  Alt 11. Mär 2007, 21:01
oder einfach ein wm_copydata
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Programm über SendMessage kontrollieren

  Alt 12. Mär 2007, 07:22
Zitat von SirThornberry:
oder einfach ein wm_copydata
Das ist ja vielleicht ein billige Variante . Je nach "ZielControl" kann man da bestimmt auch WM_SetText/WM_GetText einsetzen .
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#14

Re: Programm über SendMessage kontrollieren

  Alt 12. Mär 2007, 11:51
Hi,

vielen dank für eure beiträge. die wm_copydata variante gefällt mir sehr gut. hab mich auch schon auf der ms seite informiert, jedoch werde ich daraus nicht so schlau.

wie könnte das denn in delphi aussehen ?

vielen dank
Gruß Nico
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: Programm über SendMessage kontrollieren

  Alt 12. Mär 2007, 12:32
Ich würde es spontan so sagen (ungetestet):
Delphi-Quellcode:
procedure sending(text:string);
var data:TCopyDataStruct;
begin
  data.dwdata:=0;
  data.cbdata:=length(text);
  data.lpdata:=@text[1]
  sendmessage(zielhandle,wm_copydata,selfhandle,integer(@data));
end;
Delphi-Quellcode:
type xxx=class(TForm)
     ...
     procedure receiving(var msg:TWMCopydata):message wm_copydata;
     ...
end;

...

procedure receiving(var msg:TWmcopydata);
begin
  //Message in msg.copydatastruct
end;
Edit: Wenn ich mir das so ansehe, finde ich es nicht einfacher als Atoms
Edit2: 1 Fehler behoben
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#16

Re: Programm über SendMessage kontrollieren

  Alt 12. Mär 2007, 14:04
@sirius:

wie würde denn die Atoms Variante aussehen, noch nie gehört *g* ?
Gruß Nico
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Programm über SendMessage kontrollieren

  Alt 12. Mär 2007, 14:14
Delphi-Quellcode:
procedure send(s:string);
var wparam,lparam:integer;
begin
  wparam:=globaladdAtom(pchar(s));
  lparam:=length(s);
  sendmessage(zielhandle,WM_User+10,wparam,lparam);
  globaldeleteatom(wparam);
end;
Das "+10" kann auch anders sein, Hauptsache ist, du hast in beiden Programmen dieselbe Nummer und sie ist nicht kleiner als WM_User
Delphi-Quellcode:
type xxx=class(Tform)
     ...
     procedure receive(var msg:TMessage);message wm_user+10;
end;


procedure xxx.receive(var msg:TMessage);
var s:string;
begin
  setlength(s,msg.lparam);
  globalgetatomname(msg.wparam,@s,msg.lparam); //könnte auch @s[1] sein oder so...
  //s im Prog weiterleiten
end;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#18

Re: Programm über SendMessage kontrollieren

  Alt 12. Mär 2007, 14:24
Hi,

klappt soweit schon fast wunderbar... mein Programm empfängt die Nachricht, aber hier

Delphi-Quellcode:
setlength(s,msg.lparam);
globalgetatomname(msg.wparam,@s,msg.lparam); //könnte auch @s[1] sein oder so...
scheint noch ein fehler zu sein, es gibt immer ne fehlermeldung ??
Gruß Nico
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: Programm über SendMessage kontrollieren

  Alt 12. Mär 2007, 14:25
Dann nimm mal statt @s, @s[1]
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#20

Re: Programm über SendMessage kontrollieren

  Alt 12. Mär 2007, 14:31
Ok klappt wunderbar! Danke

aber sehe ich das richtig, dass ich jetzt jedes empfangene Zeichen in s[i] wieder zusammensetzen muss ?
Gruß Nico
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 01:35 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