2010-11-29 8 views
2

Compact Frameworkでは、(フルスクリーンではないにしても)ユーザーに表示されているフォームがどのフォームであるかをどのようにして知ることができますか?どのようなフォームが上にあるのか調べるには?

アイデア?私は答えを見つけたら(そして誰も反応しない)、探し続けて投稿する。

+0

GetForegroundWindow()が動作しなければなりません。 http://msdn.microsoft.com/en-us/library/aa932991.aspxを見てください。代わりに、Windows CE API用の.NET CFラッパーであるOpenNetCFを使用することもできます。 – fardjad

答えて

1

例:

public ApplicationState AppState 
{ 
    get 
    { 
     Process[] processCollection = Process.GetProcessesByName(ProcessName); 
     if(processCollection != null && processCollection.Length >= 1 && 
      processCollection[0] != null) 
     { 
      IntPtr activeWindowHandle = Win32.GetForegroundWindow(); 
      //Optional int ProcessID; 
      //Optional Win32.GetWindowThreadProcessId(GetForegroundWindow(),out ProcessID) 
      foreach(Process wordProcess in processCollection) 
      { 
       //Optional if(ProcessID == wordProcess.Id) return ApplicationState.Focused; 
       if(wordProcess.MainWindowHandle == activeWindowHandle) 
       { 
        return ApplicationState.Focused; 
       } 
      } 
      return ApplicationState.Running; 
     } 
     return ApplicationState.NotRunning; 
    } 
} 
関連する問題