【发布时间】:2011-07-21 14:54:39
【问题描述】:
是否可以使用 Mono 将 Windows 消息 (WM_...) 发送到其他应用程序(假设我的应用程序在 Windows 上运行)?另一个相关问题是是否有任何方法可以在 Mono 应用程序中使用 DDE?
谢谢!
【问题讨论】:
标签: .net windows mono message-queue sendmessage
是否可以使用 Mono 将 Windows 消息 (WM_...) 发送到其他应用程序(假设我的应用程序在 Windows 上运行)?另一个相关问题是是否有任何方法可以在 Mono 应用程序中使用 DDE?
谢谢!
【问题讨论】:
标签: .net windows mono message-queue sendmessage
是的,您应该能够像任何其他 Windows 应用程序一样在 Windows 应用程序上向 Mono 发送 WM_* 消息或从 Mono 发送消息。
在 Windows 上运行时,Mono Winforms 模仿并与常规 Windows 消息泵集成。
【讨论】:
好吧,如果我是你,我会从
所以只需尝试任何“hello_world”示例。 (我现在还没有单声道,抱歉)
例如,您可以只编译以下代码:
(盗自http://boycook.wordpress.com/2008/07/29/c-win32-messaging-with-sendmessage-and-wm_copydata/)
using System.Runtime.InteropServices;
public class MessageHelper
{
[DllImport("User32.dll")]
public static extern int SendMessage(int hWnd, int Msg, int wParam,
ref COPYDATASTRUCT lParam);
}
//Used for WM_COPYDATA for string messages
public struct COPYDATASTRUCT
{
public IntPtr dwData;
public int cbData;
[MarshalAs(UnmanagedType.LPStr)]
public string lpData;
}
我想它可以编译并且当你调用它时它不会抛出 DllNotFoundException 或 EntryPointNotFoundException
MessageHelper.SendMessage(100, 100, new COPYDATASTRUCT());
如果您对此有任何疑问... 嗯.. 您可以在运行时加载 mscorlib.dll。 但是这种方式有异味。
你也可以在这里找到一些细节http://www.mono-project.com/Interop_with_Native_Libraries
【讨论】: