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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ассоциации файла с программой 
:(
    Опции темы
csharpbaby
Дата 5.11.2006, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



вопрос такой,

есть файл к примеру C:\index.php

нужно узнать какая программа по дефолту открывает .php файлы,
а если такой нет то выдать окно для выбора вручную (как в винде)

подскажите в какую сторону копать  smile 
PM MAIL   Вверх
Piphon
Дата 5.11.2006, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Реестр

HTTP_CLASSES_ROOT\.php
Выдераешь дефолт значение (например %php_type%)

HTTP_CLASSES_ROOT\%php_type%\shell\open\command
Опять же дефолт значение. Данная строка и будет путем к программе ассоцируемой с .php заменяешь %1 (если он есть)

Это сообщение отредактировал(а) Piphon - 5.11.2006, 20:10
--------------------
Non Progredi Est Regredi...
PM MAIL ICQ   Вверх
mr.DUDA
Дата 5.11.2006, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Лучше использовать стандартную функцию винапи - AssocQueryString. Лови готовый пример:

Код
using System;
using System.Text;
using System.Collections.Generic;
using System.Runtime.InteropServices;

class Program
{
    static void Main(string[] args)
    {
        // вернёт "Microsoft Office Word"
        string appName = ShellHelper.GetAssociation(".doc", true);

        // вернёт "C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE"
        string appPath = ShellHelper.GetAssociation(".doc", false);
    }
}

/// <summary>
/// Вспомогательный класс для получения информации об ассоциациях файлов.
/// </summary>
public class ShellHelper
{
    /// <summary>
    /// Возвращает имя ассоциированного приложения (если friendlyName = true)
    /// или полный путь к исполняемому файлу (friendlyName = false) по известному
    /// расширению файла.
    /// </summary>
    public static string GetAssociation(string doctype, bool friendlyName)
    {
        uint pcchOut = 1024;
        StringBuilder ret = new StringBuilder(1024);
        AssocStr flags = friendlyName ? AssocStr.FriendlyAppName : AssocStr.Executable;
        AssocQueryString(0, flags, doctype, "open", ret, ref pcchOut);
        return ret.ToString();
    }

    [Flags]
    enum AssocStr
    {
        Command = 1,
        Executable,
        FriendlyDocName,
        FriendlyAppName,
        NoOpen,
        ShellNewValue,
        DDECommand,
        DDEIfExec,
        DDEApplication,
        DDETopic
    }

    [DllImport("Shlwapi.dll", SetLastError = true, CharSet = CharSet.Auto)]
    static extern uint AssocQueryString(int flags,
        AssocStr str,
        string pszAssoc,
        string pszExtra,
        StringBuilder pszOut,
        ref uint pcchOut);
}


Добавлено @ 23:35 
Цитата(csharpbaby @  5.11.2006,  18:44 Найти цитируемый пост)
а если такой нет то выдать окно для выбора вручную (как в винде)

а это было где-то в разделе Shell Programming на codeproject.com, или на rsdn.ru можно поискать.


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

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


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

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


 




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


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

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