![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача данных из одного приложения в другое
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 протокол)