问题标签 [winforms-interop]
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.
visual-studio-2010 - 为什么 Interop.WMPLib 在 Release 模式下无法加载程序集,但在 Debug 模式下工作?
我已将 Windows Media Player com 控件添加到我的工具箱中,然后在调试模式下的窗体上成功使用了该控件。
但是,当我尝试在发布模式下运行应用程序时,它会出现错误...
无法加载文件或程序集 'Interop.WMPLib, ... 或其依赖项之一。试图加载格式不正确的程序。
通过一些跟踪,我确定错误不是在创建控件时发生,而是在 EndInit 方法上发生。
我错过了什么?
.net - DisplaySettingsChanging 上的 WPF 互操作死锁
我有一个托管无模式 Win32 表单的 WPF 应用程序。一切运行顺利,直到我将 VNC 连接或分离到机器上。然后应用程序死锁:它不再重绘任何东西,不再对用户交互做出反应。我已经使用 WinDbg 查看了堆栈跟踪:
显然,VNC 附加/分离引发了一个OnDisplaySettingsChanging
事件,该事件又尝试使用 调用某个事件System.Windows.Forms.Control.Invoke
,该事件向主线程发送一条消息,然后等待响应。但是由于这一切都发生在主线程中,消息循环永远不会得到消息,等待永远不会返回。
我找到了一种解决方法EnableSystemEventsThreadAffinityCompatibility
(它基本上绕过了Control.Invoke
调用),但感觉就像一个肮脏的黑客。
有没有人见过这样的事情发生?
是否有人知道为什么当消息到达主(STA)线程时SystemEvents
该类会使用Control.Invoke
(确实如此,我检查过)?
编辑:对评论中问题的回答:
- 在没有 VNC 的情况下更改显示设置(例如 res)时会发生同样的情况吗?-> 没有。
- VNC 上的几个不同版本(包括最新版本)是否会发生同样的事情?-> 我只尝试了最新版本 1.0.9.5。
- 有关 WPF 应用程序、控件或 Win32 控件的任何其他详细信息?-> 有一个 WPF 主窗口和一个无模式的 WinForms 窗体。
vb.net - 来自放置在表单上的 UserControl 上的 UserControl 的 RaiseEvent
我有一个包含自定义控件容器作为 UserControl 的 Windows 窗体。为了这个问题,这个自定义控件容器称为 Dashboard。这个名为 Dashboard 的容器包含许多其他控件,具体取决于它们的权限。我需要通过仪表板控件和 Windows 窗体引发这些控件中包含的事件。
我怎样才能让活动冒泡?我在这个项目中使用 VB.NET,但可以将 C# 转换为 VB.NET。
此外,更复杂的是,主要的 Windows 窗体是一个 VB6 项目。因此,我使用 InteropFormsToolkit 来完成此任务。
c# - 程序集生成失败 - 引用的程序集“Interop.Office”没有强名称
我有一个 WPF 4 项目来与 VS2010 中制作的 word 文档进行交互,还有一个 win 表单用户控制项目来托管 word 应用程序。和其他 com dll。所有 com dll 都被引用到我的主 wpf 应用程序中。我想发布我的项目,以便可以将其安装在另一台机器上并为其执行自动更新,但出现错误:“程序集生成失败 - 引用的程序集 'Interop.Office' 没有强名称。”。每个 COM Dll 的错误。一个 dll 引用(Interop.word.dll、interop.office.dll、interop.VBIDE.dll),所有这些 dll 也被引用并用于我的 wpf 代码。
我发现Strong Signed Assemblies链接有同样的问题,但它不能解决问题。
.net - 带有大字体的 Windows 对话框
我正在咨询一个大型 .Net winforms 项目,该项目必须能够在“触摸”模式下运行,以便可以使用触摸屏界面进行操作。应用程序架构已经包含用于放大标准 .Net 表单和控件上的字体/显示的缩放逻辑,并且自定义控件也处理缩放。
问题是应用程序使用 OpenFileDialog 和 SaveFileDialog,它们不使用相同的逻辑进行缩放(本质上是在递归地调整控件和表单上的 Font 属性的大小)。我相信这些对话框本质上是本机 Windows 对话框,而 OpenFileDialog 类实际上只是封装类,它们公开了一个标准的 .Net 接口以与它们交互。
一种解决方案可能是为这些事情实现自定义对话框,但这可能会有些广泛的工作。我们真正想做的是以某种方式缩放这个特定对话框的字体大小(也许通过一些 P/Invoke 窗口句柄魔术)?
我知道启用触控的一种解决方案是调整 Windows 的字体大小,但这个想法并没有真正受到这家公司的欢迎,他们宁愿扩展应用程序本身,而让操作系统的其余部分保持不变。
那么,关于如何将这些对话框缩放为更大字体的任何经验或想法?还是我们应该硬着头皮为此创建自定义对话框?
c# - 如何检查窗口是否为 MDI 窗口?
我想有一些 user32.dll 调用可以用来验证窗口是否是 MDI 窗口,例如使用 DefMDIChildProc 并查看它是否失败,但我想知道这是否有任何限制,或者是否有更好的方法来做到这一点? 检查父母是否足够?
为简单起见,我最终希望的是一种 IsMDI(IntPtr ptr) 类型的调用......
想法?建议?
c# - 在 Windows 窗体上显示 Windows Media Player(或在 WinFom 上显示进程的输出)
我正在尝试通过 Process.Start 启动 Windows Media Player。我能够启动 wmplayer.exe 并以文件名作为参数来播放文件。但它正在媒体播放器窗口中播放。我需要以我自己的形式向媒体展示。有可能做到吗?MPlayer 是一个开源媒体播放器,有一个名为“-wid”的选项,它将告诉 Mplayer 在我们的表单中显示输出。我正在尝试对 WMP 做同样的事情。
我知道 WMP 有 activex 控件,我们可以将它嵌入到 winforms 中以播放任何视频。但是我遇到了这种方式的一些问题。所以考虑将 WMP 作为一个流程启动并在我的表单上播放媒体。
c# - 前台窗口大小总是错误的
我正在 c# 上编写一个实现鼠标和键盘钩子的程序,一旦单击指定的键,它将去抓取前景窗口并将其 x、y、高度和宽度保存到 xml 文件中。
我不确定出了什么问题,但我不断收到错误的尺寸和错误的参数。
我很感激这方面的帮助,因为我现在已经为此苦苦挣扎了两天。
波纹管是相关代码。
标准声明:
以及相关代码本身
编辑: 我尝试同时使用公共结构 RECT 和 Rectangle,我收到的 RECT 值似乎是随机的,我的意思是 left 和 top 以及 height 和 width,有时它会找到合适的点,但有时它似乎完全是随机的. 我用 Rectangle 收到的值似乎有正确的 left 和 top 但返回错误的高度和宽度。
.net - 最大化时 Winforms 中的 WPF ElementHost 崩溃 (Windows)
我正在尝试将新的 WPF 控件集成到现有的 WinForms 应用程序中,并且我正在使用 ElementHost(Dock-Fill) 来托管以下 XAML UserControl。(.NET 4)
当我将 WinForm 设置为最大化时,我的整个操作系统崩溃了。我已经为我的视频卡更新了最新的 NVidia 驱动程序,但我仍然在 nvlddmkm.sys 中看到了蓝屏。我四处寻找遇到类似崩溃的其他人,但除了“更新视频卡驱动程序”之外没有找到任何其他内容。
UserControl 中指定的 CustomerOrderReadyControl 是用 C# 编写的,但鉴于它只是一个显示 Message 的基本 UserControl,我没有包含它,但如果您认为我应该包含它,请在评论中指定。
当我最大化表单时,是否有我缺少的设置可能导致我的应用程序导致机器蓝屏?鉴于现有应用程序对于渲染应用程序的其他部分非常重 GDI+,是否有任何其他方法可以使这个场景工作?
我的 WinForms 中的 InitializeComponent 子程序就是这么简单。
编辑:附加信息..如果我在纯 WPF 应用程序中托管此控件并最大化 WPF 表单,那么一切正常。
c# - 在 Winforms 主机中托管 DataGridView 时未触发事件
我试图在 WPF 用户控件中托管 Datagridview。datagridview 被添加到构造函数中的 winformshost 中,并且连接了 Enter 和 Leave 事件。Enter 事件在网格第一次获得焦点时触发,但随后不会触发,并且永远不会触发 leave 事件。
有任何想法吗?谢谢