/*
* windows.cs
* Copyright (c) 2008-2009 kbinani
*
* This file is part of bocoree.
*
* bocoree is free software; you can redistribute it and/or
* modify it under the terms of the BSD License.
*
* bocoree is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
using System;
using System.Runtime.InteropServices;
namespace bocoree {
public static partial class windows {
#region winbase.h
public const int OF_READ = 0;
public const int OF_READWRITE = 2;
public const int OF_WRITE = 1;
public const int OF_SHARE_COMPAT = 0;
public const int OF_SHARE_DENY_NONE = 64;
public const int OF_SHARE_DENY_READ = 48;
public const int OF_SHARE_DENY_WRITE = 32;
public const int OF_SHARE_EXCLUSIVE = 16;
public const int OF_CREATE = 4096;
public const int DONT_RESOLVE_DLL_REFERENCES = 0x00000001;
public const int LOAD_LIBRARY_AS_DATAFILE = 0x00000002;
public const int LOAD_WITH_ALTERED_SEARCH_PATH = 0x00000008;
public const int LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x00000010;
public const int LOAD_LIBRARY_AS_IMAGE_RESOURCE = 0x00000020;
public const int LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE = 0x00000040;
[DllImport( "kernel32.dll" )]
public static extern IntPtr LoadLibraryExW( [MarshalAs( UnmanagedType.LPWStr )]string lpFileName, IntPtr hFile, uint dwFlags );
[DllImport( "kernel32.dll", CharSet = CharSet.Ansi, EntryPoint = "GetProcAddress", ExactSpelling = true )]
public static extern IntPtr GetProcAddress( IntPtr hModule, string lpProcName );
[DllImport( "kernel32.dll" )]
public static extern bool FreeLibrary( IntPtr hModule );
#endregion
#region winerror.h
public const uint ERROR_SUCCESS = 0;
#endregion
#region winreg.h
public const uint HKEY_CLASSES_ROOT = 0x80000000;
public const uint HKEY_CURRENT_USER = 0x80000001;
public const uint HKEY_LOCAL_MACHINE = 0x80000002;
public const uint HKEY_USERS = 0x80000003;
public const uint HKEY_PERFORMANCE_DATA = 0x80000004;
public const uint HKEY_CURRENT_CONFIG = 0x80000005;
public const uint HKEY_DYN_DATA = 0x80000006;
///
///
///
/// キーのハンドル
/// オープンするサブキーの名前
/// 予約(0を指定)
/// セキュリティアクセスマスク
/// ハンドルを格納する変数のアドレス
///
[DllImport( "Advapi32.dll" )]
public static unsafe extern int RegOpenKeyExW(
uint hKey,
[MarshalAs( UnmanagedType.LPWStr )] string pSubKey,
uint ulOptions,
uint samDesired,
uint* phkResult );
///
///
///
/// キーのハンドル
/// サブキーのインデックス
/// サブキー名を格納するバッファ
/// pName のサイズを入れた変数
/// 予約(NULLを指定)
/// クラス名を格納するバッファ
/// pClass のサイズを入れた変数
/// 最終書き込み時間
///
[DllImport( "Advapi32.dll" )]
public static unsafe extern int RegEnumKeyExW(
uint hKey,
uint dwIndex,
[MarshalAs( UnmanagedType.LPWStr )] string pName,
uint* pcbName,
uint* pReserved,
[MarshalAs( UnmanagedType.LPWStr )] string pClass,
uint* pcbClass,
FILETIME* pftLastWrite );
///
///
///
/// キーのハンドル
/// 値の名前
/// 予約(NULLを指定)
/// データタイプを格納する変数
/// データを格納するバッファ
/// バッファサイズを入れた変数
///
[DllImport( "Advapi32.dll" )]
public static unsafe extern int RegQueryValueExW(
uint hKey,
[MarshalAs( UnmanagedType.LPWStr )] string pValueName,
uint* pReserved,
uint* pType,
byte* pData,
uint* pcbData );
///
///
///
/// キーのハンドル
///
[DllImport( "Advapi32.dll" )]
public static extern int RegCloseKey( uint hKey );
#endregion
#region winnt.h
public const uint KEY_QUERY_VALUE = 1;
public const uint KEY_SET_VALUE = 2;
public const uint KEY_CREATE_SUB_KEY = 4;
public const uint KEY_ENUMERATE_SUB_KEYS = 8;
public const uint KEY_NOTIFY = 16;
public const uint KEY_CREATE_LINK = 32;
public const uint KEY_WRITE = 0x20006;
public const uint KEY_EXECUTE = 0x20019;
public const uint KEY_READ = 0x20019;
public const uint KEY_ALL_ACCESS = 0xf003f;
public const int REG_NONE = 0;
public const int REG_SZ = 1;
public const int REG_EXPAND_SZ = 2;
public const int REG_BINARY = 3;
public const int REG_DWORD = 4;
public const int REG_DWORD_LITTLE_ENDIAN = 4;
public const int REG_DWORD_BIG_ENDIAN = 5;
public const int REG_LINK = 6;
public const int REG_MULTI_SZ = 7;
public const int REG_RESOURCE_LIST = 8;
public const int REG_FULL_RESOURCE_DESCRIPTOR = 9;
public const int REG_RESOURCE_REQUIREMENTS_LIST = 10;
public const int REG_QWORD = 11;
public const int REG_QWORD_LITTLE_ENDIAN = 11;
#endregion
#region windef.h
public const int MAX_PATH = 260;
#endregion
#region winuser.h
public const int WM_MOUSEMOVE = 512;
public const int WM_LBUTTONDOWN = 513;
public const int WM_LBUTTONUP = 514;
public const int WM_LBUTTONDBLCLK = 515;
public const int WM_RBUTTONDOWN = 516;
public const int WM_RBUTTONUP = 517;
public const int WM_RBUTTONDBLCLK = 518;
public const int WM_MBUTTONDOWN = 519;
public const int WM_MBUTTONUP = 520;
public const int WM_MBUTTONDBLCLK = 521;
public const int WM_MOUSEWHEEL = 522;
#endregion
public const uint SHGFI_ICON = 0x100;
public const uint SHGFI_LARGEICON = 0x0; // 'Large icon
public const uint SHGFI_SMALLICON = 0x1; // 'Small icon
[DllImport( "shell32.dll" )]
public static extern IntPtr SHGetFileInfo( string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags );
}
#region windef.h
public struct FILETIME {
public uint dwLowDateTime;
public uint dwHighDateTime;
}
#endregion
[StructLayout( LayoutKind.Sequential )]
public struct SHFILEINFO {
public IntPtr hIcon;
public IntPtr iIcon;
public uint dwAttributes;
[MarshalAs( UnmanagedType.ByValTStr, SizeConst = 260 )]
public string szDisplayName;
[MarshalAs( UnmanagedType.ByValTStr, SizeConst = 80 )]
public string szTypeName;
}
}