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

Вниз

Не работает посылка сообщения в другую прогу!!!   Найти похожие ветки 

 
oduvan   (2002-08-13 17:20) [0]

Сообщение посылается, но теряются данные (это когда обмениваются 2 программы). Если весь этот код поместить в одну программу все работает, что я делаю не так???

Имеется:

const
WM_MAIN=WM_USER+10000;

type
TWMMain=packed record
msg:Cardinal;
Email:PCHar;
Text:PCHar;
end;

В одной форме:

SendMessage(FindWindow(pchar("TPostForm"),nil),WM_MAIN, integer(pChar(v1)),integer(pChar(v2)));

В другой:

private
procedure GetEmail(var msg:TWMMain);message WM_MAIN;
.......

procedure TPostForm.GetEmail(var msg:TWMMain);
begin
SetForegroundWindow(handle);
SetWindowPos(handle,HWND_TOPMOST,left,top,width,height,SWP_SHOWWINDOW);
SetWindowPos(handle,HWND_NOTOPMOST,left,top,width,height,SWP_SHOWWINDOW);
showmessage(msg.Email+" "+msg.Text); <- Тут выдает ошибку
end;


 
cdaDmitriy   (2002-08-13 17:26) [1]

потому что integer(pChar(v1)),integer(pChar(v2) имеет смысл только в первом потоке и адрес в этом потоке а не во втором


 
Игорь Шевченко   (2002-08-13 17:29) [2]

cdaDmitriy © (13.08.02 17:26)

В одном процессе.

oduvan © (13.08.02 17:20)

используйте WM_COPYDATA


 
cdaDmitriy   (2002-08-13 17:34) [3]

>> Игорь Шевченко да я конечно имел ввиду ( в 2 процессах )

и что WM_COPYDATA поможет ??? не уверен

Думаю нужно из строки получить <ATOM> и его уже передавать


 
Игорь Шевченко   (2002-08-13 17:41) [4]

cdaDmitriy © (13.08.02 17:34)

Поможет. (с) Джеффри Рихтер


 
oduvan   (2002-08-13 18:08) [5]

А как пользоваться этой WM_COPYDATA???
Можно пример для отправки данных и для получения, мне необходимо в программе передать 2 текстовых параметра, как реализовать?


 
Игорь Шевченко   (2002-08-13 18:11) [6]

oduvan © (13.08.02 18:08)

Можно пример. У Джеффри Рихтера в книжке


 
oduvan   (2002-08-13 18:20) [7]

Не ну на самом деле, елси ты понимаешь в этом, что тебе мешает объяснить? Хелп ми Плиз!


 
cdaDmitriy   (2002-08-13 18:24) [8]

(с) Джеффри Рихтер конечно поможет но и там написано :

Увидев, что Вы посылаете сообщение WM_COPYDATA, SendMessage создает проек цию файла размером cbData байтов и копирует данные из адресного пространства Вашей программы в эту проекцию. Затем отправляет сообщение окну-приемнику При обработке этого сообщения принимающей оконной процедурой параметр lParam указывает на структуру COPYDATASTRUCT, которая находится в адресном простран стве процесса-приемника Элемент lpData этой структуры указывает на проекцию файла в адресном пространстве процесса-приемника.


и тоже можно решить ( Я думаю ) с

ATOM GlobalAddAtom( LPCTSTR lpString
// pointer to the string to add
);



 
Игорь Шевченко   (2002-08-13 18:29) [9]

Джеффри Рихтер пишет правильно. А зачем таблицу атомов мучить ? Она не резиновая :-)))
Кстати, создается не совсем проекция файла, а просто выделяется область виртуальной памяти (section)


 
oduvan   (2002-08-13 18:37) [10]

ВСе ок! WM_COPYDATA работет отлично!



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

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

Наверх





Память: 0.47 MB
Время: 0.009 c
1-98158
МБВ
2002-09-17 13:16
2002.09.30
Подсказка в Делфи


8-98234
BorisMor
2002-06-03 14:22
2002.09.30
MP3 -> WAV


8-98239
Сявчик
2002-05-30 21:23
2002.09.30
XP


14-98357
Карлсон
2002-09-06 15:35
2002.09.30
CC


3-97998
Vats
2002-09-10 10:32
2002.09.30
Помогите с Locate///





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский