Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: SHGetValue Добавлено: 30.09.04 17:26  

Автор вопроса:  dNW
Подскажите объявление и использование этой функций

API-GUIDE на эта тему молчит..., но я знаю, что эта функция есть

Ответить

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

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



Вопросов: 117
Ответов: 1538
 Профиль | | #1 Добавлено: 30.09.04 22:38
Declare Function SHGetValue Lib "shlwapi.dll" Alias "SHGetValueA" ( _
ByVal hkey As Long, _
ByVal pszSubKey As String, _
ByVal pszValue As String, _
ByRef pdwType As Long, _
pvData As Any, _
ByRef pcbData As Long) As Long


==================================================
SHGetValue
Retrieves a registry value.


DWORD SHGetValue(
    HKEY hkey,
    LPCTSTR pszSubKey,
    LPCTSTR pszValue,
    LPDWORD pdwType,
    LPVOID pvData,
    LPDWORD pcbData
    ;);

Parameters
hkey
Handle to the currently open key, or any of the following predefined values: HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_DYN_DATA (Windows 95 only)
HKEY_LOCAL_MACHINE
HKEY_PERFORMANCE_DATA (Windows NT only)
HKEY_USERS

pszSubKey
Address of a null-terminated string that specifies the name of the subkey from which to retrieve the value.
pszValue
Address of the value.
pdwType
Type of value. For more information, see Registry Data Types.
pvData
Address of the destination data buffer.
pcbData
Size of the destination data buffer.
Return Values
Returns ERROR_SUCCESS if successful, or a nonzero error code defined in Winerror.h otherwise. You can use the FormatMessage function with the FORMAT_MESSAGE_FROM_SYSTEM flag to retrieve a generic description of the error.

Remarks

Note If your application must set/retrieve a series of values in the same key, it is better to open the key once and set/retrieve the values with the regular Microsoft® Win32® registry functions rather than use this function repeatedly.

Requirements
  Version 4.71 and later of Shlwapi.dll

  Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with Internet Explorer 4.0 or later).
  Windows 95/98/Me: Requires Windows 98 (or Windows 95 with Internet Explorer 4.0 or later).
  Header: Declared in Shlwapi.h.
  Import Library: Shlwapi.lib.

Ответить

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



Вопросов: 30
Ответов: 683
 Профиль | | #2 Добавлено: 01.10.04 07:14
Это хорошо, а как этим пользоваться?
На VB пожалуйста! СИ я не знаю

Ответить

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



Вопросов: 117
Ответов: 1538
 Профиль | | #3 Добавлено: 01.10.04 09:29
Ну всё же расписано по пунктам, что и как:

Private Declare Function SHGetValue Lib "shlwapi.dll" Alias "SHGetValueA" ( _
                                                ByVal hkey As Long, _
                                                ByVal pszSubKey As String, _
                                                ByVal pszValue As String, _
                                                ByRef pdwType As Long, _
                                                pvData As Any, _
                                                ByRef pcbData As Long) As Long
Const HKEY_CLASSES_ROOT As Long = &H80000000
Const REG_SZ As Long = 1
Dim pcbData As Long
Dim pvData As String * 100
Dim pdwType As Long
Dim pszValue As String
Dim pszSubKey As String
Dim hkey As Long
Private Sub Form_Load()
    hkey = HKEY_CLASSES_ROOT
    pszSubKey = ".wmv"
    pszValue = "Content Type"
    pdwType = REG_SZ
    SHGetValue hkey, ByVal pszSubKey, ByVal pszValue, pdwType, ByVal pvData, pcbData
    SHGetValue hkey, ByVal pszSubKey, ByVal pszValue, pdwType, ByVal pvData, pcbData
    MsgBox pvData, vbInformation, "HKEY_CLASSES_ROOT\" & pszSubKey & "\" & pszValue
End Sub

Ответить

Номер ответа: 4
Автор ответа:
 dNW



Вопросов: 30
Ответов: 683
 Профиль | | #4 Добавлено: 01.10.04 14:45
Спасибо

Ответить

Номер ответа: 5
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #5 Добавлено: 01.10.04 15:24
Только смотри, то что два раза подряд вызывается SHGetValue - это не опечатка. Так и должно быть. Первый вызов получает длину значения, второй уже само значение.

Ответить

Номер ответа: 6
Автор ответа:
 dNW



Вопросов: 30
Ответов: 683
 Профиль | | #6 Добавлено: 01.10.04 18:27
Я уже разобрался :-)

Я использую конструкцию:

Dim t As String: t=String$(100," ";)
SHGetValue HKEY_CLASSES_ROOT, ".wmv", "Content Type", REG_SZ, ByVal t, Len(t)

И два вызова не нужны

Ответить

Номер ответа: 7
Автор ответа:
 dNW



Вопросов: 30
Ответов: 683
 Профиль | | #7 Добавлено: 01.10.04 18:29
А ты случайно не знаешь как сохранить изображение, зная его DC. Впихивание на форму с последующим SavePicture не предлогай...

Ответить

Номер ответа: 8
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #8 Добавлено: 01.10.04 20:20
Ну если не подходит форма, впихни в PictureBox :)

А вообще напрямую, как я понимаю, можно создать файл так: описать для него BITMAPFILEHEADER, BITMAPINFOHEADER, BITMAPINFO на основе данных твоего DC(может ещё какие структуры) поместить их в начале массива байт и сделать CreateFile для этого массива. Сам не пробовал, но думаю, надо рыть в эту сторону.

Ответить

Страница: 1 |

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



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