Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача данных из одного приложения в другое


Страницы:   1 2 3

Pasha L ©   (2005-08-05 19:22:00) 

Вопрос: можно ли из одного приложения в другое передать данные не создавая для этого временного файла? (D6 WinXP)


Джо   (2005-08-22 04:24:00) [1]


>  [42] Defunct ©   (22.08.05 04:13)

Для Pasha L оказалась непонятной сама идея обработчиков событий, а не стиль Борланд :) А в MS -- функции могут с маленькой буквы писать :-P
--
По мне так просто не проедешься ;)


Defunct   (2005-08-22 04:13:00) [2]

Джо ©   (22.08.05 04:00) [40]
> Всего лишь стараюсь придерживаться стандарта Борланд.

стиль borland, оказалься для Pasha L, пока непонятен. Да и imho он неправильный, в MS не так. Обработчик должен называться обработчиком. автоматически сгенерированный коментарий в VC:
// CMainFrame message handlers

сорри, что моя фраза проехалась по тебе ;>


Джо   (2005-08-22 04:02:00) [3]


> Pasha L ©  

Насчет "вызывания" обработчика уже самое главное сказал [39] Defunct ©  — остальное в Справке. А для "вызывания" предназначена процедура SendString, как я и указал в примере.


Джо   (2005-08-22 04:00:00) [4]


>  [39] Defunct ©   (22.08.05 03:51)
> да, но это Джо непраильно ее назвал. Она должна называться
> например "ObrabotchikWmCopyData" или "WMCopyDataHandler".

Всего лишь стараюсь придерживаться стандарта Борланд.
Ср.:

 TCustomForm = class(TScrollingWinControl)
 private
 ...
   procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
   procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND;
   procedure WMIconEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ICONERASEBKGND;
   procedure WMQueryDragIcon(var Message: TWMQueryDragIcon); message WM_QUERYDRAGICON;
 ...


Defunct   (2005-08-22 03:51:00) [5]

Pasha L ©   (16.08.05 18:04) [27]
Процедура wmcopydata для того чтобы "вывести наружу" полученное послание, так вроде.

да, но это Джо непраильно ее назвал. Она должна называться например "ObrabotchikWmCopyData" или "WMCopyDataHandler".

WM_COPYDATA это не процедура. это сообщение Windows.



> А что надо указывать при вызывании этой процедуры на месте аргемента var Message: TMessage?

ее не нужно вызывать, она будет сама вызываться, когда окну придет вышеуказанное сообщение.


ps: сорри если повторил чей-то ответ.


Defunct   (2005-08-22 03:43:00) [6]

SpyBoy ©   (21.08.05 21:43) [37]

дурь какая-то.
если в компоненте есть процедура с названием ничинающимся со слова GET, то место такого "компонента" на помойке.


SpyBoy   (2005-08-21 21:43:00) [7]

На http://sources.ru/delphi/sendkeys.zipлежит компонент, описание такое:
Посылаем нажатия клавиш другому приложению.
Автор: Gert v.d. Venis
Скачайте компонент Sendkeys

Описание:
Данный компонент получает хэндл(handle) любого запущенного окна и даёт возможность отправить по указанному хэндлу любые комбинации нажатия клавиш.

Совместимость: Все версии Delphi
 Собственно сам исходничек:
После того, как проинсталируете этот компонент, создайте новое приложение и поместите на форму кнопку и сам компонент SendKeys. Добавьте следующий код в обработчик события OnClick кнопки:

procedure TForm1.Button1Click(Sender: TObject);
begin
 // Запускаем Notepad, и ему мы будем посылать нажатия клавиш
 WinExec('NotePad.exe', SW_SHOW);
 // В параметре процедуры GetWindowHandle помещаем
 // текст заголовка окна Notepad'а.
 SendKeys1.GetWindowHandle('Untitled - Notepad');
 // Если хэндл окна получен успешно, то отправляем ему текст
 if SendKeys1.WindowHandle <> 0 then
   SendKeys1.SendKeys('This is a test');
 // Так же можно отправить код любой кнопки типа
 // RETURN, используя следующий код:
 // SendKeys1.SendKeys(Chr(13));
