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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отправка текста из одного приложение в другое 
V
    Опции темы
Leos
Дата 27.6.2006, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 7.2.2006

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



У меня такой вопрос:
пусть у меня имеются 2 приложения (которые я разрабатываю)

приложение 1:
  есть две формы, одна главная - видна,  а вторая - некоторое диалоговое окно с Memo1 (вторая форма вызывается по некоторой процедуре); вторая форма изначально не видна

приложение 2: там есть кнопка по нажатию на которую нужно: как-то связаться с приложением 1, открыть в нём его форму 2 (возможно по той некоторой процедуре) и в находящийся там Memo1 вставить некоторый текст.
Как такое можно осуществить? 
PM MAIL   Вверх
Alexeis
Дата 27.6.2006, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



Такое возможно осуществить при помощи DDE
А синхронизацию произвести при помощи отправки user сообщений 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Sunvas
Дата 30.6.2006, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 2
Всего: 89



Можешь сокетами поигаться - адрес компьюетра ставишь localhost. Есть, конечно и другие методы, но этот помоиму самый продуктивный. Сокетами будет удобно, но если будет стоят фаервол - то неудастся соедениться.  


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Yanis
Дата 30.6.2006, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



Leos
Для простой передачи строки можно и без DDE обойтись. В отправителе пишешь такой код:
Код
var
  cds: TCopyDataStruct;
  hRecipient: HWND;
begin
  with cds do
    begin
      dwData := 0;
      cbData := StrLen(PChar(Edit1.Text)) + 1;
      lpData := PChar(Edit1.Text)
    end;

  // ноходим окно получателя
  hRecipient := FindWindowEx(0, 0, 'TForm1', PChar('Form2'));
  if hRecipient <> 0 then
    SendMessage(hRecipient, WM_COPYDATA, Longint(Handle), Longint(@cds))
  else
    ShowMessage('Получатель не найден!');
end;

а в получателе пишешь так:
Код
type
  TForm2 = class(TForm)
    Label1: TLabel;
  private
    { Private declarations }
    procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA;
  public
    { Public declarations }
  end;

{ ... }

procedure TForm2.WMCopyData(var Msg: TWMCopyData);
var
  sText: array[0..99] of Char;
begin
  StrLCopy(sText, Msg.CopyDataStruct.lpData, Msg.CopyDataStruct.cbData);
  Label1.Caption := sText;
end;
 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Leos
Дата 8.7.2006, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 7.2.2006

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



Всем спасибо. Здесь я применил com-технологию и основную задачу решил, правда появились некоторые вопросы по com, но это уже не для этого топика. 
PM MAIL   Вверх
Agent_Smit
Дата 13.3.2007, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 11.2.2007

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



а как сие можно сделать через Pipe ?

p.s. попробовал вышеприведённый код - нифига не работает =(((
PM MAIL   Вверх
Yanis
Дата 14.3.2007, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



Цитата(Agent_Smit @  13.3.2007,  21:34 Найти цитируемый пост)
p.s. попробовал вышеприведённый код - нифига не работает =(((

У всех видите ли работает, а у тебя нет smile Значит что то сделал неправильно. Показывай код.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Agent_Smit
Дата 27.3.2007, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 11.2.2007

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



код отправителя

Код


unit Unit1_main;

interface

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

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

var
  main_Form1: Tmain_Form1;

implementation

{$R *.dfm}

procedure Tmain_Form1.Button1Click(Sender: TObject);
var
  cds: TCopyDataStruct;
  hRecipient: HWND;
begin
with cds do
    begin
      dwData := 0;
      cbData := StrLen(PChar(Edit1.Text)) + 1;
      lpData := PChar(Edit1.Text)
    end;
  // ноходим окно получателя
  hRecipient := FindWindowEx(0, 0, 'TForm1', PChar('Form2'));
  if hRecipient <> 0 then
    SendMessage(hRecipient, WM_COPYDATA, Longint(Handle), Longint(@cds))
  else
    ShowMessage('Получатель не найден!');
end;

end.



код получателя

Код


unit Unit2;

interface

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

type
  TForm2 = class(TForm)
    Memo1: TMemo;
    Label1: TLabel;
  private
    { Private declarations }
  public
     procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA;
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.WMCopyData(var Msg: TWMCopyData);
var
  sText: array[0..99] of Char;
begin
  StrLCopy(sText, Msg.CopyDataStruct.lpData, Msg.CopyDataStruct.cbData);
  Label1.Caption := sText;
end;

end.




форма получателя вызывается через другую форму путём динамического создания этой формы... код получателя и отправителя нахдятся в разных проектах и ни чем не связаны... запускаю просто два екзешника и проверяю - не пашет... 



да и ещё один вопросец.. а можно всё это реализовать через сокеты?
PM MAIL   Вверх
Yanis
Дата 27.3.2007, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



Неправильно:
Цитата(Agent_Smit @  27.3.2007,  03:19 Найти цитируемый пост)
hRecipient := FindWindowEx(0, 0, 'TForm1', PChar('Form2'));


Правильно:
Цитата(Agent_Smit)
hRecipient := FindWindow('TForm2', PChar('Form2'));


Это сообщение отредактировал(а) Yanis - 27.3.2007, 08:23


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
MetalFan
Дата 27.3.2007, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Цитата(Agent_Smit @  27.3.2007,  02:19 Найти цитируемый пост)
hRecipient := FindWindowEx(0, 0, 'TForm1', PChar('Form2'));

тут как бы надо определиться... у тебя там Form1 или Form2 ;)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Yanis
Дата 27.3.2007, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

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



Почувствуйте разницу, как говорится smile

Цитата(Agent_Smit @  27.3.2007,  03:19 Найти цитируемый пост)
да и ещё один вопросец.. а можно всё это реализовать через сокеты? 

Можно, если нарвятся трудности, как в изветном анекдоте smile
Но я бы наверное на пайпах сделал.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Agent_Smit
Дата 31.3.2007, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 11.2.2007

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



to Yanis спасибо теперь работает...

а на пайпах как сделать?

и ещё маленький вопрос... как мне из одного проекта из компонерта Image1 перекинуть изображение (в формате bmp) в другой проект, в  базу данных и отобразить  его в компоненте DBImage ??

по возможности ответьте пожалуйста на эти 2 вопроса... буду премного благодарен...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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