Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обмен инфой, между приложениями 
:(
    Опции темы
Satana
Дата 12.1.2005, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 564
Регистрация: 15.9.2004
Где: Ставрополь, СЗ ра йон

Репутация: 1
Всего: 5



люди есть 2 прграммы на делфи по одному эдиту и по одной кнопке.
в первой (пусть это будет Form1) в эдите набирается текст и нажимается кнопка.

так вот после нажатия на кнопку во второй программе в ее эдите должен появится текст из первой программы.

нужно сделать это без помощи буфера обмена винды,

так вот вопрос как?


--------------------
 Работай на себя 
www.abalentsev.com - Сайт портфолио.
www.pokushau.ru - Рецепты со всего мира.
PM MAIL WWW ICQ   Вверх
Akella
Дата 12.1.2005, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



из DRKB
Код

procedure TForm1.Cut1Click(Sender: TObject);
begin
 SendMessage (ActiveControl.Handle, WM_Cut, 0, 0);
end;


procedure TForm1.Copy1Click(Sender: TObject);
begin
 SendMessage (ActiveControl.Handle, WM_Copy, 0, 0);
end;

procedure TForm1.Paste1Click(Sender: TObject);
begin
 SendMessage (ActiveControl.Handle, WM_Paste, 0, 0);
end;


PM MAIL   Вверх
_hunter
Дата 12.1.2005, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



можно два сокета создать ( в один ( в первой программе ) пишеш из другого ( во второй программе ) читаеш )
можно файл в виртуальной памяти создать и по событию из него читать



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
dm9
Дата 12.1.2005, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Я бы сделал так:

Handle := FindWindow ('TForm1', nil);
Handle1 := FindWindowEx (Handle, nil, 'TEdit', nil);
SendMessage (Handle1, WM_SETTEXT, 0, Integer(MyText));

Если окон TEdit много, придётся перебирать...

Добавлено: Ниже бред, думать надо перед тем, как говорить smile Просто шлёшь WM_USER+1, и обработчик на другом конце меняет текст в edit-е

Ну или так: шлёшь сообщение-запрос (WM_USER+1) главной форме:
SendMessage (Handle, WM_USER+1, MyForm.Handle, 0);
тебе возвращают Handle нужного TEdit, ему уже посылаешь WM_SETTEXT.

Я понимаю, что если ты первый раз видишь эти ф-ции, то тебе ничего непонятно, но попробуй хелп почитать (В Delphi: Help -> Windows SDK), потом если что непонятно - спрашвай...

Добавлено @ 17:38
dsergey,
Цитата(Satana @ 12.1.2005, 17:10)
нужно сделать это без помощи буфера обмена винды,


Это сообщение отредактировал(а) dm9 - 12.1.2005, 17:57
PM MAIL ICQ   Вверх
_hunter
Дата 12.1.2005, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



в таких способах недостатков куча
+ что делать если программа вообще без окна?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
dm9
Дата 12.1.2005, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Кхм...

Цитата(Satana @ 12.1.2005, 17:10)
есть 2 прграммы на делфи по одному эдиту и по одной кнопке


PM MAIL ICQ   Вверх
Akella
Дата 12.1.2005, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



затем нужно послать сообщение этому окну
в обеих программах зарегестрируй свои сообщения
типа
Код

в самом верху, после USES пиши (в обеих приложениях)
Const
 WM_GetInfoFromClipBoard = WM_USER +100;

а в секции Private формы-получателя

Procedure WMGetInfoFromClipBoard(Var Msg: TMessage); message WM_GetInfoFromClipBoard;


Код

отсылаем сообщение так
PostMessage(FindWindow(nil,'Заголовок окна который должен принять инфу из буфера'),
WM_GetInfoFromClipBoard, 0, 0);

Код

Procedure TForm1.WMGetInfoFromClipBoard(Var Msg: TMessage);
begin//обработка полученного сообщения
 //получение инфы из буфера обмена
end;


Это сообщение отредактировал(а) dsergey - 12.1.2005, 17:50
PM MAIL   Вверх
dm9
Дата 12.1.2005, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



dsergey, торможу, ты прав, конечно smile)