end;

---------------------------------

Неправда ли весело :)


Lin7   (2005-08-17 17:28:00) [8]


> наверняка в сети где-нибудь выложена

Например здесь:   http://alexsoft.home.nov.ru/download/prog/

> Pasha L ©

Почитай, очень полезно - ответишь сам на свой вопрос, причём несколькими способами.


alpet   (2005-08-17 17:01:00) [9]

Pasha L ©   (17.08.05 16:46) [34]
Ну как не ясно. Для того чтобы понимать и читать на русском языке надо выучить его сначала (несколько классов начальной школы). То же самое и с программированием, дабы понимать теминологию и предлагаемые решения, нужно освоить азы. Чтобы стать Windows программистом, по форумам вопросы отнюдь недостаточно задавать, надо еще и книги по теме читать. Одну книгу я уже тебе указал, если не хочешь купить бумажную, наверняка в сети где-нибудь выложена.


Pasha L   (2005-08-17 16:46:00) [10]

Ясно короче что ничего не ясно


Игорь Шевченко   (2005-08-17 14:42:00) [11]

Pasha L ©   (17.08.05 12:18) [31]


> Спасибо, но свободно я говорю только по-русски :-)


Это ведь вряд ли проблемы отвечающих ?


alpet   (2005-08-17 12:49:00) [12]

Pasha L ©   (17.08.05 12:18) [31]
Это намек, на то что все английские термины нужно перевести, и снабдить описанием? Увольте сэр, это форум программистов, а не первоклассников. Проекции файлов, и сообщения достаточно простые по себе, но если уж хочется на родном языке почитать, рекомендую найти книгу "Windows для профессионалов" Дж. Рихтера, в ней все прекрасно расписано.


Pasha L   (2005-08-17 12:18:00) [13]

Спасибо, но свободно я говорю только по-русски :-)


alpet   (2005-08-17 09:12:00) [14]

Resume:
Если производительность не важна - WM_COPYDATA (как наиболее простое), если важна - FileMapping (одну секцию можно использовать многократно, а при небольшом размере данные возможно не будут покидать кэш L1).


Slym   (2005-08-17 05:08:00) [15]

IPC в демосах - очень популярно расписано


Игорь Шевченко   (2005-08-16 18:40:00) [16]

y-soft ©   (07.08.05 18:52) [26]


> При реализации Named Pipe'ов Windows для связи обычно использует
> как раз сокеты


При реализации Named Pipes Windows использует объекты File, как ни странно, и сетевой редиректор, если Pipe проложен между разными компьютерами. А какой транспортный протокол будет работать - это уже несущественно :)


Pasha L   (2005-08-16 18:04:00) [17]

Джо ©   (06.08.05 02:38) [8]
Воспользовался вашим способом, только вот одно не понял. Процедура wmcopydata для того чтобы "вывести наружу" полученное послание, так вроде. А что надо указывать при вызывании этой процедуры на месте аргемента var Message: TMessage? Буду очень признателен, если объясните.


y-soft   (2005-08-07 18:52:00) [18]

>Alexander Panov ©   (07.08.05 18:31) [25]

Один из недостатков сокетов - скорость, которая несравнима по сравнению с остальными методами

При реализации Named Pipe'ов Windows для связи обычно использует как раз сокеты, и только если они недоступны, использует другие способы :)


Alexander Panov   (2005-08-07 18:31:00) [19]

3DxFantastika ©   (07.08.05 18:28) [24]

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


3DxFantastika   (2005-08-07 18:28:00) [20]

забыл   (07.08.05 18:13) [21]

> сокеты не дело - ибо файрик ругнется

это так, но сокеты идеальны если в будующем планируется выполнение программ на разных компьютерах - проблемы уже не будет, сокеты универсальны и позволяют передавать данные в любую точку Интернета (TCP протокол)


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо