Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
1-88787
Polygon
2002-06-16 15:01
2002.06.27
Kylix и libpcap


4-89085
Serd_hhc
2002-04-29 15:54
2002.06.27
Удаление папки...


7-89050
Advokat
2002-04-01 21:35
2002.06.27
Ctr+Alt+Del в 98 и чтобы в 2к не было глюков


1-88796
TRUP
2002-06-16 13:29
2002.06.27
Как очистить папку TEMP?


1-88811
Charlz
2002-06-16 16:23
2002.06.27
Определение дня недели из заданой даты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский