티스토리 뷰

반응형

[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 #오토핫키 #매크로 #최상위

반응형
댓글
반응형