Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Открыть с помощью... Добавлено: 04.08.03 14:37  

Автор вопроса:  Calhoon | Web-сайт: 4elovekssn.blog.ru | ICQ: 789764 
Помогите люди добрые!!! Как сделать, чтобы моя прога открывала файл по двойному клику на нем? (Открыть с помощью...) Очень надо!

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 crackoff



ICQ: 156165990 

Вопросов: 12
Ответов: 229
 Профиль | | #1 Добавлено: 04.08.03 15:34

1. Нужно зарегистрировать свой тип файла в системе, чтобы винда знала какую прогу запускать. Программно это делается так:

Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const STANDARD_RIGHTS_ALL = &H1F0000
Private Const REG_SZ = 1
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_SET_VALUE = &H2
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_NOTIFY = &H10
Private Const KEY_CREATE_LINK = &H20
Private Const SYNCHRONIZE = &H100000
Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))

Private Sub AssociateFile(fExtension As String, dType As String, tDescription As String, aPath As String, nIcon As Integer)
    Dim RetVal As Long, kWnd As Long, dCommand As String
    dCommand = "\shell\open\command"
    RetVal = RegCreateKey(HKEY_CLASSES_ROOT, fExtension, kWnd)
    RetVal = RegSetValue(HKEY_CLASSES_ROOT, fExtension, REG_SZ, dType, Len(dType))
    RetVal = RegCloseKey(kWnd)
    RetVal = RegCreateKey(HKEY_CLASSES_ROOT, dType & dCommand, kWnd)
    RetVal = RegSetValue(HKEY_CLASSES_ROOT, dType, REG_SZ, tDescription, Len(tDescription))
    RetVal = RegSetValue(HKEY_CLASSES_ROOT, dType & dCommand, REG_SZ, aPath & " %1", Len(aPath) + 3)
    RetVal = RegCloseKey(kWnd)
    RetVal = RegCreateKey(HKEY_CLASSES_ROOT, dType & "\DefaultIcon", kWnd)
    RetVal = RegSetValue(HKEY_CLASSES_ROOT, dType & "\DefaultIcon", REG_SZ, aPath & "," & nIcon, Len(aPath) + Len(CStr(nIcon)) + 1)
    RetVal = RegCloseKey(kWnd)
End Sub

Копирайт не мой. Не помню где взял.

Функцией пользоваться так:
    AssociateFile Type, Class, Description, App, Icon

где Type - тип файла(строка), например, ".mmm";

Class  - класс файла(строка), например, "MyApp.MyType";

Description - описание(строка), например, "Файл моего типа";

App - путь к приложению, которое будет запускать файл(строка), например, "C:\MyFolder\MyApp.exe";

Icon - значок(число), который будет соответствовать файлу вашего типа.

ЭТО надо выполнить на одной машине всего один раз.

 

2. Нужно в программе обрабатывать параметр Command. Лучше всего делать это при загрузке, т.к. туда возвращается имя файла, на котором юзер ткнул дважды.

Удачи

Ответить

Номер ответа: 2
Автор ответа:
 Calhoon



ICQ: 789764 

Вопросов: 90
Ответов: 230
 Web-сайт: 4elovekssn.blog.ru
 Профиль | | #2
Добавлено: 04.08.03 20:37
Огроменное спасибо! Не знаю, что бы и делал! Файл зарегистрировать я смог, вот параметр для обработки не знал.

Ответить

Номер ответа: 3
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #3
Добавлено: 06.08.03 10:26

Пусть тебе надо зарегистрировать тип *.xxx за приложением c:\program files\YourApp\Prog.exe и иконкой должна служить вторая иконка ресурсов этого файла. Нужно сделать следующее:

- Создать раздел в реестре HKEY_CLASSES_ROOT\.qnp\

- Присвоить ему значение по умолчанию "YourApp.Document"

- Создать раздел реестра HKEY_CLASSES_ROOT\YourApp.Document\

- Присвоить ему значение по умолчанию "Текстовый документ YourApp"

- Создать в нем подраздел HKEY_CLASSES_ROOT\YourApp.Document\DefaultIcon\

- Присвоить ему значение по умолчанию "c:\program files\YourApp\Prog.exe, 2"

- Создать подраздел HKEY_CLASSES_ROOT\YourApp.Document\shell\open\command\

- Присвоить ему значение по умолчанию "c:\program files\YourApp\Prog.exe %1"

а для открытия обрабатывай комеандную строку

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам