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;
}
}
덕분에, 그것은 – SMUsamaShah
이 SetForegroundWindow의 제한에 대해 생각해보십시오 제공. 어떤 프로세스에서든 창을 앞으로 가져올 수는 없습니다. 참조 : http://msdn.microsoft.com/en-us/library/ms633539(v=vs.85).aspx –
두 인스턴스가 같은 창 이름을 가질 때 어떻게 전환됩니까? – SMUsamaShah