Compact Frameworkでは、(フルスクリーンではないにしても)ユーザーに表示されているフォームがどのフォームであるかをどのようにして知ることができますか?どのようなフォームが上にあるのか調べるには?
アイデア?私は答えを見つけたら(そして誰も反応しない)、探し続けて投稿する。
Compact Frameworkでは、(フルスクリーンではないにしても)ユーザーに表示されているフォームがどのフォームであるかをどのようにして知ることができますか?どのようなフォームが上にあるのか調べるには?
アイデア?私は答えを見つけたら(そして誰も反応しない)、探し続けて投稿する。
例:
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;
}
}
GetForegroundWindowを呼び出して現在のウィンドウを見つけることができるようです。 http://www.pinvoke.net/default.aspx/user32/GetForegroundWindow.htmlから
GetForegroundWindow()が動作しなければなりません。 http://msdn.microsoft.com/en-us/library/aa932991.aspxを見てください。代わりに、Windows CE API用の.NET CFラッパーであるOpenNetCFを使用することもできます。 – fardjad