Найти расширения всех регистрированных исполняемых файлов

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
caa2000
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 14.05.2009 (Чт) 4:50

Найти расширения всех регистрированных исполняемых файлов

Сообщение caa2000 » 16.12.2014 (Вт) 14:32

Здравстствуйте всем.
Обгуглил весь и-нет, искал в форуме.
Как в windowse можно найти список(расположение) расширений всех регистрированных на данный момент приложений (желательно для current user),чтобы вставить их в CommonDialog.Filter ?
Т.е. позволить открыть в Dialog-е "открываемые" файлы, к примеру *.pdf;*.bmp*;*.exe;*.xls;*.txt и т.д. (если такое приложение установлено), исключая *.dll;*.sys;*.ini;*.cfg; и т.д.
Может есть такая функция в VB ?
Спасибо.
Имеющий уши, да услышит.. (с) Новый Завет От Матфея святое благовествование

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 16.12.2014 (Вт) 14:59

Код: Выделить всё
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts

caa2000
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 14.05.2009 (Чт) 4:50

Re: Найти расширения всех регистрированных исполняемых файло

Сообщение caa2000 » 16.12.2014 (Вт) 17:21

Спасибо !
А для отслеживания изменений (если установлено новое приложение) вот с этим надо "играться" ?
Код: Выделить всё
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal Hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Public Function getstring(Hkey As Long, strPath As String, strValue As String)

Dim keyhand As Long
Dim datatype As Long
Dim lResult As Long
Dim strBuf As String
Dim lDataBufSize As Long
Dim intZeroPos As Integer
r = RegOpenKey(Hkey, strPath, keyhand)
lResult = RegQueryValueEx(keyhand, strValue, 0&, lValueType, ByVal 0&, lDataBufSize)
If lValueType = REG_SZ Then
    strBuf = String(lDataBufSize, " ")
    lResult = RegQueryValueEx(keyhand, strValue, 0&, 0&, ByVal strBuf, lDataBufSize)
    If lResult = ERROR_SUCCESS Then
        intZeroPos = InStr(strBuf, Chr$(0))
        If intZeroPos > 0 Then
            getstring = Left$(strBuf, intZeroPos - 1)
        Else
            getstring = strBuf
        End If
    End If
End If
RegCloseKey keyhand
End Function

Ну,в смысле не играться :scratch:
Имеющий уши, да услышит.. (с) Новый Завет От Матфея святое благовествование

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 17.12.2014 (Ср) 17:34

Что-то мне лень с этим кодом разбираться... Работает или нет?
Хотел высказать недовольство про неюникодные функции, но топом вспомнил, что это VB6.
И с нулевым байтом что-то подозрительное делается.

caa2000
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 14.05.2009 (Чт) 4:50

Re: Найти расширения всех регистрированных исполняемых файло

Сообщение caa2000 » 18.12.2014 (Чт) 0:47

Код нашёл в Registry.bas ещё сам не разбирался.
Код: Выделить всё
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal Hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Эту функцию юзать ?
Боюсь в registry напортачить.
Имеющий уши, да услышит.. (с) Новый Завет От Матфея святое благовествование

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 18.12.2014 (Чт) 12:50

Возмножно. Я не особо в курсе, как работать с реестром на winapi. Во-первых, не так уж часто с ним приходится иметь дело, а во-вторых, в .NET'е для этого есть встроенные средства.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Найти расширения всех регистрированных исполняемых файло

Сообщение iGrok » 18.12.2014 (Чт) 18:53

caa2000 писал(а):ещё сам не разбирался

Вот лучше поразбирайся. Там не только эту, ещё несколько соседних надо.
label:
cli
jmp label


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 37

    TopList