У меня есть два приложения, и мне нужно отправить «текстовые сообщения» между ними. Я пробовал PostMessage, но я могу только отправлять числа. Я использую lParam для переноса сообщения, и если я его изменю на string
, я все равно получаю только цифры. Можно ли даже отправить строку, и если да, то как?Как отправить строку в другое окно?
код ниже:
public const int HWND_BROADCAST = 0xffff;
public static readonly int WM_TEST = RegisterWindowMessage("WM_TEST");
[DllImport("user32")]
public static extern bool PostMessage(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam);
[DllImport("user32")]
public static extern int RegisterWindowMessage(string message);
код для отправки сообщения:
int message = 1234567890;
PostMessage((IntPtr)HWND_BROADCAST, WM_TEST, IntPtr.Zero, (IntPtr)message);
И получить сообщение:
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_TEST)
{
textBox1.AppendText(m.LParam.ToString() + Environment.NewLine);
}
base.WndProc(ref m);
}
Так что вопрос еще раз: как я могу отправить string
между два приложения?
Спасибо!
Проверьте [this] (https://gist.github.com/BoyCook/5075907) вне - особенно 'sendWindowsStringMessage'. – Zer0
Именованные трубы, MSMQ, даже сокеты - всего лишь несколько способов высокого уровня для этого, я бы избегал сообщений с низким уровнем сообщений, если у вас есть контроль над реализацией в обеих программах. –
Если вы маршалируете это правильно, вы можете отправить строки без проблем. Я думаю, что это пример Zer0. – MicroVirus