问题标签 [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.
wpf - 在 WPF 中使用 ActiveX 控件
我正在尝试在 WPF 应用程序中托管 ActiveX 控件。在尝试使用网络和此处的现有信息后,我遇到了死胡同。
我需要使用提供的 ActiveX 控件与UV 功率计进行通信。它们提供了一个注册和使用控件的应用程序,甚至包括一些有用的演示应用程序。如果需要,我删除了 OCX 文件并将其放在这里。您将无法与功率计交谈,但应用程序和演示仍将成功加载 ActiveX 控件。
我创建了一个简单的 Windows 窗体应用程序。我能够将 ActiveX 控件放入工具栏中,将其放入我的表单中,一切都很好。他们提供的演示应用程序也可以做到这一点。
但是,让它在 WPF 环境中工作是另一回事。无法将控件添加到工具箱并“拖动”到应用程序中。
到目前为止,我已经尝试了两种技术:
- 技术在这里找到。我可以添加对控件的引用,但随后我进入了命名空间地狱。它建议制作的 xmlns:ax 命名空间找不到信息。这是我根据对象查看器告诉我的尝试:
xmlns:ax="clr-namespace:OphirUsbXLib;assembly=Interop.OphirUsbXLib"
- 技术在这里找到。这本质上是创建一个新项目,该项目创建一个基于 Windows 窗体的库,其中包含 ActiveX 控件(yikes)。我可以添加 Windows 窗体主机,但无法访问其中的 ActiveX 控件。我可以公开控件,但我仍然不能调用方法等。这看起来不是正确的解决方案。
简而言之,我有一个 ActiveX 控件,它在 Forms 中工作得很好,但在 WPF 中工作却是一个真正的婊子。
任何见解表示赞赏!
wpf - 如何将 WPF 对话框添加到 Winforms 项目
我正在使用面向 .net 3.5 框架的 Visual Studio 2008。我需要将 WPF 对话框添加到 Winforms 项目。我在想,通过添加对 PresentationCore、PresentationFramework 和 WindowsBase.dll 的引用并将 WPF 对话框从测试 WPF 项目复制到有问题的 WinForms 项目应该可以解决问题,但之后当我尝试在设计器中打开 WinForms 对话框工作室时只是崩溃并关闭。所以基本上问题是如何将 WPF 对话框添加到 WinForms 项目?谢谢
.net - Winform->WPF MVVM 键绑定错误?
从 WinForm 应用程序调用 WPF KeyBindings 时,我需要一些帮助。我已经创建了我认为是演示问题的基本部分。如果有帮助,我可以提供一个示例应用程序。
WinForm 应用程序启动一个表单,该表单有一个调用 WPF 的按钮
使用 WPF 视图创建它的视图模型并设置键控:
ViewModel 使用 DelagateCommand 希望将所有内容链接起来
谁能看到哪里出了问题,按键什么也没做?!?
winforms - AxShockwaveFlash com 组件的停止方法 thorws 试图读取或写入受保护的内存
我正在使用 AxShockwaveFlash com 组件在 Windows 应用程序中显示 Flash 文件。
,我调用方法 Stop() 来停止该闪光。
但是有些用户抛出异常“尝试读取或写入受保护的内存,这通常表明其他内存已损坏”。
请让我知道为什么少数用户会发生这种情况。
提前致谢。
wpf - 在多个 WindowsFormsHost 控件中跟踪 WPF 鼠标移动
我有一个具有多个 WindowsFormsHost 控件的 WPF 应用程序。当我的应用程序在全屏模式下最大化时,我试图跟踪它在我的应用程序中的位置。如果用户将鼠标放在顶部屏幕附近,我想显示一个带有附加菜单的窗口。
我可以用:
- Window.PreviewMouseMove
- InputManager.PreProcessInput,甚至
- HwndSource.FromHwnd(WindowInteropHelper(mainWindow).Handle).AddHook(...)
只要鼠标没有在 WindowsFormsHost 上移动,就接收移动事件(如果用户这样做,我不会收到事件)。我认为根本问题是因为 WPF 为每个 WindowsFormsHost 使用单独的 HWND。
有没有一种好方法可以跟踪我的应用程序中的鼠标移动,而无需手动查找每个 WindowsFormsHost 并订阅其鼠标移动事件?如果可能的话,我还想避免使用全局 Windows 鼠标侦听器。
email - 打开 Lotus Notes 邮件页面而不从 .NET 发送
我想从 WinForm (.NET) 应用程序在 Lotus Notes 中打开一个新的电子邮件页面(我知道我知道,我也讨厌它......)。现在,我发现这个使用 Interop.Domino.dll 非常有用。我对其进行了一些调整,并且可以正常工作。不幸的是,我不希望发送电子邮件。我只需要用我给它的正文打开一个新的邮件窗口,但没有“收件人”......
我知道Notes问题在这里的回复率不高,但我还是试试看。
谢谢 !
c# - 如何以编程方式禁用网络摄像头二极管
在我的笔记本电脑(戴尔)中,当使用网络摄像头时,强烈的蓝色二极管灯让我很恼火。
我正在考虑禁用它。您知道关闭此二极管灯的任何库或方法吗?
vb.net - 仅消息窗口不接收 PostMessage
我有一个第三方制作的 Vb.net 应用程序,我需要使用模拟环境中的外部资源进行控制,并且不能与桌面交互。为了模拟用户通常从带有特定键的特殊屏幕输入的输入,我构建了一个测试控件库来控制它并将表单图像发送到 .bmp。表单不可见并显示在任务栏中,bmp输出将由模拟环境显示。
只要我不使用 PostMessage 和 sendKeys 就可以很好地工作,但 ShowInTaskbar = False 对于主表单。经过多次阅读和测试,我已经学到了足够多的东西来尝试似乎唯一可行的方法。我创建了一个我使用 HWND_MESSAGE 参数设置父级的表单,这应该创建一个仅消息窗口,它应该接收 postMessage,并将其子类化为事件。微软的。
不幸的是,我似乎无法让它工作,我希望有人能告诉我我做错了什么。我已经测试了几种通过网络找到的关于 .net 的不同方法,并且没有进入消息线程偷看和提要(也许(也许是)我最后的希望),它们似乎都可以工作,直到我将表格从任务栏中取出。
好的,下面是代码:
MsgOnly.vb
DllImport("user32.dll", SetLastError:=True,CharSet:=CharSet.Auto)> _ Public Shared Function SetParent(ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr End Function
私有共享 HWND_MESSAGE As IntPtr = New IntPtr(-3)
表单中的部分子类化(不能显示比处理子类化、隐私问题的更多内容。希望这就足够了)
测试表格
不太确定我现在可以提供哪些其他细节。我还没有找到任何想法或方法?
感谢您的任何意见
wpf - 如何使用 WindowsFormHost 专注于 WPF
我有这个简单的设置:
三个文本框,两个 WPF 和一个 WinForm。我无法在我想要的两个 WPF 文本框之间移动焦点,但我可以将焦点移动到 WinForm 文本框。PreviewLostKeyboardFocus
从 WPF 文本框移动到 WinForm 文本框时,甚至不会触发该事件。为什么以及如何解决这个问题的任何线索?
编辑
我注意到WindowsFormsHost.PreviewGotKeyboardFocus
当焦点再次离开 WindowsFormsHost 时首先触发。那很奇怪。也许这是一个错误?
.net - AppDomain 是如何创建的?
在 .Net 中,我们可以通过编写来创建 AppDomain
我的问题是,它是如何在内部创建的?我们在其中使用此代码的应用程序运行在与我们创建的新应用程序域不同的 appDomain 中,因此一个 AppDomain 如何创建另一个 AppDomain 以及 clr 如何决定在哪个 appDomain 中创建哪些应用程序域。