问题标签 [window-handles]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ui-automation - GUI 自动化测试 - 窗口句柄问题
我们公司目前正在为紧凑型框架应用编写一个GUI自动化测试工具。我们最初搜索了许多工具,但没有一个适合我们。
通过使用该工具,您可以记录测试用例并将它们组合到测试套件中。对于每个测试套件,都会生成一个应用程序,该应用程序启动被测应用程序并模拟用户输入。
一般来说,该工具工作正常,但由于我们使用窗口句柄来模拟用户输入,所以你不能做很多事情。例如,我们不可能获得控件的名称(我们只获得标题)。
使用窗口句柄的另一个问题是检查更改。目前我们模拟一个控件的点击,根据结果我们知道应用程序是否已经进入下一步。
有没有其他(更简单)的方式来做这些事情(例如消息队列或其他任何东西)?
.net - 从 .NET 应用程序中抓取和移动应用程序窗口?
.NET 应用程序是否可以获取当前打开的所有窗口句柄,并移动/调整这些窗口的大小?
我很确定它可以使用 P/Invoke,但我想知道是否有一些用于此功能的托管代码包装器。
c# - Winforms 问题 - 创建窗口句柄时出错
我们在 Winform 应用程序中看到此错误。任何人都可以帮助您了解为什么会看到此错误,更重要的是如何修复它或避免它发生。
c# - 如何处理 C# 应用程序中的“创建窗口句柄时出错”错误?
我已经看过这个问题,并且我已经检查了那里提出的建议。我的程序创建和销毁了很多 UI 控件(很多UI 控件),任何使控件在“销毁”后仍然存在的东西都会导致这个问题。(有趣的事实:如果你在销毁它的容器之前没有将ToolStrip
控件的Visible
属性设置为 false,它不会被释放,因为它仍然在 Windows 中注册以接收主题更改事件;它只会在它不可见时取消注册,并且它显然无法知道在其容器被销毁时会发生这种情况。)
问题是,我的应用程序实际上有可能真的用完了窗口句柄。该程序有一个包含嵌套选项卡控件的表单。每个父选项卡有 12 或 13 个子选项卡,一个子选项卡上可以有 30 或 40 个控件。用户很可能在任何给定时间打开 15 个父选项卡,这进入了应用程序中 5000 多个实时控件的领域。而且我知道我的许多控件使用多个窗口句柄。
(在你说“好吧,看起来你的 UI 设计错了”之前,让我先放弃这一点:应用程序存在的全部原因首先是用户拥有巨大的数据空间,他们需要能够快速导航到。选项卡内的选项卡实际上对他们非常有效。)
我的理解是每个应用程序有 10,000 个窗口句柄的硬性限制。如果这确实是真的(我知道很多事情是真的而不是真的),那么我将不得不管理我的应用程序对它们的使用。例如,当我开始在窗口句柄上运行不足时,我可以丢弃最近最少使用的选项卡的内容。
但是我怎么知道我已经开始在窗口句柄上运行不足?这真的是解决问题的正确方法吗?
(这只是我想在 WPF 中重建此 UI 的众多原因之一。)
macos - Mac OS X:一个进程可以渲染到另一个进程的窗口吗?
问候!
我目前正在将 Web 浏览器插件从 Win32 移植到 MacOSX。该插件的一个特点是,当插件被加载时,它会产生一个单独的进程,作为插件的“引擎”,并在插件的窗口中执行绘图操作(具体来说,通过将 OpenGL 上下文附加到父进程的窗口并在该上下文中执行 OpenGL 渲染命令)。我们这样做是因为插件通常作为浏览器进程中的线程加载,因此插件中的崩溃会导致整个浏览器崩溃。通过将“繁重的工作”划分为一个单独的进程并保持插件代码非常精简,我们可以保护用户免受此类崩溃的影响。
我想在 MacOSX 上保留这种子进程渲染器架构,但我听说过一个令人讨厌的谣言(与 Google Chrome 网络浏览器有关),即 MacOSX 不允许进程将对其窗口的访问权交给另一个进程. 我自己在这个领域的搜索一直没有结果。如果有人对这个问题有任何了解,并且可以就如何实现这一目标提供一些建议,或者提供更明确的“无法完成”,那将非常有帮助。
感谢您的帮助!
c# - 我可以在没有窗口的情况下发送/接收窗口消息吗?
我正在围绕我们拥有的旧的基于 MFC 的库编写一个 .NET 包装器。它基于一个使用窗口消息发送通知的类;它有一个功能,可以让用户将句柄传递给窗口,该窗口将接收消息。
我可以只要求我的包装器的用户子类化Control
并传递他们的控件句柄以接收消息,但这太可怕了。我希望我的包装类具有在旧库发送消息时触发的事件,然后我可以将消息解码为合理的东西。但是,我不希望我的包装类必须是一个控件。
有没有办法让我创建一个“虚拟”窗口句柄,并接收发送到该句柄的消息,而不创建一个窗口?
c# - 如何从 Windows 窗体创建仅消息窗口?
我正在尝试在 winforms 应用程序中创建一个仅消息窗口来接收来自 MFC 库类的窗口消息。
我尝试过 subclassing NativeWindow
,并在构造函数中请求这样的窗口句柄:
但我得到一个 Win32Exception 抛出消息“错误创建窗口句柄”。如何从 Windows 窗体创建仅消息窗口?是否使用NativeWindow
了正确的方法?
c# - 如何获取控制台应用程序窗口的句柄
有人可以告诉我如何在 C# 中获取 Windows 控制台应用程序的句柄吗?在 Windows 窗体应用程序中,我通常会尝试this.Handle
.
c# - 从 C# 修改任何窗口的不透明度
是否可以从 C# 修改所有打开的窗口的不透明度。我用谷歌搜索最小化窗口,我知道它可以通过 pInvoke 调用。它甚至奏效了。同样,是否可以从 C# 更改所有打开的窗口的不透明度?
另外,我不喜欢 MFC 的东西。仍然有任何工具可以了解 dll 中公开的 api 列表吗?
c# - C#启动进程后获取窗口句柄
有没有办法在使用 Process.Start() 从 C# 应用程序启动窗口后获取窗口句柄 (IntPtr)?