Как узнать какая форма сверху? - PullRequest
2 голосов
/ 30 ноября 2010

Как в Compact Framework узнать, какая форма является формой, отображаемой для пользователя (даже если она не в полноэкранном режиме)?

Есть идеи? Я буду продолжать искать и отправлять сообщения, если найду ответ (и никто не ответит).

Ответы [ 2 ]

1 голос
/ 30 ноября 2010

пример из http://www.pinvoke.net/default.aspx/user32/GetForegroundWindow.html:

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;
    }
} 
0 голосов
/ 30 ноября 2010

Похоже, что вы можете p / вызвать GetForegroundWindow, чтобы найти текущее окно.

...