Запустите внешний exe-файл в рамках собственного процесса - PullRequest
2 голосов
/ 25 февраля 2011

У меня есть исполняемый файл VB6, который мы используем в качестве исполняемого файла Starter для нашей реальной программы.

Проблема в том, что в Windows 7 отображается новый значок на панели задач для нового процесса вместо того, на котором я щелкнулзапустить мою программу (конечно, потому что стартовый exe уже закончился, а новый exe выглядит как новая программа).

В настоящее время я использую объект Shell для запуска другого exe.Есть ли лучший способ сделать это из vb6, возможно, с помощью встроенной функции C с объявлением, которое запускает exe-файл в текущем процессе, не вызывая новый процесс?

EDIT:

Спасибо atzz за отличную информацию об идентификаторах моделей приложений.Теперь у меня есть ярлык для запуска моего приложения с четко определенным идентификатором, и мое приложение также устанавливает идентификатор при запуске, и теперь оно легко доступно с правого значка на панели инструментов.Однако сохраняются две проблемы:

  1. Приложение представляет собой приложение Java, запущенное с Exe4J, и у меня нет никаких шансов установить AppID до того, как Exe4J покажет заставку, поэтому при отображениина заставке есть второй значок на панели задач.

  2. Если я не перетаскиваю значок моего начального приложения с рабочего стола на панель инструментов, а вместо этого использую значок моих приложений и задаюэто должно быть "липким", настоящее приложение залипает, а не пусковая установка.

Обе проблемы были бы прекрасно решены, если бы моя программа запуска запустила приложение из своего собственного процесса.Я слышал что-то об использовании exec () вместо fork () для программ linux для достижения этой цели ... Есть ли что-то подобное для windows?

Ответы [ 2 ]

5 голосов
/ 25 февраля 2011

Я полагаю, что есть способ выполнить то, что вам нужно, с помощью API панели задач Windows 7, хотя я сам никогда этого не делал и, таким образом, недостаточно четко помню, что я читал по этому вопросу.Ознакомьтесь с концепцией Application ID .

Некоторые ссылки:

2 голосов
/ 25 февраля 2011

Если проблема в значке, почему бы не дать обеим программам один и тот же значок (и одно и то же название приложения). Тогда пользователь не сможет определить разницу между двумя записями панели задач. Предположительно, они оба не видны одновременно.

В качестве альтернативы можно настроить, чтобы ваше стартовое приложение не отображалось на панели задач (свойство формы ShowInTaskbar = False в представлении дизайна)

...