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

Вниз

PostThreadMessage   Найти похожие ветки 

 
RazorbladE ©   (2002-04-30 11:44) [0]

PostThreadMessage ?

Мастера! Q: Как передать при помощи функции PostThreadMessage
ДРУГОМУ приложению (если известно ThreadID того приложения), структуру
данных, как это сделано в ниже приведённом примере (для одного приложения)
с функцией SendMessage:

(Ошибка возникает при попытке "распаковать" данные...)

const
WM_SETCPT = WM_USER + 1;
type
TWmSetCpt = packed record
Msg: Cardinal;
Capt: PcHar;
end;
TForm1 = class(TForm)
.....
procedure Button1Click(Sender: TObject);
private
procedure WmSetCpt(var Message: TWmSetCpt); message WM_SETCPT;
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{ TForm1 }

procedure TForm1.WmSetCpt(var Message: TWmSetCpt);
var Z: ^TWmSetCpt;
begin
Z := Pointer(message.Capt);
ShowMessage(Z.Capt);
end;

procedure TForm1.Button1Click(Sender: TObject);
var x: TWmSetCpt;
begin
x.Capt := PcHar(Caption);
SendMessage(Handle, WM_SETCPT,LongInt(@X), -1);
end;


 
troits ©   (2002-04-30 12:01) [1]

Нет, так нельзя.
Есть много способов передавать данные между процессами.
Один из них - сообщение WM_COPYDATA

Заполняешь 3 поля
tagCOPYDATASTRUCT = packed record
dwData: DWORD;
cbData: DWORD;
lpData: Pointer;
end;
и
SendMessage(
DestWnd, // handle to destination window
WM_COPYDATA, // message to send
WPARAM( Handle), // handle to window (HWND)
LPARAM(@YourCOPYDATASTRUCT));

А в окне - приемнике "ловишь" WM_COPYDATA и извлекаешь из
COPYDATASTRUCT все, что нужно...


 
troits ©   (2002-04-30 12:13) [2]

Прошу прощения - невнимательно прочитал вопрос. WM_COPYDATA должен посылаться только через SendMessage.

Если уж так неужно посылать сообщение через PostMessage, можно ,например, отмаппить (CreateFileMapping / MapViewOfFile) файл, в "передатчике" писать туда данные, post - ить сообщение и в "приемнике" извлекать.



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

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

Наверх




Память: 0.47 MB
Время: 0.027 c
1-88906
greenrul
2002-06-14 18:26
2002.06.27
Как в CoolBar засунуть меню?


3-88731
Oleg_er
2002-06-04 06:20
2002.06.27
SQL-запрос


3-88780
Nesh
2002-06-02 12:49
2002.06.27
Проблемы с параметрами SQL запроса в TSQLClientDataSet !!


1-88834
Miss
2002-06-17 11:47
2002.06.27
Поиск в базе по ключевым словам


1-88862
Glooker
2002-06-17 21:36
2002.06.27
Дата создания