Вопрос

Я пытаюсь отладить и разрешить некоторые проблемы с помощью приложения Macro Win32, написанные C ++, однако у меня есть самый странный выпуск.

Я должен запустить 16-битную программу, а затем имитировать ввод данных и использовать Shellexecute уже более двух лет. Я совсем не коснулся этого реального кода, но теперь это не работает.

я делаю ShellExecute(NULL, "open", exe_path.c_str(), NULL, "", SW_SHOWDEFAULT);. Отказ Это работало безупречно годами, но вдруг, Он перестал работать. Отказ Это дает мне код ошибки Access_dened. Я гугул и, по-видимому, это довольно распространенная проблема с запуском 16-битных приложений.

Рабочая станция XP SP2 среда вообще не изменилась, и она на самом деле работала до тех пор, пока я не перестроен некоторое время назад (я перестроил его до многих раз).

Код находится внутри функции процедуры окна, и когда я вынимаю его, и запустите программу в функции WinMain, которая работает, но код должен быть в окне ...

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

Самая большая проблема с этим Он работал тогда внезапно решил, что он не собирался без изменений как к коде и окружаю! На самом деле, это было примерно на полпути через тестирование изменений, что она думала, что он перестанет работать.

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

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

Решение

Я обнаружил проблему. Я изменил lpDirectory параметр (из которых я поставлял NULL или "") к каталогу исполняемого файла, используя PathRemoveFileSpec() функция.

Приложение снова запускается. Сейчас Я могу продолжать исправлять отдых программы!

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