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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск файлов в .NET 
:(
    Опции темы
SeventhSon
Дата 11.8.2009, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



В процессу написания программы столкнулся с проблемой запуска файлов (тем для Google Chrome), они хранятся в файлах *.crx . При двойном щелчке меняется тема. Как реализовать этот "двойной щелчок" в C# ?
PM MAIL   Вверх
Ockonal
Дата 11.8.2009, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

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



Создайте новый процесс в системе, используя этот файл. Как делается уже и не помню. ВинАпи, наверное, нужно будет использовать.
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
diadiavova
Дата 11.8.2009, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(SeventhSon @  11.8.2009,  13:56 Найти цитируемый пост)
Как реализовать этот "двойной щелчок" в C# ? 

Код

Process.Start(@"имя файла");



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Bogdan1024
Дата 11.8.2009, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

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



Цитата(diadiavova @ 11.8.2009,  12:23)
Цитата(SeventhSon @  11.8.2009,  13:56 Найти цитируемый пост)
Как реализовать этот "двойной щелчок" в C# ? 

Код

Process.Start(@"имя файла");

Неее, ему не это надо.

Нужно зарегистрировать обработчик для файлов с нужным тебе расширением. Но шо-то как это делается я не помню. Может быть в инсталере можно настроить?


--------------------
user posted image
PM MAIL   Вверх
Alekz
Дата 12.8.2009, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 5.2.2008
Где: Запорожье, Украин а

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



Цитата

Нужно зарегистрировать обработчик для файлов с нужным тебе расширением


Сервис->Свойства Папки-> типы файлов


Process.Start(@"имя файла") - полностью то же самое, что и двойной клик: запуск процеса или открытие файла в связанном с ним приложении.

При желании можно использовать перегрузку Process.Start(ProcessStartInfo). Тут указывается и приложение, и аргументы командной строки и еще куча всего.
Так например можно открыть документ в любом приложении, а не только в том, которое с ним ассоциировано.
PM MAIL   Вверх
SeventhSon
Дата 12.8.2009, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Нажимаю на кнопку:
Код

            openFileDialog1.ShowDialog();

            string fileAdres = openFileDialog1.FileName;

            Process p = Process.Start(@"E:\Others\Themes For Chrome-Dev\{0}", fileAdres);


Делаю вот так. Вылазит Какое-то исключение.

Правильно ли?
PM MAIL   Вверх
diadiavova
Дата 12.8.2009, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(SeventhSon @  12.8.2009,  21:51 Найти цитируемый пост)
Правильно ли? 

Нет

Код

           if( openFileDialog1.ShowDialog() == DialogResult.OK)
           {
           Process.Start(openFileDialog1.FileName);
           }

При условии, что будет выбран файл, который надо "два раза щёлкнуть" smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Genrih1
Дата 12.8.2009, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



к сожалению не могу попробовать в студии сейчас, но:
1) в Process.Start(String, String) как говорит мсдн, нужно первым задавать имя программы (это я допускаю, что вы через диалог открываете программу, которой потом хотите открыть файл {0})
2) раз у вас файл *.crx, можно допустить, что вы хотите форматированием в путь впихнуть имя файла1. это вообще неверно, потому что
а) Process.Start(String, String) не форматирует строку
б) имя файла через диалог уже и так возвращается полное имя, с путем
3) если придраться, то исключение может вылезти, если не проверять как вызвался диалог (здесь до этого не дойдет...)
4) если вылазит исключение, значит точно неправильно. поверьте, оно вылазит не для того, чтобы вам испортить нервы. там очень много полезной инфы, почитать которую много скорее, нежели постить на форум и ждать ответа
5) Address - два s (да, я придираюсь)

PM MAIL   Вверх
SeventhSon
Дата 13.8.2009, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



diadiavova, еще одно спасибо! Будет достаточно сообщений - плюсану Вам!


Genrih1, и Вам спасибо! Как новичок на Ваши придирки не обижаюсь smile
PM MAIL   Вверх
SeventhSon
Дата 15.8.2009, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А как настроить адрес файла: текущая папка(где экзешник)?
PM MAIL   Вверх
diadiavova
Дата 15.8.2009, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(SeventhSon @  15.8.2009,  14:28 Найти цитируемый пост)
А как настроить адрес файла: текущая папка(где экзешник)? 

Для начала попробуй вызвать его по относительному имени. Не получится смотри класс System.Wimndows.Forms.Applicanion там можно получить текущий каталог. Или, если это не WinForm-приложение - класс System.Environment.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
SeventhSon
Дата 23.8.2009, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

        // Нажатие на кнопку применения темы.
        private void button1_Click(object sender, EventArgs e)
        {
            if (radioButtonGrass.Checked == true)
            {
                Process.Start("@.../grass.crx");
            }                    
        }


Исправьте, что тут не так.
PM MAIL   Вверх
diadiavova
Дата 23.8.2009, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(SeventhSon @  23.8.2009,  12:16 Найти цитируемый пост)
Исправьте, что тут не так. 

А зачем собачка внутри кавычек?

Цитата(SeventhSon @  23.8.2009,  12:16 Найти цитируемый пост)
               Process.Start("@.../grass.crx");

Код

               Process.Start(@".../grass.crx");



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
SeventhSon
Дата 23.8.2009, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Исправил. Не удается найти файл. Файл кинул в папку с экзешником (Debug).

Добавлено через 5 минут и 14 секунд
Все работает, только когда прописываю полный адрес, а мне этого не надо - не один я буду пользоваться.
PM MAIL   Вверх
diadiavova
Дата 23.8.2009, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Файл надо кинуть в папку проекта. А в свойствах этого элемента надо поставить "Копировать если новее". Открываешь "обозреватель решений", выделяешь файл, и открываешь окно свойств. Там найдёшь. Тогда при построении он будет копироваться при необходимости в папку с программой.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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