VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2005/07/29(Fri) 17:31
投稿者さゆり
Eメール
URL
タイトル全ソースです。すいません

改行位置かおかしかったので再投稿します。
すいません。

Private Const ERROR_SUCCESS = 0                         '成功した場合
Private Type SECURITY_ATTRIBUTES
    nLength As Long                                     '構造体のバイト数
    lpSecurityDescriptor As Long                        'セキュリティデスクリプタ(Win95,98,Meで
は無効)
    bInheritHandle As Long                              '1のとき、属性を継承する
End Type

'指定のキーを作成する、キーが存在する場合はそのキーをオープンする
Private Declare Function RegCreateKeyEx Lib "ADVAPI32.dll" Alias "RegCreateKeyExA" _
        (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, _
        ByVal lpClass As String, ByVal dwOptions As Long, _
        ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, _
        phkResult As Long, lpdwDisposition As Long) As Long
Private Declare Function RegSetValueNumEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey
As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As
Any, ByVal cbData As Long) As Long

'hKeyの定数
Private Const HKEY_CLASSES_ROOT = &H80000000            'ソフトウェアの設定情報
Private Const HKEY_CURRENT_USER = &H80000001            '現在のハードウェアの設定情報
Private Const HKEY_LOCAL_MACHINE = &H80000002           'ローカルコンピュータに関する情報
Private Const HKEY_USERS = &H80000003                   '全てのユーザーの環境設定情報
Private Const HKEY_PERFORMANCE_DATA = &H80000004        'パフォーマンスデータ(windowに関する設
定?)→どの書籍にも見当たらない
Private Const HKEY_CURRENT_CONFIG = &H80000005          '特定のユーザーの環境設定情報
Private Const HKEY_DYN_DATA = &H80000006                'デバイスのステータス情報
'dwOptionsの定数
Private Const REG_OPTION_NON_VOLATILE = 0               '設定内容をレジストリに保存
Private Const REG_OPTION_VOLATILE = 1                   '(この定数は無効らしい)
Private Const REG_OPTION_BACKUP = 4                     '(同上)
'samDesiredの定数
Private Const KEY_CREATE_LINK = &H20                    'キーオブジェクトとのリンクを作成する
Private Const KEY_ENUMERATE_SUB_KEYS = &H8              'サブキーを列挙する
Private Const KEY_QUERY_VALUE = &H1                     'レジストリの値を取得する
Private Const KEY_SET_VALUE = &H2                       'レジストリの値を設定する
Private Const KEY_CREATE_SUB_KEY = &H4                  'サブキーを作成する
Private Const KEY_NOTIFY = &H10                         'レジストリの内容変更通知を要求する
'lpdwDispositionの戻り値
Private Const REG_CREATED_NEW_KEY = &H1                 'キーを新規作成
Private Const REG_OPENED_EXISTRING_KEY = &H2            '既存キーをオープンする

'レジストリキーのハンドルを解放する
Private Declare Function RegCloseKey Lib "ADVAPI32.dll" _
        (ByVal hKey As Long) As Long
'メッセージの文字列を指定の書式で取得する
Private Declare Function FormatMessage Lib "kernel32.dll" Alias "FormatMessageA" _
    (ByVal dwFlags As Long, ByVal lpSource As Any, ByVal dwMessageId As Long, _
    ByVal dwLanguageId As Long, ByVal lpBuffer As String, _
    ByVal nSize As Long, Arguments As Long) As Long
'dwFlagsの定数
Private Const FORMAT_MESSAGE_ALLOCATE_BUFFER = &H100            'nSizeデ指定したサイズのバッフ
ァを確保する
Private Const FORMAT_MESSAGE_IGNORE_INSERTS = &H200             'バッファに引数を挿入しない
Private Const FORMAT_MESSAGE_FROM_STRING = &H400                'lpSourceはメッセージを定義する
文字列
                                                                '(FORMAT_MESSAGE_FROM_HMODULE
、または
                                                                ' FORMAT_MESSAGE_FROM_SYSTEMと
組み合わせ不可)
Private Const FORMAT_MESSAGE_FROM_MODULE = &H800                'lpSouceはメッセージテーブルリ
ソースを
                                                                '持つモジュールのハンドル
                                                                '(FORMAT_MESSAGE_FROM_STRINGと
組み合わせ不可)
                                                                'lpSourceが0のとき、カレントプロ
セスの
                                                                'モジュールを検索する
Private Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000               'システムメッセージリソースを検
索する
Private Const FORMAT_MESSAGE_ARGUMENT_ARRAY = &H2000            'Argumentはva_list構造体ではな
い。

'(dwFlagsの下位バイトの意味を指定する定数)
'0                                                              'すべての文字を出力する
Private Const FORMAT_MESSAGE_MAX_WIDTH_MASK = &HFF              '出力する最大バイト数
'0 でも& HFFでもないとき                                        'メッセージ中の改行を無視する
Private Sub Command1_Click()
Dim rc As Long, sError As String
Dim lngResult As Long, lngDisposition As Long
Dim udtSECURITY_ATTRIBUTES As SECURITY_ATTRIBUTES

'レジストリにキーを作成する
rc = RegCreateKeyEx(HKEY_CURRENT_USER, "Software\WinAPI\ReistryTest", 0&, vbNullString, _
    REG_OPTION_NON_VOLATILE, KEY_CREATE_SUB_KEY, udtSECURITY_ATTRIBUTES, lngResult,
lngDisposition)

If rc = ERROR_SUCCESS Then
    If lngDisposition = REG_CREATED_NEW_KEY Then
        MsgBox "HKEY_CURRENT_USER\Software\WinAPI\ReistryTestにキーを作成しました"
    Else
        MsgBox "HKEY_CURRENT_USER\Software\WinAPI\ReistryTestのキーをオープンしました"
    End If
Else
    'エラーコードからエラーメッセージを取得
    sError = String(260, vbNullChar)
    Call FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ByVal 0&, rc, 0, sError, Len(sError), 0)
    MsgBox sError
End If
    Call RegSetValueNumEx(lngResult, "TEST", 0, REG_DWORD, 1, 4)
    Call RegCloseKey(hKey)
End Sub


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -