使用 Mono 发送 Windows 消息

发布于 2024-10-25 04:11:55 字数 116 浏览 1 评论 0原文

是否可以使用 Mono 向其他应用程序发送 Windows 消息 (WM_...)(假设我的应用程序在 Windows 上运行)?另一个相关问题是是否有办法在 Mono 应用程序中使用 DDE?

谢谢!

Is it possible to send windows messages (WM_...) to other applications using Mono (assuming that my app is running on Windows)? Another related question is whether there is any way to use DDE inside a Mono app?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

迷乱花海 2024-11-01 04:11:55

好吧,如果我是你,我会从

  • mono 开始到 winapi32
  • 使用 winapi32 发送 win 消息

所以只需尝试任何“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

well, if I were you I would strarted from

  • mono to winapi32
  • sending win message using winapi32

So just try any "hello_world" sample.
(I haven't mono right now, sorry for this)

For example you may just compile the following code:

(stolen from 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;
}

I suppose it compiles and it doesn't thow DllNotFoundException or EntryPointNotFoundException when you call

MessageHelper.SendMessage(100, 100, new COPYDATASTRUCT());

If you have some issue with this... Hmm.. You may tray to load mscorlib.dll at the runtime.
But this way have bad smell.

Also you may find some details here http://www.mono-project.com/Interop_with_Native_Libraries

娜些时光,永不杰束 2024-11-01 04:11:55

是的,您应该能够像任何其他 Windows 应用程序一样在 Windows 应用程序上向 Mono 发送 WM_* 消息或从 Mono 发送 WM_* 消息。

在 Windows 上运行时,Mono Winforms 会模仿常规 Windows 消息泵并与之集成。

Yes, you should be able to send WM_* messages to and from Mono on Windows applications exactly like any other Windows application.

Mono Winforms imitates and integrates with the regular Windows message pump when running on Windows.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文