2009-02-24 19 views
5

Tôi có thể ảnh hưởng đến quy trình không?
Tôi có một ứng dụng được xây dựng trong .NET 3.5/VS2008. Tôi đã nhúng nhiều biểu tượng vào ứng dụng bằng tệp win32 .res. Điều này được thực hiện trong hộp Properties cho Dự án trong VS2008 - thay vì chỉ định một tệp .ico, đánh dấu vào ô để chỉ định tệp .res. Trong tệp .res bạn có thể có nhiều biểu tượng. Xem here cho ý tôi.Vista tạo biểu tượng cho các tài liệu liên quan đến đơn đăng ký của tôi như thế nào?

Mỗi biểu tượng bao gồm ảnh 256x256xRGB (PNG Cmopressed) "Vista cấp", hình ảnh 256x256x32bit và thác thông thường gồm 48x48, 32x32 và 16x16 hình ảnh trong các combo màu khác nhau. Nếu tôi xem exe kết quả trong Explorer, tôi thấy hình ảnh đẹp 256x256 Vista tuyệt đẹp.

Sau đó tôi có thể liên kết phần mở rộng tệp với ứng dụng của mình, bằng cách nhấp chuột phải> "Mở bằng ..."> Đặt nhấp chuột Chương trình mặc định trong Explorer của Vista. Nhưng biểu tượng được hiển thị bên cạnh tài liệu là một phiên bản nhỏ của biểu tượng ứng dụng, được xếp chồng lên trên những gì trông giống như một tờ giấy trắng với một góc gấp.

Kết quả là hình ảnh ban đầu là waaaay thành nhỏ để hiển thị khi được hiển thị trong phiên bản "biểu tượng nhỏ". Có vẻ khủng khiếp.

Tôi biết có thể hoàn toàn bỏ qua mảnh giấy gấp hoặc ít nhất để có được một hình ảnh lớn hơn nhiều được phủ lên trên đó. Ví dụ, biểu tượng cho tệp C# có một tờ giấy gấp, nhưng biểu tượng C# lớn và hiển thị. Làm thế nào tôi có thể nhận được điều này? Biểu tượng cho các tệp .zip khi WinZip 12 được cài đặt, lớn và có thể nhìn thấy và không có tờ giấy gấp nào.

Biểu tượng cho tài liệu có khác với biểu tượng cho ứng dụng không? Có điều gì đó trong ứng dụng của tôi mà tôi phải thực hiện để đăng ký Biểu tượng mà Vista sẽ sử dụng cho các tài liệu liên quan đến ứng dụng của tôi không?

Trả lời

13

Biểu tượng và liên kết tệp cho tiện ích mở rộng tệp được liệt kê trong sổ đăng ký. Cụ thể hơn, các mục nhập HKEY_CLASSES_ROOT\.ext chứa loại nội dung, loại nhận thức và giá trị (Default) là liên kết thực tế. Ví dụ: các tệp .cs có giá trị mặc định là VisualStudio.cs.9.0 (Tôi đã có VS 2008). Bạn có thể kiểm tra HKEY_CLASSES_ROOT\VisualStudio.cs.9.0 để xem biểu tượng, chương trình và lệnh thực tế được liên kết với loại tệp này. Cụ thể, HKEY_CLASSES_ROOT\VisualStudio.cs.9.0\DefaultIcon là mục nhập cho Explorer biết biểu tượng nào sẽ hiển thị cho các tệp thuộc loại này. Nó trỏ đến một tệp nhị phân và một ID tài nguyên trong nhị phân đó.

Khi bạn kết hợp loại tệp với chương trình thông qua nhấp chuột phải -> Mở bằng ..., bạn không chỉ định biểu tượng mặc định, vì vậy, Explorer lấy biểu tượng ứng dụng của bạn và phủ lên biểu tượng tài liệu chung .

Cách tiếp cận phù hợp sẽ là bao gồm trong quá trình thiết lập các mục đăng ký thích hợp để liên kết loại tệp với ứng dụng và biểu tượng của bạn. Các giá trị đăng ký chính xác bạn cần bao gồm phụ thuộc vào các lệnh bạn muốn thêm vào menu ngữ cảnh cho loại tệp đó, nhưng ít nhất bạn muốn lệnh Mở. Trong trường hợp tệp .cs, bạn có thể thấy rằng có một mục nhập HKEY_CLASSES_ROOT\VisualStudio.cs.9.0\Shell\Commands\Open với giá trị (Default) chứa ứng dụng để bắt đầu khi lệnh Mở được gọi. (Bạn có thể bỏ qua phần ddeexec bây giờ)

Lưu ý rằng HKEY_CLASSES_ROOT là chế độ xem bản đồ của hai chi nhánh đăng ký: HKEY_CURRENT_USER\Software\ClassesHKEY_LOCAL_MACHINE\Software\Classes. Nếu bạn muốn liên kết tệp của mình dành cho tất cả người dùng, bạn cần phải viết thư cho HKEY_LOCAL_MACHINE. Thiết lập của bạn cần chạy với tư cách quản trị viên để thực hiện điều đó. Nếu không, cố gắng ghi vào HKEY_CLASSES_ROOT sẽ không thành công với quyền truy cập bị từ chối hoặc ghi vào HKEY_CURRENT_USER và chỉ thực hiện kết hợp cho người dùng hiện tại.(Chính xác điều gì sẽ xảy ra phụ thuộc vào một số thứ, giống như hệ điều hành là gì, cho dù người dùng có phải là quản trị viên hay không), hãy xem

Bạn có thể đọc tất cả điều này trong mục Customizing File Types (Files Associations) trên MSDN. Cụ thể, File TypesRegistering Programs with Client Programs sẽ cung cấp cho bạn các khái niệm cơ bản về cách thực hiện chính xác điều này.

+0

WOW! Câu trả lời chính xác. Hoàn hảo! Chỉ cần những gì tôi đang tìm kiếm! – Cheeso

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