티스토리 뷰
반응형
[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 #오토핫키 #매크로 #최상위
반응형
'c#' 카테고리의 다른 글
smartthings를 st 공식 api사용하지 않고, api와 같은 형태로 사용하기(api의 문제점 포함) (1) | 2024.05.07 |
---|---|
adb를 이용한 안드로이드 쉘 사용방법(with source) (0) | 2024.02.06 |
관리자 권한으로 CMD열기(배치파일) (0) | 2023.11.06 |
[c#/wpf/winform] 화면캡쳐하기 (0) | 2022.12.08 |
[c#/wpf] 윈도우 해상도 구하기(멀티 디스플레이 포함) (0) | 2022.12.08 |
댓글
반응형