Saya menulis file explorer saya sendiri di SFML. Saya akan membuat menu popup saya sendiri, tetapi saya pikir beberapa orang juga ingin menggunakan opsi default untuk item (folder, file, pintasan). Jadi salah satu opsi di menu popup saya adalah "Buka menu konteks default di sini". Tapi saya tidak tahu bagaimana melakukannya. Saya melakukan riset dan saya membaca banyak utas, artikel, dokumentasi WinAPI, dan sumber daya lainnya. Saya mencoba mensimulasikan klik kanan di jendela lain, saya mencoba mensimulasikan pintasan Shift+F10. Sekarang saya bertarung dengan menu. Tapi saya masih belum mendapatkan hasil. Saya melihat sesuatu seperti ini di file explorer yang saya gunakan. Harus ada solusi untuk ini.

Saya menemukan Tampilkan menu sistem dari proses lain (menggunakan WinForms, c# ) Tapi ini mengaktifkan menu windows standar (alt+spasi) tapi saya ingin menu klik kanan (Shift+F10).

0
Kacper777 15 Maret 2020, 20:32

1 menjawab

Jawaban Terbaik

Anda tidak dapat memunculkan menu klik kanan default file/folder itu sendiri. Tetapi Anda dapat membuat menu sendiri dan mengisinya dengan item menu yang berkaitan dengan file/folder, dan memanggil item tersebut saat diklik, dengan menggunakan IContextMenu antarmuka.

Singkatnya, Anda mendapatkan IContextMenu untuk file/folder yang diinginkan, seperti melalui IShellFolder::GetUIObjectOf() atau IShellItem::BindToHandler(), lalu Anda menggunakan metode IContextMenu::QueryContextMenu() untuk mengisi menu Anda dengan item, dan IContextMenu::InvokeCommand() metode untuk memanggil perintah dari item tersebut.

Raymond Chen menulis serangkaian artikel tentang hal ini, yang menunjukkan betapa rumitnya tugas ini. Ada terlalu banyak informasi untuk diposting di sini.

Cara meng-host IContextMenu, bagian 1 – Perampokan awal

Cara meng-host IContextMenu, bagian 2 – Menampilkan menu konteks

Cara meng-host IContextMenu, bagian 3 – Lokasi pemanggilan

Cara meng-host IContextMenu, bagian 4 – Konteks utama

Cara meng-host IContextMenu, bagian 5 – Menangani pesan menu

Cara meng-host IContextMenu, bagian 6 – Menampilkan bantuan menu

Cara meng-host IContextMenu, bagian 7 – Menggunakan kata kerja default

Cara meng-host IContextMenu, bagian 8 – Mengoptimalkan perintah default

Cara meng-host IContextMenu, bagian 9 – Menambahkan perintah khusus

Cara meng-host IContextMenu, bagian 10 – Ekstensi komposit – dasar

Cara meng-host IContextMenu, bagian 11 – Ekstensi komposit – komposisi

1
Remy Lebeau 15 Maret 2020, 21:42