2

Windows 7 (VM バージョンではありません) の XP 互換モードで実行する必要があるプログラム (これを 1 つのカタログと呼びましょう) があります。ただし、カタログを起動する別のプログラム(Autodesk Voloviewer)は、XP 互換モードでの実行を好まないため、ユーザーが終了すると、まったく終了しない傾向があります。VB6 から互換モードを継承しないプログラムを起動する方法はありますか?


私は advapi32.dll がここに関与しなければならないという卑劣な疑いを持っていますが、私はベースから外れている可能性があります.

ありがとう。

4

1 に答える 1

0

使ってみましたCreateProcessか?次のナレッジベース記事を参照してください: http://support.microsoft.com/kb/129797 .

dwCreationFlags で CREATE_NEW_PROCESS_GROUP を設定してみてください。

Private Const CREATE_NEW_PROCESS_GROUP As Long = &H200&

lSuccess = CreateProcess(sNull, _
                                 "Calc.exe", _
                                 ByVal 0&, _
                                 ByVal 0&, _
                                 1&, _
                                 NORMAL_PRIORITY_CLASS or CREATE_NEW_PROCESS_GROUP, _
                                 ByVal 0&, _
                                 sNull, _
                                 sInfo, _
                                 pInfo)

または、ここで説明されているように、新しいプロセスを作成する前に、環境変数 __COMPAT_LAYER を空にリセットしてみてください: http://support.microsoft.com/kb/286705

Public Declare Function SetEnvironmentVariable Lib "kernel32.dll" Alias "SetEnvironmentVariableA" _
    (ByVal lpName As String, ByVal lpValue As String) As Long

SetEnvironmentVariable("__COMPAT_LAYER", "")

または、 を使用して独自の環境設定を渡すこともできますCreateProcess

于 2014-06-26T12:16:44.913 に答える