2012-11-26 6 views
8

「古い」時代、私はWindowsユーザーのためのシンプルなツールを作成しました。シンプルなツールは、コンピュータの前で何をしているのかを追跡します(単純なアクティビティモニタ)。私はWin32 APIを使用していて、GetForegroundWindow、GetWindowThreadProcessIdなどの機能を持っていました。WinRTアプリケーションの追跡方法(Win32では単純でした)?

昨日私は新しいWindows 8をインストールしてプログラムを実行するのに疲れました。私は50%の成功を収めています。「古典的な」デスクトップでは常にそうです:) 。WWAHost :(任意の詳細なし

だから私の質問は次のとおりです:私は1つのアプリケーションだけを持って、メトロUIについては ?メトロUIでアクティブなアプリケーションを追跡するためのいずれかの方法があり、ヘルプ

ため おかげ

UPDATE: 私はWin32からMetro UIアプリケーションにアクセスしようとしています。別のMetroアプリケーションからMetroアプリケーションにアクセスすることは不可能です。

+0

GetPackageFullNameまたはGetApplicationUserModelIdを試して、うまくいけばWindows Web Appsの曖昧さを解消できましたか? –

+0

@DwayneRobinsonこのメソッドはどのように使うべきですか? –

答えて

0

Windows 8 'Metro'では、1つのアプリケーションだけが有効です。最上位のアプリケーションが実行されている間、他のアプリケーションはすべて一時停止状態になります。これにより、m現在実行中の他のアプリケーションをオンタリオにする。

numerous articles on the Windows 8 app lifecycleを参照してください。

+0

+1、私は*理由*としてそれを記述しません。その理由は、OSがWinRTアプリからその情報を隠すように設計されているからです。 *複数の*または*異なる*アプリケーションが実際に実行されているかどうかに関係なく、WinRTアプリケーションのビジネスはありません。 –

+1

しかし、デスクトップ版のWindowsでは、「古典的な」アプリケーションをWinRTアプリケーションと並行して実行しています。つまり、「クラシック」win32から、ユーザーが何をしているのかアクセスできますか? –

+0

Garathは、現在実行中のMetro™/ Modern©/Lollipop®アプリをWin32プログラムから取得する方法を探していますが、別のロリポップアプリではありません。 – efotinis

1

WinRTでは、アプリケーションが最上位のアプリケーションであることがわかります。あなたのアプリが一番上のアプリケーションではない場合、スレッドは中断され、カーネルはあなたのアプリに対してこれ以上の操作をスケジュールしません。物語の終わり。

これは、達成したいことがWinRTで実行できないことを意味します。デスクトップにアクセスできる常駐アプリやサービスのように思っています。これらのアプリには2つの利点があります。 1)彼らは常に実行されています。そして、2)彼らはあなたがしたいことをするためのAPIを持っています。

WinRTは、アプリケーションをサンドボックスに意図的に置き、ユーザーの操作性、パフォーマンス、バッテリ寿命を保護します。あなたのシナリオやスコアは、デスクトップアプリケーションの継続的な必要性を強調しています。 (限り、これらのタイプのアプリケーションの継続的なニーズがある限り))。

申し訳ありませんが、これは悪いニュースです。

他のアプリを列挙するためのものです。これも不可能です。別のアプリがインストールされているか、実行中かどうかはわかりません。プロトコルのアクティベーションやファイルアクティベーション、または(ある意味で)シェア契約を通じて、別のアプリに呼び出すことができます。しかし、あなたがメッセージを受け取ったかどうか、およびユーザーが最初にインストールしたかどうかはあなたが気づいていません。これは設計によるものです。

WinRTアプリケーションでWin32 APIにピンボケすることができます。それは多くの問題を引き起こし、頭痛を起こして店舗に認定されることがあります。しかし、それでもすべてのAPIがあなたに公開されているわけではありません。この特定のユースケースは非スターターであることがわかります。

+0

私はこれをアップデートで書きました:私はWinRTからWinRTではなくWin32 APIからWinRTにアクセスしようとしています –

関連する問題