1

私のごく普通の MFC ベースの Windows アプリケーションは、Windows 7 で正常に動作します。しかし、Windows 8 で実行すると、UI が表示されません。最初はどういうわけか正しく起動していないと思っていましたが、最終的に、タスク マネージャーを起動すると、アプリケーション実行されていることを示しているのに、「バックグラウンド プロセス」セクションの下にリストされていることに気付きました。

「バックグラウンド プロセス」であると判断するプロセスで Windows 8 が実行しているヒューリスティックは何ですか? または、おそらくアプリケーション マニフェストで、アプリケーションをフォアグラウンドプロセスとして明示的にラベル付けするためにできることはありますか?

Win7 および XP 互換モードで実行しようとしましたが、役に立ちませんでした。いくつかの Win8 マシンを試しましたが、すべて同じ結果が得られました。

このアプリは Visual Studio 2003 でコンパイルされており、新しいコンパイラを使用するオプションはありません。

「win8 バックグラウンド プロセス」のようなものをグーグルで検索しましたが、バックグラウンド プロセスを作成したい人しか得られません。一部の回答は、アプリケーション マニフェストを使用してバックグラウンド プロセスを登録する必要があることを示唆していますが、マニフェストを再確認したところ、バックグラウンド プロセスであることについては何も含まれていません。

これが私のマニフェストです。何かが見えない場合に備えて:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
<assemblyIdentity 
    version="1.0.0.0" 
    processorArchitecture="X86" 
    name="MyProductName"
    type="win32" 
/> 
    <description>My Product Description</description> 
    <dependency> 
        <dependentAssembly> 
            <assemblyIdentity 
                type="win32" 
                name="Microsoft.Windows.Common-Controls" 
                version="6.0.0.0" 
                processorArchitecture="X86" 
                publicKeyToken="6595b64144ccf1df" 
                language="*" 
            /> 
        </dependentAssembly> 
    </dependency> 
    <asmv3:trustInfo xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
        <asmv3:security>
            <asmv3:requestedPrivileges>
                <asmv3:requestedExecutionLevel level="asInvoker" uiAccess="false" />
            </asmv3:requestedPrivileges>
        </asmv3:security>
    </asmv3:trustInfo>
</assembly>

ここで回答が見つからない場合は、Microsoft にサポート インシデントを開いて助けを求める予定です。その時点まで到達したら、この質問を見つけたもので更新します。

4

2 に答える 2

4

私はWindows8アプリケーションを開発していますが、MFC開発の知識はあまりありません。したがって、私の知識に基づくと、MFC開発はSilverlight開発に似ていますが、Windows8開発はMFC開発プラットフォームとは異なります。

ちなみに、「Win 8のバックグラウンドプロセスの分類」:

サスペンドモードにあるアプリケーションのプロセス。つまり、アプリケーションは実行されていますが、デスクトップモードのためにUIが表示されていません。 この点について自分自身を明確にするために、XAMLとC#によってwin 8でトレッドを作成してもう一度確認し、そのスレッドをサスペンドモードのように作成しました。そのときだけ、そのプロセスはタスクマネージャーでバックグラウンドプロセスとして表示されます。

さらに、「特にWindows 8のみ」

アプリに提供されるリソースが減少するか、それらのリソースをd-allocateするが、アプリケーションがロードされて実行されている場合、アプリのプロセスはバックグラウンドプロセスとして表示されます...

Windows 8のこの機能は、「自動リソース割り当て」として知られています...

ここで答えが見つからない場合は申し訳ありませんが、これは「どのプロセスがWin8のバックグラウンドプロセスとして分類されているか」を知るのに役立つと思います

于 2013-02-15T12:06:41.030 に答える
1

これに関するドキュメントが見つからないため、これは私の側の純粋な推測ですが、MFCで何かが失敗していると思われ、UIが機能していないため、タスクマネージャーがアプリをバックグラウンドプロセスとして分類しています。ユーザーはそれと対話することができません。

于 2013-02-15T00:52:24.747 に答える