이 question은 (는) 중복 된 것으로 표시되었습니다. 그리고이 질문에 그 질문에 대한 대답이 있다고 결정한 사람들. 글쎄,이 질문에는 어떤 대답도 아직 없습니다. 내 대답이 도움이 될지도 모른다. 이 솔루션은 WPF와 함께 작동하지만 그 본질은 실제로 WPF의 indepent입니다
나는 재미있는 주제로 조금 연구했습니다. Win32를 사용하여이 작업을 수행 할 수 있다고 생각합니다. 매우 간단한 샘플을 만들었습니다. 두 개의 WPF 응용 프로그램, 처음에는 WpfSender, 두 번째 이름은 WpfListener입니다. WpfSender는 WpfListener 프로세스에 메시지를 보냅니다.
WpfSender에는 클릭 한 번만 메시지를 보내는 버튼 하나만 있습니다. WpfListener는 WpfSender에서 메시지를받을 때 메시지 상자를 표시하는 빈 창입니다. 여기
여기
이
using System;
using System.Windows;
using System.Windows.Interop;
namespace WpfListener
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
{
HwndSource source = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
source.AddHook(WndProc);
}
private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
if (msg == RF_TESTMESSAGE)
{
MessageBox.Show("I receive a msg here a I can call the method");
handled = true;
}
return IntPtr.Zero;
}
private const int RF_TESTMESSAGE = 0xA123;
}
}
WpfListener
코드입니다 당신은 윈도우 응용 프로그램에서 메시지를 보내는에서 Win32 API를 사용 WpfSender
using System;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Windows;
namespace WpfSender
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
var process = Process.GetProcessesByName("WpfListener").FirstOrDefault();
if (process == null)
{
MessageBox.Show("Listener not running");
}
else
{
SendMessage(process.MainWindowHandle, RF_TESTMESSAGE, IntPtr.Zero, IntPtr.Zero);
}
}
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SendMessage(IntPtr hwnd, uint Msg, IntPtr wParam, IntPtr lParam);
private const int RF_TESTMESSAGE = 0xA123;
}
}
에 대한 뒤에 코드 XAML은 여기에 작성하지 않으므로 아주 간단합니다. 다시 이것은 간단한 응용 프로그램 메시지 전송을 수행하는 방법을 보여주는 간단한 샘플입니다. 한계는 당신의 상상력입니다. 각각의 액션을 나타내는 많은 int 상수를 선언 할 수 있으며, switch 문에서 선택한 액션을 호출 할 수 있습니다.
나는 내 연구에서 발견 된이 기사 따를 것을 말해야한다 :이 도움이
For knowing how to handle WndProc in Wpf
For knowing how to send messages using win32 api
희망을!
저는 MyWrapper, MyApp 및 MyHook을 제어합니다. 명명 된 파이프를 수행하는 데 좋은 정보가 있습니까? –
검색의 비트는 나를 여기에 : http://www.omegacoder.com/?p=101, 당신이 얻는 것을 위해, 조금 복잡하게 보입니다. 아마 소켓 접근 방식으로 갈 것입니다. –