피드로 돌아가기
GeekNewsFrontend
원문 읽기
Show GN: Windows 11 작업표시줄에 내 앱 UI를 올릴 수 있게 해주는 라이브러리를 만들었습니다.
Win32 API 기반 SetParent 설계를 통한 Win11 작업표시줄 UI 임베딩 구현
AI 요약
Context
Windows 11 업데이트로 인한 기존 Deskbands 기능의 완전한 삭제로 작업표시줄 내 위젯 구현 불가 상태 발생. 기존 오픈소스 시도는 단순 POC 수준의 해커톤 코드로 구성되어 실제 제품 적용을 위한 런타임 안정성 및 레이아웃 대응력 부족.
Technical Solution
- WinUI 3/WPF 창을 생성 후 Win32 API의 SetParent 함수를 통해 작업표시줄 HWND의 자식 창으로 지정하는 구조 설계
- UI Automation 및 Win32 API를 활용하여 시작 버튼, 위젯 버튼, 알림 영역의 좌표를 실시간 계산하는 동적 레이아웃 엔진 구현
- 작업표시줄 정렬 설정(좌측/중앙)에 따른 가용 공간 변화를 감지하여 콘텐츠 클립 영역을 자동으로 조정하는 로직 적용
- Explorer 프로세스 재시작 시 발생할 수 있는 핸들 소실 문제를 해결하기 위한 복구 메커니즘 구축
- NativeAOT 컴파일 방식을 채택하여 Cold Start 속도 개선 및 메모리 풋프린트 최소화
실천 포인트
- OS 레벨의 UI 제약 사항 발생 시 Win32 API의 Window Hierarchy 조작 가능 여부 검토 - 외부 프로세스(Explorer)의 상태 변화에 따른 UI 복구 전략 수립 필요 - 리소스 사용량이 중요한 상주형 위젯의 경우 NativeAOT 적용을 통한 효율화 고려 - UI Automation을 통한 타 프로세스 요소의 좌표 기반 동적 레이아웃 계산 방식 적용