标签: winforms-interop

我可以将数据从 Winforms 传递到 WPF 控件吗?

我有一个 winforms 应用程序,但我想在该应用程序中引入一个 WPF 用户控件,作为进一步 WPF 实现的品尝者。

该控件需要从其主机接收一条信息,即字符串。如何将其从 Winforms 应用程序传递到托管控件?

或者说,我确实可以吗?

c# wpf controls winforms-interop

2
推荐指数
1
解决办法
2422
查看次数

从窗口获取线程ID

我需要使用此代码从运行时创建的窗口获取线程 ID

System.Windows.Window MyWindow = new System.Windows.Window();
MyWindow.Show();
Run Code Online (Sandbox Code Playgroud)

我正在使用窗口处理程序

IntPtr WindowHandle = (new WindowInteropHelper(MyWindow)).Handle;
Run Code Online (Sandbox Code Playgroud)

如何从窗口或其相应的处理程序中获取线程 ID?

c# winforms-interop winforms

2
推荐指数
1
解决办法
7034
查看次数

为什么在关闭表单之前调用 FormDeactivate?

我有一个使用 Excel Interop 生成 Excel 电子表格的 Winforms 应用程序。

当我尝试以这种方式保存工作表时:

_xlBook.SaveAs(filename, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Run Code Online (Sandbox Code Playgroud)

...它会失败,告诉我,“ System.Runtime.InteropServices.InvalidComObjectException 未处理 HResult=-2146233049 Message=COM 对象已与其底层 RCW 分离,无法使用。

不过,这没有多大意义——我并没有对线程之类的东西做任何花哨的事情;这是一个非常简单的香草实用程序。代码中唯一引用 _xlBook 的其他地方是:

1)

private Excel.Workbook _xlBook;
Run Code Online (Sandbox Code Playgroud)

2)

_xlBook = _xlApp.Workbooks.Add(Type.Missing);
Run Code Online (Sandbox Code Playgroud)

3)

_xlSheets = _xlBook.Worksheets;
_xlSheet = (Excel.Worksheet)_xlSheets.Item[1];
Run Code Online (Sandbox Code Playgroud)

4)

_xlBook.Close(false);
Marshal.ReleaseComObject(_xlBook);
Run Code Online (Sandbox Code Playgroud)

_xlBook 被处理的最后一部分是从表单的 Deactivate 事件调用的,它是:

private void FormMain_Deactivate(object sender, EventArgs e)
{
    DeinitializeExcelObjects();
}
Run Code Online (Sandbox Code Playgroud)

问题是(我在所有引用 _xlBook 的地方放置断点后发现的)FormMain_Deactivate() 在 _xlBook.SaveAs() 被调用之前被调用,当点击“运行”按钮时调用。

一旦我在 FormMain_Deactivate() 中注释掉对 DeinitializeExcelObjects() 的调用,并在调用 _xlBook.SaveAs() 之后立即调用它,它就可以正常工作 - …

c# excel-interop winforms-interop winforms

2
推荐指数
1
解决办法
271
查看次数

如何在ac#win表单应用程序中捕获键盘敲击(CTRl + alt + Del)

有没有办法处理Ctrl+ Alt+ Del组合键.例如,在测验应用程序(Win Forms)中,用户在测试结束之前不应该切换到其他窗口.

我可以使用c#标准属性单独捕获CtrlAlt击键.但是一旦他们用户点击了Del密钥.控件不在我的应用程序中,窗口处理它.

任何想法都会有所帮助.

谢谢.

.net c# vb.net winforms-interop winforms

1
推荐指数
1
解决办法
4472
查看次数

如何以编程方式禁用网络摄像头二极管

在我的笔记本电脑(戴尔)中,使用网络摄像头时会发出强烈的蓝色二极管光,这让我很恼火。

我正在考虑禁用它。你知道有什么库或方法可以关闭这个二极管灯吗?

c# c++ programming-languages winforms-interop

1
推荐指数
1
解决办法
1万
查看次数

使用c#获取在其他应用程序的文本框中输入的文本

我整天都在和这件事打架.我仍然无法找到确切的解决方案.帮帮我.

我的目标非常简单.我想得到其他应用程序的文本框中的文本.它可能是gtalk客户端或soap UI屏幕的文本框.

我用谷歌搜索,大多数论坛建议winapi是我必须用来实现这一目标的概念.我从来没有使用过这个概念,也没有得到任何好的例子.请帮助我解决这个问题,并完成这件事.有没有其他方法来实现这一目标?

等待你的回应...

.net c# api winapi winforms-interop

0
推荐指数
1
解决办法
1万
查看次数