Остановить приложение VB от запуска в фоновом режиме

StackOverflow https://stackoverflow.com/questions/1025408

Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

Совершенно неясно, является ли это приложение, которое вы написали, и имеет исходный код. Если это так, вам нужно войти и начать отладку. По крайней мере, используйте OutputDebugString , чтобы отправить информацию о том, что происходит на любое количество потенциальных зрителей. Сделав еще один шаг, рассмотрите возможность перемонтирования приложения с помощью консольного модуля , который я написал вместе с < a href = "http://vb.mvps.org/tools/vbAdvance" rel = "nofollow noreferrer"> vbAdvance для перекомпиляции. Эта комбинация позволит вам полностью отладить среду IDE VB6. Больше не нужно гадать о том, что происходит.

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

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

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

Загрузите монитор процессов SysInternals , и это отобразит доступ к Сбой ProgID (неустановленные / незарегистрированные компоненты COM).

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top