Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.02.05;
Скачать: CL | DM;

Вниз

Передать текст с помощью сообщений в другую программу (Delphi)   Найти похожие ветки 

 
Tooreagen   (2009-09-23 11:15) [0]

Привет! Делаю лабораторную по программированию, задача передать сообщение из одной программы в другу с помощью пользовательского сообщения. Первая программа передает сообщение:
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

Const wm_My=wm_User+300;
type
 TwmMy= packed record
   Msg: Cardinal;
   str:array[0..10] of char;
   WParam,LParam : LongInt;
   end;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 Windowname:hwnd;
 mess:TWMMY;
begin
 WindowName:=FindWindow(PChar(0),"Destination");
 mess.str:="123?321";
 SendMessage(WindowName,wm_my,mess.WParam,mess.LParam);
end;

end.

Вторая принимает сообщение:

unit target;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls;

const
wm_my=wm_user+300;
type
 TwmMy= packed record
   Msg: Cardinal;
   str:array [0..10] of char;
   WParam,LParam:LongInt;
   end;
 TDestination = class(TForm)
   Label1: TLabel;
   Label2: TLabel;
 private
   procedure wmMy(var msg:TwmMy );message wm_my;
 public
   { Public declarations }
 end;

var
 Destination: TDestination;

implementation

{$R *.dfm}
procedure TDestination.wmMy(var msg:TwmMy);
var p:integer;
begin
with msg do
begin
 p:=pos("?",str);
 Label2.Caption:=IntToStr(p);
end;
end;
end.

Здесь я нахожу позицию символа  ? в переданной строке. Не пойму где ошибка, помогите.


 
Медвежонок Пятачок ©   (2009-09-23 11:19) [1]

таким макаром передать строковое сообщение невозможно (в другой процесс)


 
Leonid Troyanovsky ©   (2009-09-23 11:32) [2]


> Tooreagen   (23.09.09 11:15)  

> сообщение из одной программы в другу с помощью пользовательского
> сообщения.

Пользовательское не годится.
See WM_COPYDATA.

--
Regards, LVT.


 
Сергей М. ©   (2009-09-23 11:40) [3]


> с помощью пользовательского сообщения


А что, в задании на лабу явно упоминается "с помощью пользовательских оконных сообщений" ?


 
Tooreagen   (2009-09-23 14:20) [4]

Все! Решил проблему с помощью WM_COPYDATA. Спасибо всем большое! нашел в инете что сама винда не даст принять незнакомое сообщение, т.е. пользовательское.


 
Сергей М. ©   (2009-09-23 14:42) [5]


> сама винда не даст принять незнакомое сообщение, т.е. пользовательское


Это где ж такие грибы растут ?


 
Leonid Troyanovsky ©   (2009-09-23 14:48) [6]


> Tooreagen   (23.09.09 14:20) [4]

> большое! нашел в инете что сама винда не даст принять

Вранье, даст.
Только не блок данных передастся, как хотелось.
Бо, для этого нужен еще маршаллинг, а таким механизмом снабжено
WM_COPYDATA, да еще несколько, скажем, WM_SET/GETTEXT&etc
и некоторые другие, в основном для "старых" (времен Win3.x) контролов.

--
Regards, LVT.


 
QAZ   (2009-10-01 11:47) [7]

в некоторых специфич. случаях WM_COPYDATA не канает и вызывает зависоны, а текст можно передать через юзерские месажи


 
Leonid Troyanovsky ©   (2009-10-02 08:10) [8]


> QAZ   (01.10.09 11:47) [7]

Видимо, ручки оч.умелые, оно и не канает.

И текст, конечно, можно передать.
Вот, азбука Морзе до сих пор в ходу.

--
Regards, LVT.


 
QAZ   (2009-10-02 13:24) [9]


> Leonid Troyanovsky

типа юморист ?
попробуй передать WM_COPYDATA сразу от нескольких к одному неоднократно и разными пачками


 
Leonid Troyanovsky ©   (2009-10-03 02:43) [10]


> QAZ   (02.10.09 13:24) [9]

> попробуй передать WM_COPYDATA сразу от нескольких к одному
> неоднократно и разными пачками

Какими, на, разными пачками?

От нескольких же одному, неоднакратно же - неоднократно.

--
Regards, LVT.


 
QAZ   (2009-10-03 10:00) [11]

не заморачивйся о велиикий гуру


 
Leonid Troyanovsky ©   (2009-10-03 12:15) [12]


> QAZ   (03.10.09 10:00) [11]

Ерундой не надо болтать.

--
Regards, LVT.



Страницы: 1 вся ветка

Текущий архив: 2012.02.05;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.008 c
15-1318969802
Юрий
2011-10-19 00:30
2012.02.05
С днем рождения ! 19 октября 2011 среда


2-1319720941
igorium
2011-10-27 17:09
2012.02.05
Сортировка в Stringgrid (интересует сам значок сортировки)


15-1318541774
undefined
2011-10-14 01:36
2012.02.05
Случайно вспомнился сайт delphimaster.ru


15-1318620676
Rouse_
2011-10-14 23:31
2012.02.05
Хм, задачка...


15-1318598977
OW
2011-10-14 17:29
2012.02.05
ProcessExplorer и 100% загрузка процессора.