c# - 从窗口句柄获取窗口实例

标签 c# .net wpf

我可以使用以下代码从正在运行的应用程序中获取窗口句柄。

foreach (ProcessModule module in process.Modules)
{
  if (module.ModuleName.Contains("PresentationFramework.dll") || module.ModuleName.Contains("PresentationFramework.ni.dll"))
  {
    IntPtr window = process.MainWindowHandle;
  }
}

但我想从这个处理程序中获取 Window 实例。可能吗?

有什么快速的想法吗?

最佳答案

尝试以下操作:

IntPtr handle = process.MainWindowHandle;

HwndSource hwndSource = HwndSource.FromHwnd(handle);

Window = hwndSource.RootVisual as Window;

更新:

但这只能在同一个 AppDomain 中工作,因为否则这意味着您可以跨不同的 AppDomain 甚至进程共享一个对象,这显然是不可能的。

关于c# - 从窗口句柄获取窗口实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5116429/

相关文章:

c# - 如何使用 C# 将数据插入 SQL 表并实现上传功能?

.net - 使用水平滚动条的滚动面板

.net - MongoDB嵌入文档删除

WPF 客户端通过网络与 WCF Windows 服务通信,可行吗?

c# - 在单元测试中设置 HttpContext.Current.Session

c# - 如何区分用户控件在表单上加载和运行时加载

c# - 对现有 blob 进行编码,而不是从本地文件夹上传

c# - 关于 Entity Framework 和事务的问题

c# - 样式,模板和ResourceDictionaries

c# - 在单个 ListView 中显示多个模型