72 / 72 / 6
Регистрация: 16.06.2012
Сообщений: 220
1
.NET 4.x

Explorer Context Menu in WPF

19.01.2013, 14:43. Показов 2068. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.

Имеется следующий вопрос:
Есть приложение WPF, в которое необходимо добавить возможность по правой кнопке открывать popupMenu аналогичное контекстному меню Explorer'а. Насколько это я представляю, используется WinAPI. Это все ок.
Проблема следующая - создаваемый объект должен иметь родителя HWND, и обрабатывать сообщения, которые поступают этому окну. Как это сделать на С++ я представляю. Как это все "перекинуть" на шарп? А точнее на WPF, так как у него, насколько я понял, нельзя получить Handle "честным" способом (WPA), не говоря уже о HWND
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2013, 14:43
Ответы с готовыми решениями:

Context Menu и DataTemplate
Возможно ли привязать Context Menu к элементу определённому в DataTemplate? Проблема в том, что у...

Context menu или?
Задача заключаеться в следующем, есть поле textbox как сделать так чтобы при нажатии правой кнопки...

Context menu Windows
Доброго времени суток, сел писать программу, вопрос заключается в следующем. Понадобилось добавить...

Аналог context menu
Всем привет. Я пишу судоку. Проблема в том что при взаимодействии с ячейкой вызывается новое...

3
273 / 203 / 30
Регистрация: 18.08.2010
Сообщений: 229
20.01.2013, 19:05 2
Не совсем понял вопрос, контрол ContextMenu не катит?
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<Window.ContextMenu>
        <ContextMenu>
            <MenuItem Header="File">
                <MenuItem Header="New"/>
                <MenuItem Command="Open" Header="Open"/>
                <Separator/>
                <MenuItem Header="Save"/>
                <MenuItem Header="Save As">
                    <MenuItem Header="JPG"/>
                    <MenuItem Header="PNG"/>
                    <MenuItem Header="GIF"/>
                </MenuItem>
                <Separator/>
                <MenuItem IsChecked="True" Header="Checked Menu Item"/>
                <MenuItem IsEnabled="False" Header="DisabledMenuItem"/>
                <MenuItem IsChecked="True" IsEnabled="False" Header="MenuItem"/>
            </MenuItem>
            <MenuItem Header="View"/>
            <MenuItem Header="Project"/>
 
            ...
 
        </ContextMenu>
</Window.ContextMenu>
0
72 / 72 / 6
Регистрация: 16.06.2012
Сообщений: 220
20.01.2013, 19:38  [ТС] 3
alexsave, вопрос весьма хитрый (куда же без этого)

задача следующая - есть программа, которая отображает "файлопомойку" на ПК, ей необходимо добавить контекстное меню аналогичное Explorer. Это означает, что кроме открыть\копировать\вырезать Оно должно добавлять меню всех программ, которые зарегистрировали себя в реестре (к примеру, это тот же 7zip'овский Extract\Archive и т.д.)

Как получить меню - узнал через WinAPI, однако для его работы необходимо знать HWND и прочее.
Вопросы такие
1) это "единственный" вариант, либо все же существуют варианты проще? (используя средства Фреймворка, а не WinAPI обращений получить такое меню)
2) Возможно получить HWND\Handle окна\приложения проще, чем использования опять же WINPAPI кода вроде:
(пример приведу, на С++, вдруг кому-то придется на плюсах подобное рисовать)
C++
1
2
3
4
5
6
7
8
9
10
11
12
//Здесь p - точка (координаты X\Y)
HWND hWndByPos = WindowFromPoint(p);
    int length = GetWindowTextLength (hWndByPos);
    TCHAR WindowTitle[1000];
    if (!GetWindowText(hWndByPos, WindowTitle, length +1 ))
        {
            DWORD a = GetLastError();
            WindowTitle[0] = 0;
    }
    DWORD ProcessID; 
    GetWindowThreadProcessId(hWndByPos,&ProcessID);
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,ProcessID);
0
72 / 72 / 6
Регистрация: 16.06.2012
Сообщений: 220
22.01.2013, 15:36  [ТС] 4
С Вашего позволения я апну тему. Вдруг, кто подкинет чего
0
22.01.2013, 15:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2013, 15:36
Помогаю со студенческими работами здесь

Блокирование context menu в WebBrowser
Есть задача: создать браузер, в котором можно будет только смотреть, но сохранить или распечатать -...

Замена стандартного context menu
Доброе время суток.Подскажите кто знает как сделать, чтобы при правом клике мыши по ссылке,...

'Context Menu Platinum' просит денег
У меня Windows XP. Я установил BSPlayer Pro, и при нажатии правой клавишей по группе файлов в Мой...

Показывать Context menu при клике на ячейку DGV
Как работать с Context menu? Надо , чтобы при нажатии на правую кнопку мыши по DataGridView...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru