Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2016, 14:33   #1
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию Передача управления формы в другой процесс

Доброго времени суток! Имеется следующая задача:
Есть форма TForm, и отдельный процесс, который знает полное описание данной формы. Из другого процесса на котором находится данная форма требутется либо послать сообщение(либо любые ваши варианты) другому процессу, который узнает о форме из процесса, которое получил из сообщения, и сделает там что-нибудь, например мне требуется там создать TEdit.

Реально ли такое сделать вообще?
Winexcel вне форума Ответить с цитированием
Старый 09.11.2016, 14:36   #2
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

что такое "отдельный процесс", "знает полное описание данной формы"?
come-on вне форума Ответить с цитированием
Старый 09.11.2016, 14:49   #3
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
что такое "отдельный процесс", "знает полное описание данной формы"?
Отдельный процесс означает следующее:
Код:
var
  StartUpInfo: TStartUpInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartUpInfo, SizeOf(TStartUpInfo), 0);
  with StartUpInfo do
  begin
    cb := SizeOf(TStartUpInfo);
    dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
    wShowWindow := SW_SHOWNORMAL;
  end;
  CreateProcess(nil,PWideChar(Application.ExeName+'здесь я передаю параметры которые мне возможно нужны'), nil, nil, true,
  NORMAL_PRIORITY_CLASS, nil, nil,
  StartUpInfo, ProcessInfo);
end;
Знает полное описание формы означает: то что этот процесс может создать экземпляр этой формы.
Winexcel вне форума Ответить с цитированием
Старый 09.11.2016, 14:54   #4
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

нда, для чего такое надо даже и ума не приложу
но IPC описано вдоль и поперек https://ru.wikipedia.org/wiki/%D0%9C...B2%D0%B8%D0%B5
выбирайте на вкус

и еще https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Последний раз редактировалось come-on; 09.11.2016 в 14:57.
come-on вне форума Ответить с цитированием
Старый 09.11.2016, 15:01   #5
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
нда, для чего такое надо даже и ума не приложу
но IPC описано вдоль и поперек https://ru.wikipedia.org/wiki/%D0%9C...B2%D0%B8%D0%B5
выбирайте на вкус

и еще https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Про отправку сообщений(Send/Post/ThreadMessage), либо разделяемая память(CreateFileMapping ), я немного знаю, интересует именно как осуществить доступ к TForm.
Через handle возможно? Или как по другому? Для примера - можем даже абстрагироваться от разных процессов, и работать с одним и тем же.

Последний раз редактировалось Winexcel; 09.11.2016 в 15:04.
Winexcel вне форума Ответить с цитированием
Старый 09.11.2016, 15:16   #6
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Другими словами - можно ли через handle(либо через что-то другое), получить доступ к окну на таком же уровне как обращение к экземпляру класса TForm, как-будто процесс этот сам создал этот экземпляр
Winexcel вне форума Ответить с цитированием
Старый 09.11.2016, 15:31   #7
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Вот это решение работает в одном процессе https://msdn.microsoft.com/ru-ru/lib...v=vs.110).aspx,

Код:
var
  Control:TWinControl;
begin
  Control:=FindControl(HWND(StrToInt(edit2.text)));
  if Control is TForm then
    TForm(Control).Caption := 'Test';
Но если вписать хендл формы из другого процесса, то заголовок не изменится(проблема не в установке заголовка, а в получении полного доступа как в коде выше)
Winexcel вне форума Ответить с цитированием
Старый 09.11.2016, 15:36   #8
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

какой доступ?
или то что в ссылках, или внедрение в другой процесс, первое проще
come-on вне форума Ответить с цитированием
Старый 09.11.2016, 15:38   #9
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
какой доступ?
или то что в ссылках, или внедрение в другой процесс, первое проще
Ну я хочу допустим на форме разместить TEdit, как мне это сделать?
Winexcel вне форума Ответить с цитированием
Старый 09.11.2016, 15:39   #10
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

уже все сказано
come-on вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу помочь - передача управления между объектами внутри формы IgorSHV Microsoft Office Excel 3 22.10.2015 19:12
передача значения переменной одной формы в описание переменной другой diekster Общие вопросы Delphi 14 18.05.2014 02:42
передача с другой формы Geni Общие вопросы Delphi 5 15.12.2013 15:08
Передача управления по SetFocus promer Компоненты Delphi 6 11.03.2010 13:47
Управления другой программой terminadoor Win Api 3 14.07.2008 10:49