是否可以使用Mono将Windows消息(WM _...)发送到其他应用程序(假设我的应用程序在Windows上运行)?另一个相关的问题是在Mono应用程序中是否有任何方法使用DDE?用Mono发送Windows消息
谢谢!
是否可以使用Mono将Windows消息(WM _...)发送到其他应用程序(假设我的应用程序在Windows上运行)?另一个相关的问题是在Mono应用程序中是否有任何方法使用DDE?用Mono发送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;
}
我想它编译它不thow DllNotFoundException或EntryPointNotFoundException当你调用
MessageHelper.SendMessage(100, 100, new COPYDATASTRUCT());
如果你有一些问题,这个...嗯..您可以在运行时加载mscorlib.dll。 但这种方式有难闻的气味。
而且你可能会发现这里的一些细节http://www.mono-project.com/Interop_with_Native_Libraries
是的,你应该能够发送WM_ *消息,并从单上的Windows应用程序完全像任何其他Windows应用程序。
Mono Winforms在Windows上运行时模仿并集成常规的Windows消息泵。
这个问题有点模糊不清。 我不知道你已经拥有了什么以及你实际需要什么。 例如,您应该在窗口上接收处理程序,以便接收您的消息。 也可能你想注册自己的窗口消息。 或者,如果您确定您的程序将用于WinXp或更高版本,则只能尝试使用mscorlib.dll [](http://msdn.microsoft.com/zh-cn/library/system.runtime.interopservices。 allowreversepinvokecallsattribute%28v = VS.90%29.aspx) 等等))) – VMykyt 2011-03-23 21:07:09
谢谢。这似乎工作,即使我使用GTK#工具包,对吗? (对不起,我是新手)。谢谢! – brian 2011-03-23 22:07:07
正确。 GTK#只是一个框架。有些时候我玩混合单声道组件与MS.NET程序集。这工作得很好。 另一方面,由于您使用GTK#,因此看起来像您希望跨平台应用程序。在这种情况下,你可能不得不使用类似动态加载的东西。我不确定你的应用程序在Linux上的p/invoke行为。 – VMykyt 2011-03-23 22:21:33