Отправить сообщения Windows с Mono - PullRequest
1 голос
/ 23 марта 2011

Можно ли отправлять сообщения Windows (WM _...) в другие приложения, используя Mono (при условии, что мое приложение работает в Windows)?Другой связанный с этим вопрос - есть ли способ использовать DDE внутри приложения Mono?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 24 марта 2011

Да, вы должны иметь возможность отправлять сообщения WM_ * в и из Mono в приложениях Windows точно так же, как и в любом другом приложении Windows.

Mono Winforms имитирует и интегрируется с обычным насосом сообщений Windows при работе в Windows.

2 голосов
/ 23 марта 2011

ну, на вашем месте я бы перешел от

  • моно к winapi32
  • отправив сообщение о выигрыше, используя winapi32

Так что попробуйте любой "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

...