1

我正在尝试使用 C++ 编写的 Win32 宏应用程序来调试和解决一些问题,但是我遇到了最奇怪的问题。

我必须启动一个 16 位程序,然后模拟输入数据,并且使用 ShellExecute 已经两年多了。我根本没有接触过这个实际的代码,但现在它不起作用。

我在做ShellExecute(NULL, "open", exe_path.c_str(), NULL, "", SW_SHOWDEFAULT);。这多年来一直完美无缺,但突然之间,它停止了工作。它给了我一个 ACCESS_DENIED 错误代码。我在 Google 上搜索过,显然这是启动 16 位应用程序时非常常见的问题。

工作站 XP SP2 环境根本没有改变,它实际上一直在工作,直到我不久前重建(我之前已经重建过很多次)。

代码位于窗口过程函数中,当我将其取出并在 WinMain 函数中启动程序时,它可以工作,但代码必须在窗口过程中......

我尝试了许多替代方案,但它们都给出了相同的问题。

最大的问题是它正在工作,然后突然决定它不会改变代码和环境!事实上,它认为它会停止工作的测试更改大约进行到一半。

请帮忙,因为没有程序启动我什么都做不了。这是我正在调试的代码的第一步!

4

1 回答 1

1

我发现了这个问题。我使用该函数将lpDirectory参数(我提供的NULL"")更改为可执行文件的目录PathRemoveFileSpec()

应用程序再次启动。现在我可以继续修复程序的其余部分了!

于 2010-05-06T03:31:54.800 回答