我正在尝试使用Win32宏应用程序编写的C ++进行调试并解决一些问题,但是我有一个最奇怪的问题。

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

我正在做 ShellExecute(NULL, "open", exe_path.c_str(), NULL, "", SW_SHOWDEFAULT);. 。这已经完美无缺了多年,但突然之间, 它停止工作. 。它为我提供了一个访问权限的错误代码。我已经搜索过,显然这是启动16位应用程序的一个很普遍的问题。

Workstation XP SP2环境根本没有变化,直到不久前我进行重建之前,它实际上一直在工作(我已经在很多时候进行了重建)。

该代码位于窗口过程函数中,当我将其取出并在Winmain函数中启动程序时,代码工作起作用,但是代码必须在窗口过程中...

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

最大的问题是 它正在运行,然后突然认为这不会改变代码和环境! 实际上,通过测试更改的一半是一半,它认为它会停止工作。

请提供帮助,因为如果没有程序启动,我什么也不能做。这是我要调试的代码中的第一步!

有帮助吗?

解决方案

我发现了这个问题。我改变了 lpDirectory 参数(我正在提供的参数 NULL 或者 "")使用可执行文件的目录 PathRemoveFileSpec() 功能。

该应用程序再次启动。 现在 我可以继续修复 休息 程序!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top