Но первый мой способ хорош тем, что второму приложению вообще ничего делать не надо. так можно заслать инфу любой программе smile
PM MAIL ICQ   Вверх
Akella
Дата 12.1.2005, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



хозяин барин, если он так захотел, то smile
Хотя наставить человека на путь истинный тоже неплохо, а может ему для курсового надо
PM MAIL   Вверх
Satana
Дата 12.1.2005, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 564
Регистрация: 15.9.2004
Где: Ставрополь, СЗ ра йон

Репутация: 1
Всего: 5



да если бы для курсового я бы буффером обычным обошелся smile мне по работе нада smile ща вот все почитаю и попробую smile


--------------------
 Работай на себя 
www.abalentsev.com - Сайт портфолио.
www.pokushau.ru - Рецепты со всего мира.
PM MAIL WWW ICQ   Вверх
_hunter
Дата 12.1.2005, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



dm9, это ты мне писал?

я не спорю, при таком задании можно и сообщениями покидатся, но вдруг завтра он решит писать что-то посерьезнее?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Akella
Дата 13.1.2005, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата
но вдруг завтра он решит писать что-то посерьезнее?

Windows "построена" на сообщениях, поэтому сам решай
PM MAIL   Вверх
Akella
  Дата 13.1.2005, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Попробуй DDE

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  DDE.zip
PM MAIL   Вверх
<Spawn>
Дата 13.1.2005, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



WM_COPYDATA специально для таких случаевsmile

Это сообщение отредактировал(а) <Spawn> - 13.1.2005, 11:31


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
_hunter
Дата 13.1.2005, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



dsergey, Windows то построены, но почему то ни файр-волы, ни тот же кастор сообщениями не кидается


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
NiJazz
Дата 13.1.2005, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Код клиента:
Код

procedure TForm1.Button1Click(Sender: TObject);
var hPipe: THandle;
   Size: cardinal;
   Buf: PChar;
begin
if not WaitNamedPipe('\\.\pipe\mypipe', 0) then begin
  Application.MessageBox('Именованный канал не создан',
                         'Ошибка',
                         MB_OK or MB_ICONINFORMATION);
  exit;
end;
hPipe := CreateFile('\\.\pipe\mypipe',
                    1,  // В С++ это было бы FILE_WRITE_DATA
                    FILE_SHARE_WRITE,
                    nil,
                    OPEN_EXISTING,
                    FILE_ATTRIBUTE_NORMAL,
                    0);
Size := Length(Edit1.Text);
Buf := PChar(Edit1.Text);
WriteFile(hPipe, Buf, Size, Size, nil);
CloseHandle(hPipe);
end;

Код сервера:
Код

procedure TForm1.Button1Click(Sender: TObject);
var hPipe: THandle;
   Buf: PChar;
   Size: cardinal;
begin
Size := 255;
hPipe := CreateNamedPipe('\\.\pipe\mypipe',
                         PIPE_ACCESS_INBOUND,
                  PIPE_TYPE_BYTE,
    1,
    0,
    Size,
    NMPWAIT_USE_DEFAULT_WAIT,
    nil);
ConnectNamedPipe(hPipe, nil);
GetMem(Buf, Size);
ReadFile(hPipe, Buf, Size, Size, nil);
FlushFileBuffers(hPipe);
DisconnectNamedPipe(hPipe);
CloseHandle(hPipe);
Edit1.Text := string(Buf);
FreeMem(Buf);
ShowMessage(IntToStr(GetLastError));
end;

PM MAIL   Вверх
Medved
Дата 13.1.2005, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Цитата
WM_COPYDATA специально для таких случаев


Собственно согласен на 100%.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0626 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.