Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Контекстное меню explorer в моей программе, Можно ли сделать? Как? 
V
    Опции темы
SherbAnt
Дата 5.5.2007, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 12.1.2007

Репутация: 1
Всего: 3



Здравствуйте.

Такой вопрос. Пишу программу, которая особым образом выводит через фильтр файлы с жесткого диска. Дошёл до момента когда нужно, кликнув по одному из файлов в списке, вывести стандартное Explorer-ное контекстное меню. Было бы отлично, если бы тип файлов распозновался (Пример: кликнешь на mp3, в контексте высветится кроме всего прочего "Проиграть в Winamp" и т.п.). В каком компоненте хранить список файлов мне в принципе без разницы (Ну может в каком-то это сделать проще).
Покопался в Microsoft Visual Studio 2005 Documentation - ничего не нащёл (хотя допускаю что плохо искал).
Какие будут предложения?
PM MAIL Skype   Вверх
mr.DUDA
Дата 6.5.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Есть исходник, но он написан на С++ и подключается к шарповскому классу через [DllImport]. Подойдёт такое ?


--------------------
user posted image
PM MAIL WWW   Вверх
SherbAnt
Дата 6.5.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 12.1.2007

Репутация: 1
Всего: 3



Давай. Если можешь снабди коментами.
PM MAIL Skype   Вверх
Exception
Дата 6.5.2007, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



PM   Вверх
mr.DUDA
Дата 7.5.2007, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Исходник проекта с примером - в аттаче. Пример использования:
Код
using System;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                // один или несколько путей (можно несколько, для multi-selection)
                string[] paths =
                {
                    @"c:\"
                };

                // показываем контекстное меню
                // первый аргумент - любой контрол, кроме самой формы (контекстное меню "портит" перерисовку формы)
                // последний аргумент - показывать ли команду "Переименовать" (для некоторых случаев она не нужна)                // последний аргумент - показывать ли команду "Переименовать" (для некоторых случаев она не нужна)
                ShellContextMenu.ShowShellContextMenu(panel1, paths, Cursor.Position, false);
            }
        }
    }
}




Присоединённый файл ( Кол-во скачиваний: 24 )
Присоединённый файл  WindowsApplication1.zip 107,61 Kb


--------------------
user posted image
PM MAIL WWW   Вверх
SherbAnt
Дата 7.5.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 12.1.2007

Репутация: 1
Всего: 3



mr.DUDA спасибо.
Но не могу подключить всё это в свой проект.
Скопировал файлы ShellContextMenu.cs и ShellContextMenu.dll в свою папку. Добавил (Add Existing Item) их. Вставил в обработчик события MouseDown твой пример. Компилю, но вылетают ошибки везде где упоменается ShellContextMenu.
PM MAIL Skype   Вверх
Exception
Дата 7.5.2007, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Текст ошибок, если я правильно понял, предлагается угадать smile ?
PM   Вверх
mr.DUDA
Дата 7.5.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



SherbAnt, в свойствах файла ShellContextMenu.dll выставить Copy to output directory = Copy if newer


--------------------
user posted image
PM MAIL WWW   Вверх
SherbAnt
Дата 7.5.2007, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 12.1.2007

Репутация: 1
Всего: 3



Поменял свойства. Ошибки те же.
Код ошибки:

Код
Error    1    The name 'ShellContextMenu' does not exist in the current context    F:\My documents\Visual Studio 2005\Projects\FFS\FFS\Form1.cs    137    30    FFS


далее 20 точно таких ошибок, меняется только строка.
PM MAIL Skype   Вверх
SherbAnt
Дата 8.5.2007, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 12.1.2007

Репутация: 1
Всего: 3



Всё, проблема решена. Все оказалось до безобразия просто:

У меня в проге namespase зовут FFS, а файле ShellContextMenu.cs - WindowsApplication1. Поменял и всё заработало. Всем спасибо.
PM MAIL Skype   Вверх
MAG_S
Дата 20.8.2007, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 2.8.2007

Репутация: нет
Всего: нет



Новое продолжение

У меня этот пример неработает!
Вернее он работает но контекстного меню и в помине нету.
Это может быть изза того что у меня Виста?

Может ли ктонибуть хотябы обьяснить где хранятся данные о содержимом контекста которое создают приложения? (типа WinRAR) - это то чего нехватает в моем уже существующем контексте.

В реестре упоминаний об этих пунктах нету!
PM MAIL ICQ   Вверх
Idsa
Дата 20.8.2007, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Цитата(MAG_S @  20.8.2007,  14:30 Найти цитируемый пост)
В реестре упоминаний об этих пунктах нету! 

Смелое заявление smile


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
MAG_S
Дата 20.8.2007, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 2.8.2007

Репутация: нет
Всего: нет



я задал в поиск extract (опция extract here, и т. д.) ничего похожего
и по расширению просмотрел направления.
Еслеб чтото было полюбомубы нашол (разве что зашифровали smile ).

В инете написано (как я понял) эксплорер обращается к приложению и извлекает контекст smile . Удалил папку винрар но в эксплорере контекст остался - значит не в приложении.

Так гдеж оно тогда лежит!?
PM MAIL ICQ   Вверх
MAG_S
Дата 23.8.2007, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 2.8.2007

Репутация: нет
Всего: нет



Цитата

У меня этот пример неработает!
Вернее он работает но контекстного меню и в помине нету.
Это может быть изза того что у меня Виста?


Отвечаю сам-себе  smile 
Да это из-за висты. Запустил прогу под икспи там меню вылезло!


mr.DUDA а какие функции использует эта библиотека?
PM MAIL ICQ   Вверх
_radix
  Дата 16.6.2010, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 16.6.2007

Репутация: нет
Всего: нет



Доброе время суток, уважаемые!

У меня похожая, но немного другая задача. Имеется DLL-ка контекстного меню explorer'а от программы PDF Transformer (PDFTContextmenu.dll). Нужно запускать PDF Transformer так, как делает это контекстное меню, с параметром на входе в виде PDF файла. Интерфейса командной строки у этой проги нет, SDK стоит дорого, вот я и хочу вызывать каким-то образом это контекстное меню программно. Мучать ослик хуками, вызывать его окошки и кликать программно не хочется. 
Посоветуйте, как сделать всё просто импортнув из DLL нужные функции?

Заранее спасибо! 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0695 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.