我创建了一个 Windows 窗体应用程序。我想从另一个应用程序中获取该应用程序中的处理表单(当前表单)。因为(第一个)应用程序由多个表单组成,我想知道哪个表单正在处理/活动。
问问题
4199 次
2 回答
0
使用其他应用程序?
那么app B必须访问app A的处理表单吗?在运行时,A 和 B 是不同的进程,不是吗?所以应用程序 A 应该公开一种可从应用程序 B 访问的侦听套接字和一个具有诸如GetCurrentForm()
. 因此应用 B 可以向套接字发送请求并获取响应。我想出这样的事情。
参考:
于 2012-10-11T08:53:25.700 回答
0
检索前台窗口(用户当前正在使用的窗口)的句柄。
C#签名:
/// <summary>The GetForegroundWindow function returns a handle to the foreground window.</summary>
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
和来自 pinvoke 的示例代码:
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;
}
}
于 2012-10-11T09:37:18.983 回答