skumarop Ответов: 1

Как вызвать EXE-файл vb6.0 из c#.net приложение windows


У меня есть приложение vb6.0, и мне нужно вызвать его из c#. Process.start прекрасно работает для этого, но очень медленно для каждого вызова. Можно ли загрузить vb6.0 exe, когда приложение c# загружается в первый раз, и выполнить его, когда это необходимо, чтобы избежать этой задержки.
На самом деле передача данных между приложениями не является проблемой. Просто нужно вызвать vb6 exe (GUI) файл из приложения c#. Даже простая форма vb6 (exe) при вызове из Visual studio (приложение c# win) занимает минимум 4 секунды, чтобы загрузить форму с помощью proccess.start()

Что я уже пробовал:

MyvbApplication.свойство StartInfo.Имя Файла = "MEDICURE.exe";
MyVbapplicatkion.свойство StartInfo.Аргументы = "Регистрация Пациента";
MyVbApplication.свойство StartInfo.CreateNoWindow = true;
MyVbApplication.Начать();

1 Ответов

Рейтинг:
4

OriginalGriff

Нет, потому что вам нужно передать аргументы приложению, и они читаются только тогда, когда приложение чувствует себя таковым - обычно, когда оно включается.

Я бы предположил, что самым простым решением было бы изменить приложение VB6 для поддержки межпроцессных коммуникаций Межпроцессные коммуникации - приложения для Windows | Microsoft Docs[^] и посмотрите, сможете ли вы получить сокет или аналогичный запуск между ними.


skumarop

На самом деле передача данных между приложениями не является проблемой. Просто нужно вызвать vb6 exe (GUI) файл из приложения c#. Даже простая форма vb6 (exe) при вызове из Visual studio (приложение c# win) занимает 4 секунды, чтобы загрузить форму с помощью proccess.start

OriginalGriff

Вот почему вам нужно изменить его на использование коммуникаций: запуск приложения всегда будет медленным (насколько медленным, зависит от размера приложения и того, что оно делает при запуске).
Единственный способ избавиться от задержки-не перезапускать приложение каждый раз, когда оно вам нужно, а это означает общение с приложением вместо того, чтобы открывать его каждый раз, когда оно вам нужно.

skumarop

Именно это мне и нужно. Спасибо.
Не могли бы вы привести какой-нибудь пример межпроцессного взаимодействия для справки.

OriginalGriff

Перейдите по ссылке, которую я дал в ответе - вам нужно изменить как ваш VB6 (для которого у меня больше нет компилятора, так как он мертв уже более 15 лет, поэтому я не могу дать вам код), так и ваш код C#, чтобы заставить их говорить.

skumarop

Большое спасибо.