SetForegroundWindow
- отличное решение.Альтернативой является использование именованного Semaphores
для отправки сигналов в другие приложения.
Наконец, вы можете найти решение Inter-Process Communication (IPC)
, которое позволит вам отправлять сообщения между процессами.
Я написал простую библиотеку .Net XDMessaging , которая делает это действительнолегко.С его помощью вы можете отправлять инструкции из одного приложения в другое, а в последней версии даже передавать сериализованные объекты.Это многоадресная реализация, использующая концепцию каналов.
Приложение 1:
IXDBroadcast broadcast = XDBroadcast.CreateBroadcast(
XDTransportMode.WindowsMessaging);
broadcast.SendToChannel("commands", "focus");
Приложение 2:
IXDListener listener = XDListener.CreateListener(
XDTransportMode.WindowsMessaging);
listener.MessageReceived+=XDMessageHandler(listener_MessageReceived);
listener.RegisterChannel("commands");
// process the message
private void listener_MessageReceived(object sender, XDMessageEventArgs e)
{
// e.DataGram.Message is the message
// e.DataGram.Channel is the channel name
switch(e.DataGram.Message)
{
case "focus":
// check requires invoke
this.focus();
break;
case "close"
this.close();
break;
}
}