2009-06-16 25 views
6

Có cách nào để nhận biểu tượng được liên kết trong C# mà không sử dụng bất kỳ DllImports nào không?Nhận biểu tượng liên quan từ tệp, thư mục hoặc ổ đĩa mà không cần WinAPI

Khi tôi sử dụng Icon.ExtractAssociatedIcon Tôi dường như không nhận được biểu tượng cho ổ đĩa, thư mục, SpecialFolder trong Môi trường hoặc bất kỳ tệp nào trên thư mục được đính kèm trên mạng. Vì vậy, có cách nào khác để có được một biểu tượng bằng cách sử dụng .NET?

Trả lời

4

Net chỉ có một phương pháp để chiết xuất các biểu tượng liên quan, và bạn đã đề cập về nó. Mỗi lib bạn có thể tìm thấy sử dụng pinvokes, bởi vì họ nhận được các biểu tượng từ cửa sổ. Vì vậy, nếu bạn cần phải hoàn toàn di động công cụ khai thác biểu tượng, bạn phải viết nó một mình, thật đáng buồn, nhưng đây là cách duy nhất (và ẩn tất cả các mã hệ thống cụ thể bên trong).

+0

Hm, thật không may. Cảm ơn bạn đã giúp đỡ. – Patrick

0

Không phải là câu trả lời cho câu hỏi của bạn nhưng có thể được sử dụng.

Bạn có thể nhận được hầu hết ms windows icon từ file này

$ VisualStudiosInstallationDirectory \ Common7 \ VS2008ImageLibrary \ VS2008ImageLibrary.zip

thay thế 2008 cho năm 2005 nếu bạn vẫn sử dụng VS2005

0

Bài viết này có mã trên CodeProject có thể giúp đỡ.

Extract icons from EXE or DLL files

+0

Nếu bạn tải xuống mã nguồn của mình, anh ấy đang sử dụng DllImport ("kernel32" ...). Tôi muốn có thể sử dụng mã của tôi trên các hệ thống không phải của Windows (không phải thay đổi toàn bộ mã với # if-statements). – Patrick

+0

Tôi nghi ngờ có một cách di động để trích xuất các biểu tượng trên os'es – Nifle

+0

Java là di động, và theo như tôi biết Java có thể trích xuất tất cả các loại biểu tượng, hoặc tôi sai? – Patrick

Các vấn đề liên quan