Jump to content

Вызов DLL из uniGUI-проекта


UniGuy

Recommended Posts

Здравствуйте, уважаемые разработчики и пользователи uniGUI!

Этот насущный, но крайне важный вопрос, заставил меня обратиться к вам за помощью. Использую пробную версию uniGUI, т.к. в случае успешного испытания планирую приобретать продукт.

Мне необходимо вызвать из приложения uniGUI (приложение работает на IIS) свою библиотеку DLL, созданную в обычном приложении Delphi VCL-Application.

Если я создаю проект VCL-Application и вызываю эту DLL оттуда, проблем нет - процедура из DLL вызывается. Но если я пытаюсь проделать то же самое в UniGUI, то вызываемая процедура не выполняется. После вызова процедуры происходит Connection Error.

Процедура из библиотеки просто открывает форму, которая находится в этой же библиотеке. У меня есть ощущение, что сам вызов делаю не правильно. Вот процедура из библиотеки DLL, она показывает форму с именем "OneForm":

procedure ShFrm(AOwner: TComponent);
var MyForm: TOneForm;
begin
  MyForm := TOneForm.Create(AOwner);
  MyForm.ShowModal;
  MyForm.Free;
end;

Вот вызов этой процедуры из uniGUI-приложения:

procedure ShFrm(AOwner: TComponent);
external 'ExampleDLL.dll';

Сам вызов:

ShFrm(UniApplication);

Что здесь я делаю неправильно?

Link to comment
Share on other sites

Здравствуйте,

Спасибо за Ваш интерес к UniGUI.

21 hours ago, UniGuy said:

Процедура из библиотеки просто открывает форму, которая находится в этой же библиотеке.

А что за форма? VCL?

Link to comment
Share on other sites

On 8/12/2021 at 7:09 PM, UniGuy said:

Здравствуйте, уважаемые разработчики и пользователи uniGUI!

Этот насущный, но крайне важный вопрос, заставил меня обратиться к вам за помощью. Использую пробную версию uniGUI, т.к. в случае успешного испытания планирую приобретать продукт.

Мне необходимо вызвать из приложения uniGUI (приложение работает на IIS) свою библиотеку DLL, созданную в обычном приложении Delphi VCL-Application.

Если я создаю проект VCL-Application и вызываю эту DLL оттуда, проблем нет - процедура из DLL вызывается. Но если я пытаюсь проделать то же самое в UniGUI, то вызываемая процедура не выполняется. После вызова процедуры происходит Connection Error.

Процедура из библиотеки просто открывает форму, которая находится в этой же библиотеке. У меня есть ощущение, что сам вызов делаю не правильно. Вот процедура из библиотеки DLL, она показывает форму с именем "OneForm":


procedure ShFrm(AOwner: TComponent);
var MyForm: TOneForm;
begin
  MyForm := TOneForm.Create(AOwner);
  MyForm.ShowModal;
  MyForm.Free;
end;

Вот вызов этой процедуры из uniGUI-приложения:


procedure ShFrm(AOwner: TComponent);
external 'ExampleDLL.dll';

Сам вызов:


ShFrm(UniApplication);

Что здесь я делаю неправильно?

добрый день! Кажется Вам придется переписать свою DLL под uniGUI, так как у вас вызывается  VCL форма.

Link to comment
Share on other sites

On 8/13/2021 at 1:16 PM, Sherzod said:

Здравствуйте,

Спасибо за Ваш интерес к UniGUI.

А что за форма? VCL?

Здравствуйте!

Да, именно это форма VCL. Есть подозрение, что такую форму нельзя открывать из проекта uniGUI. Что мне тогда в этом случае можно сделать?

Link to comment
Share on other sites

2 hours ago, =GGG= said:

добрый день! Кажется Вам придется переписать свою DLL под uniGUI, так как у вас вызывается  VCL форма.

Доброго дня!

А как мне это сделать? Каким образом я могу изменить мою библиотеку DLL в формат библиотеки uniGUI DLL?

Link to comment
Share on other sites

Ну и нафига тебе VCL форма "открывающаяся" на веб сервере?

Людей подобными идеями насмешить?

 

Неужели у тебя есть надежда, что у тебя эта форма в браузерах на клиенте отобразиться? :D

Link to comment
Share on other sites

18 hours ago, rgreat said:

Ну и нафига тебе VCL форма "открывающаяся" на веб сервере?

Людей подобными идеями насмешить?

 

Неужели у тебя есть надежда, что у тебя эта форма в браузерах на клиенте отобразиться? :D

Эту форму мне надо показать на клиенте. Только не в браузере, а обычным Windows-окном.

Link to comment
Share on other sites

Это  невозможно. Вы можете использовать DLL, но невизуальную. VCL форма покажется на сервере и то не во всех случаях.

Вам необходимо изменить логику приложения.

Link to comment
Share on other sites

1 hour ago, stas said:

Это  невозможно. Вы можете использовать DLL, но невизуальную. VCL форма покажется на сервере и то не во всех случаях.

Вам необходимо изменить логику приложения.

А как же быть в том случае, если мне необходимо взаимодействовать со standalone-приложением через визуальную DLL?

Link to comment
Share on other sites

Вы должны написать визуальное приложение, которое вызывает визуальную библиотеку, инсталлировать это приложение на компьютер клиента.

И осуществлять обмен с веб приложением через это визуальное приложение.

Только совершенно не понимаю, какой в этом смысл. 

 

Link to comment
Share on other sites

8 hours ago, stas said:

Вы должны написать визуальное приложение, которое вызывает визуальную библиотеку, инсталлировать это приложение на компьютер клиента.

И осуществлять обмен с веб приложением через это визуальное приложение.

Только совершенно не понимаю, какой в этом смысл. 

 

Спасибо. Я и подумал, что это единственный вариант в таком случае. :)

Он - запасной. Может и не пригодиться. Просто как выход из ситуации.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...