Больше не могу запускать 16-битное приложение - PullRequest
1 голос
/ 06 мая 2010

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

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 06 мая 2010

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

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

...