■ 파일 확장자와 연결된 실행 파일 경로 구하기
------------------------------------------------------------------------------------------------------------------------
▶ FileAssociationHelper.cs
using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Text;
namespace TestProject { /// <summary> /// 파일 연결 헬퍼 /// </summary> public static class FileAssociationHelper { //////////////////////////////////////////////////////////////////////////////////////////////////// Import ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private
#region 연결 쿼리 문자열 구하기 - AssocQueryString(associationFlag, associationString, association, extraAssociation, resultStringBuilder, resultLength)
/// <summary> /// 연결 쿼리 문자열 구하기 /// </summary> /// <param name="associationFlag">연결 플래그</param> /// <param name="associationString">연결 문자열</param> /// <param name="association">연결</param> /// <param name="extraAssociation">부가 연결</param> /// <param name="resultStringBuilder">결과 문자열 빌더</param> /// <param name="resultLength">결과 길이</param> /// <returns>처리 결과</returns> [DllImport("Shlwapi.dll", SetLastError = true, CharSet = CharSet.Unicode)] private static unsafe extern uint AssocQueryString(AssocicationFlag associationFlag, AssociationString associationString, string association, string extraAssociation, [Out] StringBuilder resultStringBuilder, ref uint resultLength);
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Public
#region 값 딕셔너리 구하기 - GetValueDictionary(fileExtension)
/// <summary> /// 값 딕셔너리 구하기 /// </summary> /// <param name="fileExtension">파일 확장자</param> /// <returns>값 딕셔너리</returns> public unsafe static Dictionary<string, string> GetValueDictionary(string fileExtension) { Dictionary<string, string> dictionary = new Dictionary<string, string>();
StringBuilder stringBuilder = new StringBuilder(1024);
foreach(string name in Enum.GetNames(typeof(AssociationString))) { uint count = 512;
AssociationString associationString = (AssociationString)Enum.Parse(typeof(AssociationString), name);
uint result = AssocQueryString(AssocicationFlag.None, associationString, fileExtension, null, stringBuilder, ref count);
if(result == 0) { dictionary.Add(name, stringBuilder.ToString()); } }
return dictionary; }
#endregion } }
|
▶ Program.cs
using System; using System.Collections.Generic;
namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private
#region 프로그램 시작하기 - Main()
/// <summary> /// 프로그램 시작하기 /// </summary> [STAThread] private static void Main() { Console.Title = "파일 확장자와 연결된 실행 파일 경로 구하기";
Dictionary<string, string> dictionary = FileAssociationHelper.GetValueDictionary(@".mp3");
foreach(KeyValuePair<string, string> keyValuePair in dictionary) { Console.WriteLine($"{keyValuePair.Key} : {keyValuePair.Value}"); } }
#endregion } }
|
------------------------------------------------------------------------------------------------------------------------
'C# > Common' 카테고리의 다른 글
[C#/COMMON] 커스텀 태스크 사용하기 (0) | 2019.08.01 |
---|---|
[C#/COMMON] 커스텀 태스크 사용하기 (0) | 2019.08.01 |
[C#/COMMON] IAsyncStateMachine 인터페이스 : 비동기 처리하기 (0) | 2019.07.31 |
[C#/COMMON] IAsyncStateMachine 인터페이스 : 비동기 처리하기 (0) | 2019.07.31 |
[C#/COMMON] Environment 클래스 : Is64BitProcess 정적 속성을 사용해 64비트 프로세스 여부 구하기 (0) | 2019.07.31 |
[C#/COMMON] 파일 확장자와 연결된 실행 파일 경로 구하기 (0) | 2019.07.31 |
[C#/COMMON] 인증서 요청 코드 생성하기 (0) | 2019.07.30 |
[C#/COMMON] 마스터 부트 레코드(Master Boot Record, MBR) 조회하기 (0) | 2019.07.28 |
[C#/COMMON] ManagementObject 클래스 : 디스크 전체 트랙 수 구하기 (0) | 2019.07.28 |
[C#/COMMON] ManagementObject 클래스 : 디스크 트랙당 섹터 수 구하기 (0) | 2019.07.28 |
[C#/COMMON] ManagementObject 클래스 : 디스크 전체 섹터 수 구하기 (0) | 2019.07.28 |
댓글을 달아 주세요