728x90
반응형
728x170
▶ ActivateOptions.cs
namespace TestProject
{
/// <summary>
/// 활성 옵션
/// </summary>
public enum ActivateOptions
{
/// <summary>
/// None
/// </summary>
None = 0x00000000,
/// <summary>
/// Design Mode
/// </summary>
DesignMode = 0x00000001,
/// <summary>
/// No Error UI
/// </summary>
NoErrorUI = 0x00000002,
/// <summary>
/// No Splash Screen
/// </summary>
NoSplashScreen = 0x00000004
}
}
728x90
▶ IApplicationActivationManager.cs
using System;
using System.Runtime.InteropServices;
namespace TestProject
{
/// <summary>
/// 애플리케이션 활성 관리자 인터페이스
/// </summary>
[ComImport, Guid("2e941141-7f97-4756-ba1d-9decde894a3d"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IApplicationActivationManager
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
#region 애플리케이션 활성화하기 - ActivateApplication(appUserModelID, argumentList, options, processID)
/// <summary>
/// 애플리케이션 활성화하기
/// </summary>
/// <param name="appUserModelID">앱 사용자 모델 ID</param>
/// <param name="argumentList">인자 리스트</param>
/// <param name="options">활성 옵션</param>
/// <param name="processID">프로세스 ID</param>
/// <returns>처리 결과</returns>
IntPtr ActivateApplication([In] string appUserModelID, [In] string argumentList, [In] ActivateOptions options, [Out] out uint processID);
#endregion
#region 파일용 활성화하기 - ActivateForFile(appUserModelID, itemArray, verb, processID)
/// <summary>
/// 파일용 활성화하기
/// </summary>
/// <param name="appUserModelID">앱 사용자 모델 ID</param>
/// <param name="itemArray">항목 배열</param>
/// <param name="verb">동사</param>
/// <param name="processID">프로세스 ID</param>
/// <returns>처리 결과</returns>
IntPtr ActivateForFile([In] string appUserModelID, [In] IntPtr itemArray, [In] string verb, [Out] out uint processID);
#endregion
#region 프로토콜용 활성화하기 - ActivateForProtocol(appUserModelID, itemArray, processID)
/// <summary>
/// 프로토콜용 활성화하기
/// </summary>
/// <param name="appUserModelID">앱 사용자 모델 ID</param>
/// <param name="itemArray">항목 배열</param>
/// <param name="processID">프로세스 ID</param>
/// <returns>처리 결과</returns>
IntPtr ActivateForProtocol([In] string appUserModelID, [In] IntPtr itemArray, [Out] out uint processID);
#endregion
}
}
300x250
▶ ApplicationActivationManager.cs
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace TestProject
{
/// <summary>
/// 애플리케이션 활성 관리자
/// </summary>
[ComImport, Guid("45BA127D-10A8-46EA-8AB7-56EA9078943C")]
public class ApplicationActivationManager : IApplicationActivationManager
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 애플리케이션 활성화하기 - ActivateApplication(appUserModelID, argumentList, options, processID)
/// <summary>
/// 애플리케이션 활성화하기
/// </summary>
/// <param name="appUserModelID">앱 사용자 모델 ID</param>
/// <param name="argumentList">인자 리스트</param>
/// <param name="options">활성 옵션</param>
/// <param name="processID">프로세스 ID</param>
/// <returns>처리 결과</returns>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
public extern IntPtr ActivateApplication([In] string appUserModelID, [In] string argumentList, [In] ActivateOptions options, [Out] out uint processID);
#endregion
#region 파일용 활성화하기 - ActivateForFile(appUserModelID, itemArray, verb, processID)
/// <summary>
/// 파일용 활성화하기
/// </summary>
/// <param name="appUserModelID">앱 사용자 모델 ID</param>
/// <param name="itemArray">항목 배열</param>
/// <param name="verb">동사</param>
/// <param name="processID">프로세스 ID</param>
/// <returns>처리 결과</returns>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
public extern IntPtr ActivateForFile([In] string appUserModelID, [In] IntPtr itemArray, [In] string verb, [Out] out uint processID);
#endregion
#region 프로토콜용 활성화하기 - ActivateForProtocol(appUserModelID, itemArray, processID)
/// <summary>
/// 프로토콜용 활성화하기
/// </summary>
/// <param name="appUserModelID">앱 사용자 모델 ID</param>
/// <param name="itemArray">항목 배열</param>
/// <param name="processID">프로세스 ID</param>
/// <returns>처리 결과</returns>
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
public extern IntPtr ActivateForProtocol([In] string appUserModelID, [In] IntPtr itemArray, [Out] out uint processID);
#endregion
}
}
▶ Program.cs
using System;
namespace TestProject
{
/// <summary>
/// 프로그램
/// </summary>
class Program
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 프로그램 시작하기 - Main()
/// <summary>
/// 프로그램 시작하기
/// </summary>
private static void Main()
{
ApplicationActivationManager manager = new ApplicationActivationManager();
uint processID;
manager.ActivateApplication("F5702C39-E68B-4700-B7FA-FF68A1B9A461_f764zjf8n42zt!App", null, ActivateOptions.None, out processID);
Console.WriteLine($"PROCESS ID : {processID}");
Console.ReadKey(true);
}
#endregion
}
}
※ F5702C39-E68B-4700-B7FA-FF68A1B9A461_f764zjf8n42zt : 해당 UWP 앱의 Package.appmanifest 파일에서 [패키징] 탭의 [패키지 패밀리 이름]
728x90
반응형
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON] 윈도우즈 서비스에서 시스템 권한으로 프로세스 실행하기 (0) | 2021.05.12 |
---|---|
[C#/COMMON] Process 클래스 : Kill 메소드를 사용해 특정 디렉토리 내 프로세스 죽이기 (0) | 2021.05.11 |
[C#/COMMON] Process 클래스 : 메인 모듈 파일 경로 구하기 (0) | 2021.05.11 |
[C#/COMMON] 시간 계수기 사용하기 (0) | 2021.05.11 |
[C#/COMMON] 도메인명/사용자명 구하기 (0) | 2021.05.11 |
[C#/COMMON] Process 클래스 : UWP 앱 실행하기 (0) | 2021.05.10 |
[C#/COMMON] 체질량 지수(Body Mass Index) 구하기 (0) | 2021.05.01 |
[C#/COMMON] 누겟 설치 : Obfuscar (0) | 2021.05.01 |
[C#/COMMON] DateTimeOffset 구조체 : FromUnixTimeSeconds 정적 메소드를 사용해 UNIX 시간에서 지역 날짜/시간 구하기 (닷넷 버전 4.6 이후) (0) | 2021.04.30 |
[C#/COMMON] DateTimeOffset 구조체 : ToUnixTimeSeconds 정적 메소드를 사용해 유닉스 시간 구하기 (닷넷 버전 4.6 이후) (0) | 2021.04.30 |
댓글을 달아 주세요