Остановить приложение VB от запуска в фоновом режиме - PullRequest
0 голосов
/ 22 июня 2009

У меня есть консольное приложение (написанное на VB6), которое странно ведет себя на моей машине. Я запускаю его из командной строки, и то, что должно быть двухминутным заданием, сразу возвращается к приглашению - если я запускаю его на другом компьютере, исполняемый файл будет сидеть и ждать, пока задание не завершится, прежде чем вернуть управление обратно в приглашение. Если я проверю проводник процессов, то увижу, что исполняемый файл работает как фоновый процесс, а кроме этого странного фонового режима работает как ожидалось.

Есть мысли о том, почему это может происходить? (Работает на 32-битной Windows XP Pro SP3.)

Ответы [ 3 ]

3 голосов
/ 23 июня 2009

Совершенно неясно, является ли это приложение, которое вы написали, и имеет исходный код. Если это так, вам нужно войти и начать отладку. По крайней мере, используйте OutputDebugString , чтобы отправить информацию о том, что происходит, любому числу потенциальных зрителей. Сделав еще один шаг, рассмотрите возможность перемонтирования приложения с помощью Консольного модуля , который я написал, вместе с vbAdvance для перекомпиляции. Эта комбинация позволит вам полностью отладить среду IDE VB6. Больше не нужно гадать о том, что происходит.

Опять же, если это не ваше приложение, я не уверен, что VB6 имеет к нему отношение, и желаю вам удачи, пытаясь выяснить, в чем дело.

1 голос
/ 23 июня 2009

Мне кажется, что приложение не распознается как консольное приложение на одной из ваших машин. Консольные приложения не были официально поддержаны в VB6, хотя для их создания существуют некоторые известные хаки (в частности, бесплатная надстройка vbAdvance ). Возможно, ваше консольное приложение немного ненадежно? Если Windows считает ваше приложение графическим интерфейсом, а не консольным приложением, оно не будет ждать его завершения.

В качестве прагматического обходного пути: попробуйте запустить с start / wait , а не просто с помощью exename. Это заставляет командную строку ждать завершения программы, будь то приложение с графическим интерфейсом или консольное приложение.

0 голосов
/ 22 июня 2009

Похоже, что произошла ошибка, которая «проглатывается» приложением. У вас есть исходный код?

Ошибки в приложениях VB6 часто возникают из-за того, что некоторые компоненты COM не установлены и / или не зарегистрированы.

Скачать SysInternals Process Monitor , и это покажет доступ к ProgID, которые не работают (неустановленные / незарегистрированные компоненты COM).

Проверить: Process Monitor - практические занятия и примеры .

Вы проверили разрешения? Получает ли приложение доступ к каким-либо сетевым ресурсам?

...