1

C ++で記述されたWin32マクロアプリケーションでいくつかの問題をデバッグして解決しようとしていますが、最も奇妙な問題が発生しています。

16ビットプログラムを起動してから、データの入力をシミュレートする必要があり、ShellExecuteを2年以上使用しています。この実際のコードにはまったく触れていませんが、現在は機能しません。

私はやっていShellExecute(NULL, "open", exe_path.c_str(), NULL, "", SW_SHOWDEFAULT);ます。これは何年もの間完璧に機能していましたが、突然、機能しなくなりました。ACCESS_DENIEDエラーコードが表示されます。私はグーグルで検索しましたが、これは16ビットアプリの起動に関するかなり一般的な問題のようです。

ワークステーションXPSP2環境はまったく変更されておらず、少し前に再構築するまで実際に機能していました(何度も再構築しました)。

コードはウィンドウプロシージャ関数内にあり、WinMain関数でプログラムを取り出して起動すると機能しますが、コードはウィンドウプロシージャ内にある必要があります...

私は多くの選択肢を試しましたが、それらはすべて同じ問題を引き起こします。

これに関する最大の問題は、それが機能していたことです。その後、コードと環境の両方に変更を加えることなく、機能しないことが突然決定されました。実際、変更のテストの約半分で、機能しなくなると考えていました。

プログラムを起動しないと何もできませんので、助けてください。これは、私がデバッグしているコードの最初のステップです。

4

1 に答える 1

1

問題を発見しました。lpDirectory関数を使用して、パラメーター(NULLまたはを提供""していた)を実行可能ファイルのディレクトリーに変更しましたPathRemoveFileSpec()

アプリケーションが再び起動しています。これで、プログラムの残りの部分を修正し続けることができます

于 2010-05-06T03:31:54.800 に答える