2011-08-10 52 views
5

Làm cách nào để thay đổi thứ tự các mục nhập trong menu ngữ cảnh? (Ví dụ: đối với Thư mục) Tôi cần biết cách Windows xác định thứ tự khi hiển thị để tôi có thể kiểm soát nó. Ví dụ: tôi muốn đặt hành động tùy chỉnh của mình ở cuối danh sách menu ngữ cảnhĐặt hàng trong menu ngữ cảnh của Windows Explorer

Cảm ơn trước!

+0

@Christoph Grimmer-Dietrich, và cái gì? Bạn có tìm thấy câu trả lời trong google không? Ok, chỉ cần cho tôi liên kết. – ixSci

+0

Tôi xin lỗi vì chơi chữ. Tôi cho rằng liên kết thứ hai (http://windowsxp.mvps.org/context_folders.htm) sẽ giúp bạn. –

Trả lời

7

Google-fu của tôi dẫn tôi đến this:

Vì vậy, việc phân loại dựa trên các yếu tố sau đây để quyết định:

  1. ưu tiên chính (ví dụ, txtfile, *, AFSO)
  2. Đăng ký Thứ tự liệt kê giá đỡ \ contextmenuhandlers với trường hợp đặc biệt cho động từ tĩnh luôn là
  3. IContextMenu Thứ tự thực hiện

Vì vậy, nếu có bất kỳ tranh chấp nào về vị trí, không có cách nhất quán cho tiện ích để đảm bảo vị trí tương đối của chúng trong menu.

Rõ ràng bạn không thể làm bất cứ điều gì về giai đoạn 1. Giai đoạn 3 chỉ áp dụng cho các động từ được thực hiện trong trình xử lý của bạn. Điều đó rời khỏi giai đoạn 2. Điều duy nhất bạn có thể làm là đặt tên cho mục nhập của bạn dưới ContextMenuHandlers sao cho nó sẽ được liệt kê đầu tiên, nhưng không có gì ngăn người khác làm điều tương tự.

1

This Q&A hiển thị một cách đơn giản để TẠO (không di chuyển) một mục trong menu ngữ cảnh. Tôi đã quản lý để sao chép một mục hiện có. Sau đó, tôi di chuyển mục của tôi đến một vị trí cao hơn và dễ tiếp cận hơn trong menu ngữ cảnh, bằng cách đổi tên khóa để bắt đầu với một cái gì đó "aMyItem" hoặc "0MyItem".

2

này là dành cho Windows 7, có lẽ tương tự cho các phiên bản mới hơn. Nó được lấy cảm hứng từ những câu trả lời khác, tất cả đều ảnh hưởng đến trật tự.

Tôi đang giải thích các mục nhập cho "*" (tất cả các tệp), nhưng cũng vậy với các tiện ích mở rộng đặc biệt.

Tôi không chịu trách nhiệm về bất kỳ thay đổi nào được thực hiện trong registry!

Có ba phần trong menu ngữ cảnh, vì nó nói trong How to Change the Order of Options in Context Menu (từ answer by @Anonymouse)

Họ gọi chúng là:

2 - Default menu position (at the top). 
1 - Send to, copy to folder and move to folder menu part (in the middle). 
0 - Rename menu part (at the bottom). 

Trong các phần vị trí được quyết định bởi các quy tắc trong answer by @Luke
Cách dễ nhất để thay đổi thứ tự trong "phần" là thay đổi tên của khóa đăng ký dưới HKCR-*-shell hoặc HKCR-*-shellex. Tất cả dưới subkey shell sẽ được trước khi họ dưới shellex. Các phím có số CLSID làm tên khóa sẽ là mục nhập cuối cùng vì chúng nằm trong thứ tự được sử dụng cuối cùng.

Ví dụ: Tôi đang theo dõi sample from MSDN to build a Context Menu Handler. Đó là sử dụng CLSID làm tên cho khóa dưới shellex và "tên thân thiện" làm giá trị mặc định. Nó được đặt ở dưới cùng của "phần" 2 (phần trên cùng). Tôi đã đổi tên khóa thành một cái tên như Asample và thay đổi giá trị mặc định thành CLSID thay thế. Bây giờ nó đã được trực tiếp sau khi các mục dưới shell.

Có một số cách khác để thay đổi thứ tự.

Đối với các phím dưới shell bạn có thể thêm giá trị Position với dữ liệu chuỗi Top hoặc Bottom. Không thể quyết định "phần" nào.

Đối với các phím dưới shellex giá trị Position không có hiệu lực. Thay vào đó, có thể quyết định phần "mục" nào sẽ sử dụng flags, described in the link ở trên.

  1. Sử dụng CLSID cho shellext bạn muốn di chuyển. Nó giống như
    {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}. Lấy nó hoặc từ tên khóa hoặc giá trị mặc định, nó phụ thuộc vào cách mục nhập được thực hiện.
  2. Tìm mục nhập trong HKCR-CLSID, khóa có tên là CLSID.
  3. Thêm giá trị có tên flags và dữ liệu DWORD bằng số "phần" được mô tả ở trên theo số CLSID được tìm thấy.
Các vấn đề liên quan