C#

[WPF] UWP의 API 사용하기

Dean83 2022. 9. 6. 10:09

UWP는 모바일 앱들과 비슷하게 흉내내기 위해 기존 윈도우용 프로그램에는 없던 기능들이 다수 들어가 있다. 

(터치관련 최적화, 잉크캔버스, QR코드 관련 API, 토스트 메세지 등등)

 

그러나 UWP의 한계는 있다. 데스크탑용 프로그램을 개발하다 보면, 관리자 권한이 필요한 경우가 꽤 있다.

Shell 스크립트를 이용해 명령을 내린다든지 하는 경우가 그 예이다. UWP에서는 관리자 권한을 이용할 수 없다. 정확히 말하자면 스토어에 업로드 하려면 관리자 권한으로 빌드가 안된다. 또한 폴더접근에 제한적이라든지.. 확실히 자유도가 떨어진다.  대부분의 UWP API는 관리자 권한으로 실행히 오히려 동작하지 않는 경우가 꽤 있다 (대표적으로 Share 기능)

 

따라서 기존 윈폼 혹은 WPF로 개발을 하면서, UWP의 API를 사용하고 싶을 때가 있다. 

 

방법은 크게 2가지로 나뉜다. 닷넷 버전이 4.x 버전 (혹은 넷코어 3.1 이하) 이냐, 5.0 이상 버전이냐로 나뉜다. 

 

결론부터 말하면, 닷넷버전 4.x 와 넷코어 3.1에서는 모든 UWP API 사용이 가능하다. (실제 실행시 오류는 날 수 있겠지만)

그러나 5.0 이상 버전에서는 일부 API만 사용이 가능하다. 

 

1. 닷넷 버전 4.x 혹은 넷코어 3.1 이하
     - nuget 에서 Microsoft.Windows.SDK.Contracts를 다운 받는다. (Community Toolkit으로 이름이 바꼈다)

2. 닷넷버전 5.0 이상
     - manifest 파일에서 수정을 해주면 바로 쓸 수 있다. 

3. 공식 링크
     - https://docs.microsoft.com/ko-kr/windows/apps/desktop/modernize/desktop-to-uwp-enhance

 

데스크톱 앱에서 Windows 런타임 API 호출 - Windows apps

Windows 런타임 API를 사용하여 Windows 사용자용 데스크톱 애플리케이션을 개선하세요.

docs.microsoft.com

   - 해당 링크에 5.0이상 버전에서는 사용할 수 없는 API 목록, 그리고 각 닷넷버전별 어떻게 사용하는지 나와있다. 

'C#' 카테고리의 다른 글

[WPF] 화면에 그림을 그리는 잉크캔버스  (0) 2022.09.06
[Windows API] RawInput  (0) 2022.05.30