728x90
반응형
WPF & C# - 아이콘 추출 ( icon / ExtractAssociatedIcon ) |
아이콘 추출 함수
MainWindow.xaml.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // 아이콘 추출 함수 private ImageSource ExtractAssociatedIcon(string fileNmae) { // 참고 : https://www.c-sharpcorner.com/uploadfile/dpatra/get-icon-from-filename-in-wpf/ System.Windows.Media.ImageSource icon; using (System.Drawing.Icon sysicon = System.Drawing.Icon.ExtractAssociatedIcon(fileNmae)) { icon = System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon( sysicon.Handle, System.Windows.Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()); } return icon; } | cs |
위 방법 보다 더 큰 이미지를 추출할 수 있는 방법이 있을꺼 같은데, 아직은 잘 모르겠다. ㅠㅠ
응용프로그램 드락하여 아이콘 추출 후 프로그램 실행
1. 프로그램 드랍하여 아이콘 추출
2. 아이콘 클릭 시 프로그램 실행
MainWindow.xaml.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | // 파일 드랍시 작업 private void grid_Drop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); foreach (string file in files) { ImageSource icon = ExtractAssociatedIcon(file); // 아이콘 추출 // Image 생성 및 아이콘넣기 System.Windows.Controls.Image img = new System.Windows.Controls.Image(); img.Source = ExtractAssociatedIcon(file); img.Width = icon.Width; img.Height = icon.Height; img.Tag = file; // Image 이벤트 등록 img.MouseLeftButtonDown += (s, a) => { System.Diagnostics.Process.Start(img.Tag.ToString()); }; wrp.Children.Add(img); } } } // 아이콘 추출 함수 private ImageSource ExtractAssociatedIcon(string fileNmae) { // 참고 : https://www.c-sharpcorner.com/uploadfile/dpatra/get-icon-from-filename-in-wpf/ System.Windows.Media.ImageSource icon; using (System.Drawing.Icon sysicon = System.Drawing.Icon.ExtractAssociatedIcon(fileNmae)) { icon = System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon( sysicon.Handle, System.Windows.Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()); } return icon; } | cs |
728x90
반응형