Tag: interop

Matlab和C#之间的互操作

在浏览互联网之后,看起来可以在C#和Matlab之间进行互操作。 我想知道是否有人取得了成功以及他们做了什么。 如果可能的话,不使用COM就把它拉下来。 谢谢你的时间。

恢复另一个应用程序的最小化窗口

我正在向一个应用程序添加一些代码,如果它还没有运行,它将启动另一个应用程序,或者如果是,请将它带到前面。 这需要少量的interop / WinAPI代码,我已经从其他网站获得了示例,但似乎无法在Win7中工作。 如果窗口处于某种可见状态,则API的SetForegroundWindow方法就像处理一样(这将是主要情况,根据公司策略,如果外部应用程序正在运行它不应该被最小化)。 但是,如果它被最小化(exception但很重要,因为我的应用程序在这种情况下似乎什么也不做),这个方法和ShowWindow / ShowWindowAsync实际上都不会从任务栏中恢复窗口; 所有方法都只是突出显示任务栏按钮。 这是代码; 大多数工作都很好,但是对ShowWindow()的调用(我也尝试过ShowWindowAsync),无论我发送的命令是什么,都不会做我想要的事情: [DllImport(“user32.dll”)] private static extern int SetForegroundWindow(IntPtr hWnd); private const int SW_SHOWNORMAL = 1; private const int SW_SHOWMAXIMIZED = 3; private const int SW_RESTORE = 9; [DllImport(“user32.dll”)] private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); … //The app is named uniquely enough that it can’t […]

如何使用C#列出可用的video模式?

我找到了很好的使用C ++( http://www.codeproject.com/KB/tips/resswitch.aspx )的例子,但没有在C#中找到。 有人可以帮帮忙吗? 编辑:列出video模式的确切function是: BOOL CVideoModes::GetAvailableVideoModes(CAvailableVideoModes& modes) { modes.SetSize(0, 5); int i=0; DEVMODE dm; while (EnumDisplaySettings(NULL, i, &dm)) { CVideoMode thismode(dm.dmBitsPerPel, dm.dmPelsWidth, dm.dmPelsHeight, dm.dmDisplayFrequency); modes.SetAtGrow(i, thismode); ++i; } modes.FreeExtra(); return (i>0); } 但是因为我无法理解C ++代码。 我在哪里可以找到“thismode”function?

哪些阻塞操作导致STA线程泵送COM消息?

当一个COM对象在STA线程上实例化时,该线程通常必须实现一个消息泵,以便为来回调用其他线程(见此处 )。 可以手动泵送消息,或者依赖于某些( 但不是全部 )线程阻塞操作在等待时自动泵送COM相关消息的事实。 文档通常无助于决定哪个是哪个(参见相关问题 )。 如何确定线程阻塞操作是否会在STA上泵送COM消息? 到目前为止的部分清单: 阻塞操作泵*: Thread.Join WaitHandle.WaitOne / WaitAny / WaitAll (虽然无法从STA线程调用WaitAll ) GC.WaitForPendingFinalizers Monitor.Enter (因此lock ) – 在某些条件下 ReaderWriterLock BlockingCollection 阻止不泵送的操作: Thread.Sleep Console.ReadKey (在某处读取) *注意Noseratio的答案说,即使是操作泵,也是为了非常有限的未公开的COM特定消息集。

如何在C#中处理null或者可选的dll struct参数

如何处理使用pinvoke从C#调用的dll方法中的可选struct参数? 例如, 此处的lpSecurityAttributes参数应在缺席时传递为null 。 传递struct的正确方法似乎是使用ref ,但它不能有可选参数,或者一般取null 。 有什么方法可以达到这个目的?

将C#字符串传递给C ++并将C ++结果(字符串,字符*等)传递给C#

我尝试了不同的东西,但我对Interop很生气。 (这里的单词string不是指变量类型,而是“char的集合”):我有一个非管理的C ++函数,在dll中定义,我试图从C#访问,这个函数有一个字符串参数和一个字符串返回值,如下所示: string myFunction(string inputString) { } C ++方面应该是什么字符串? 和C#one? 什么参数需要DllImport呢?