c#
[autoHotKey/c#] 오토핫키와 c#을 이용한 화면 교체(change Topmost) with udp
개발자 고포고
2024. 3. 6. 18:36
반응형
[autoHotKey/c#] 오토핫키와 c#을 이용한 화면 교체(change Topmost)
프로젝트 진행 중 UDP 신호에 따라서 사용프로그램 두개를 교체해야되는 이슈가 생겨서 AutoHotKey를 이용하여 해결하였다.
1.화면 최상위처리(AutoHotKey)
비발디브라우저를 최상위를 가져오는건데 해당 프로세스 정보를 정확히 가져오기위해서는 Autohotkey Dash에 있는 Window Spy를 이용하여 해당 프로세스를 확인 한 뒤 스크립트를 작성하였다.
# 1번 프로그램 최상위로 가져오기
-브라우저 활성화
WinActivate, ahk_exe vivaldi.exe
return
# 2번 프록그램 최상위로 가져오기
-블랙화면 활성화
WinActivate, MainWindow
return
그리고 블랙화면은 wpf로 작성하여 udp신호를 받을때마다 autohotkey로 작성된 스크립트를 실행해주었다
2.UDP신호를 받아 해당 스크립트 실행하기
public partial class MainWindow : Window
{
private int port = 8010;
private string runAppPath = @"C:\projects\ca\run_viewer.ahk";
private string runFadePath = @"C:\projects\ca\run_black.ahk";
public MainWindow()
{
InitializeComponent();
_ = StartUdpServerAsync();
}
public async Task StartUdpServerAsync()
{
using (var udpClient = new UdpClient(port))
{
var remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
while (true)
{
var receivedResult = await udpClient.ReceiveAsync();
string msg = Encoding.UTF8.GetString(receivedResult.Buffer);
switch (msg)
{
case "CR_01":
case "CR_11":
case "CR_07":
Process.Start(runAppPath);
break;
case "CR_02":
case "CR_03":
case "CR_04":
case "CR_05":
//블랙
Process.Start(runFadePath);
break;
default:
break;
}
}
}
}
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
}
}
이렇게 오토핫키+wpf를 활용하여 UDP화면 스왑을 구현하였다.
#wpf #c# #autoHotkey #오토핫키 #매크로 #최상위
반응형