是否可以使用Mono将Windows消息(WM _...)发送到其他应用程序(假设我的应用程序在Windows上运行)?另一个相关的问题是,是否有任何方法可以在Mono应用程序中使用DDE?
谢谢!
答案 0 :(得分:2)
好吧,如果我是你,我会偏离
所以只需尝试任何“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或EntryPointNotFoundExceptionMessageHelper.SendMessage(100, 100, new COPYDATASTRUCT());
如果您对此有一些问题...嗯..您可以托盘在运行时加载mscorlib.dll。 但这种方式有难闻的气味。
此外,您可以在http://www.mono-project.com/Interop_with_Native_Libraries
找到一些详细信息答案 1 :(得分:2)
是的,您应该能够在Windows应用程序上向Mono发送WM_ *消息,就像任何其他Windows应用程序一样。
在Windows上运行时,Mono Winforms会模仿并集成常规Windows消息泵。