Topic: Запуск приложения в форме

Дмитрий Здравствуйте!!!
Интересует вопросик, возможно ли запустить приложение, чтобы оно было размещено внутри формы, а не отдельным окном,
чтоб можно было им пользоваться промо из Form1...

OpenFile('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories\Calculator.lnk');

рис.прилагается!

Post's attachments

Attachment icon Скриншот 13-12-2016 174803.png 29.3 kb, 246 downloads since 2016-12-13 

Re: Запуск приложения в форме

Знаю что,если это касается именно калькулятора, то его можно сделать в самом mvb, просто занеся математические действия.

Re: Запуск приложения в форме

Можно, добавил такую возможность в последней бета версии, пожалуйста скачайте ее
https://www.dropbox.com/s/1y0jek64gzfdy … a.zip?dl=0


Пример:

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
    h: integer;
    Max: integer;
begin
      // run calculator
      OpenFile('calc.exe');

      // finding window's calculator
      h := 0;
      Max := 20;
      while (h = 0) and (Max > 0) do
      begin
          h := FindWindow('', 'Calculator'); // find window using caption
          Dec(Max);
          Sleep(50);
      end;

      // move the calculator to the Form1
      if h <> 0 then
      begin
          SetWindowPos( h, 0, 10, 10, 0, 0, SWP_NOSIZE); // set position x=10, y=10
          SetParent( FindWindow('', 'Calculator'), Form1.Handle);
      end;
end;


В принципе таким образом можно разместить на своей форме любое приложение, зная его заголовок либо класс окна.

Dmitry.

Re: Запуск приложения в форме

Дмитрий СПАСИБО за оперативность РАБОТАЕТ...НО!!!!
Возможно...
-закрепить открытое приложение  на ФОРМЕ наглухо...,
что бы можно было тоскать форму,  а приложение не убегало???

Re: Запуск приложения в форме

RZ-007 wrote:

Дмитрий СПАСИБО за оперативность РАБОТАЕТ...НО!!!!
Возможно...
-закрепить открытое приложение  на ФОРМЕ наглухо...,
что бы можно было тоскать форму,  а приложение не убегало???

Не совсем понял, а куда оно убегает?

Dmitry.

6 (edited by RZ-007 2016-12-14 23:15:34)

Re: Запуск приложения в форме

DriveSoft wrote:

Не совсем понял, а куда оно убегает?

Кода на Форме1 расположен к примеру "TWebBrowser"...
при перемещении Формы по рабочему столу "TWebBrowser" строго закреплён на  Форме1...!!!
А ту-точки...такая картина...рис.прилагается!

Post's attachments

Attachment icon Скриншот 15-12-2016 015217.png 309.9 kb, 292 downloads since 2016-12-15 

Re: Запуск приложения в форме

RZ-007
Странно, у меня не хочет убегать обратно из формы. Приложите ваш проект пожалуйста. И какая версия Windows у вас?

Dmitry.

Re: Запуск приложения в форме

DriveSoft wrote:

RZ-007
Странно, у меня не хочет убегать обратно из формы.  И какая версия Windows у вас?

Здравствуйте Дмитрий!!!
У меня Windows 7...на ней не закрепляется в окне!!!
Попробовал на линуксе - работает!!!

Re: Запуск приложения в форме

Дмитрий здравствуйте!
При попытке запуска тестового проекта созданного в версии 3.1  со скриптом (который вы привели выше)

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
    h: integer;
    Max: integer;
begin
      // run calculator
      OpenFile('calc.exe');

      // finding window's calculator
      h := 0;
      Max := 20;
      while (h = 0) and (Max > 0) do
      begin
          h := FindWindow('', 'Calculator'); // find window using caption
          Dec(Max);
          Sleep(50);
      end;

      // move the calculator to the Form1
      if h <> 0 then
      begin
          SetWindowPos( h, 0, 10, 10, 0, 0, SWP_NOSIZE); // set position x=10, y=10
          SetParent( FindWindow('', 'Calculator'), Form1.Handle);
      end;
end;


Выдает ошибку: Undeclared identifier 'SetWindowsPos'
Пользуюсь Windows 10

Re: Запуск приложения в форме

Igor
Скачайте пожалуйста последнюю бета версию
https://www.dropbox.com/s/1y0jek64gzfdy … a.zip?dl=0

Dmitry.

Re: Запуск приложения в форме

DriveSoft wrote:

Igor
Скачайте пожалуйста последнюю бета версию
https://www.dropbox.com/s/1y0jek64gzfdy … a.zip?dl=0

Дмитрий, скачал потестил все работает. Но появилось несколько вопросов:
1. Можно ли закреплять запускаемое приложение не только в самом окне формы но и например на панели формы. Что то наподобие TWebBrowser

Re: Запуск приложения в форме

Igor
Можно, скачайте пожалуйста бета версию
https://www.dropbox.com/s/1y0jek64gzfdy … a.zip?dl=0


Разместите на форме панел Panel1


Строку

SetParent( FindWindow('', 'Калькулятор'), Form1.Handle);  

замените на

SetParent( FindWindow('', 'Калькулятор'), Form1.Panel1.Handle);  
Dmitry.

13 (edited by Igor 2018-05-03 20:32:53)

Re: Запуск приложения в форме

Дмитрий, здравствуйте.
Точно помню что запуск приложения на форме отлично работал, но до поры до времени в этом функционале не было острой необходимости. Теперь же на версии MVDB 4.3, запуск приложения производится, но без закрепления на форме проекта. В чем может быть проблема. (Windows 10)
Ваш пример когда-то использованного кода

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
    h: integer;
    Max: integer;
begin
      // run calculator
      OpenFile('calc.exe');

      // finding window's calculator
      h := 0;
      Max := 20;
      while (h = 0) and (Max > 0) do
      begin
          h := FindWindow('', 'Calculator'); // find window using caption
          Dec(Max);
          Sleep(50);
      end;

      // move the calculator to the Form1
      if h <> 0 then
      begin
          SetWindowPos( h, 0, 10, 10, 0, 0, SWP_NOSIZE); // set position x=10, y=10
          SetParent( FindWindow('', 'Calculator'), Form1.Handle);
      end;
end;

Re: Запуск приложения в форме

Проверил на Win7 - всё работает. Обратите внимание на название окна, которое вы хотите закрепить.

http://f5.s.qip.ru/pgTu2DMN.jpg

Создание приложений https://sites.google.com/view/my-visual-database
Курсы программирования https://vk.com/createmyvisualdatabaseapp

Re: Запуск приложения в форме

k245 wrote:

Проверил на Win7 - всё работает. Обратите внимание на название окна, которое вы хотите закрепить.

http://f5.s.qip.ru/pgTu2DMN.jpg

Константин, уже все перепроверил. Код в сообщении выше - это для примера. Дело в том что раньше , на Win10 работало, теперь ни в какую.

Re: Запуск приложения в форме

Да, действительно, на Win10 не работает sad  Могу лишь предположить, что это как-то связано с системой безопасности Win10 и теперь добраться до чужого процесса стало сложней..
P.S. я в шоке - в Win10 калькулятор на пол-экрана 8-()

Создание приложений https://sites.google.com/view/my-visual-database
Курсы программирования https://vk.com/createmyvisualdatabaseapp