windows-pr 0.3.0-mswin32 → 0.4.0-mswin32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,155 @@
1
+ require 'Win32API'
2
+
3
+ module Windows
4
+ module Process
5
+ PROCESS_ALL_ACCESS = 0x1F0FFF
6
+ PROCESS_CREATE_PROCESS = 0x0080
7
+ PROCESS_CREATE_THREAD = 0x0002
8
+ PROCESS_DUP_HANDLE = 0x0040
9
+ PROCESS_QUERY_INFORMATION = 0x0400
10
+ PROCESS_QUERY_LIMITED_INFORMATION = 0x1000
11
+ PROCESS_SET_QUOTA = 0x0100
12
+ PROCESS_SET_INFORMATION = 0x0200
13
+ PROCESS_SUSPEND_RESUME = 0x0800
14
+ PROCESS_TERMINATE = 0x0001
15
+ PROCESS_VM_OPERATION = 0x0008
16
+ PROCESS_VM_READ = 0x0010
17
+ PROCESS_VM_WRITE = 0x0020
18
+ SYNCHRONIZE = 1048576
19
+ STILL_ACTIVE = 259
20
+
21
+ ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000
22
+ BELOW_NORMAL_PRIORITY_CLASS = 0x00004000
23
+ HIGH_PRIORITY_CLASS = 0x00000080
24
+ IDLE_PRIORITY_CLASS = 0x00000040
25
+ NORMAL_PRIORITY_CLASS = 0x00000020
26
+ REALTIME_PRIORITY_CLASS = 0x00000100
27
+
28
+ # Process creation flags
29
+ CREATE_BREAKAWAY_FROM_JOB = 0x01000000
30
+ CREATE_DEFAULT_ERROR_MODE = 0x04000000
31
+ CREATE_NEW_CONSOLE = 0x00000010
32
+ CREATE_NEW_PROCESS_GROUP = 0x00000200
33
+ CREATE_NO_WINDOW = 0x08000000
34
+ CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000
35
+ CREATE_SEPARATE_WOW_VDM = 0x00000800
36
+ CREATE_SHARED_WOW_VDM = 0x00001000
37
+ CREATE_SUSPENDED = 0x00000004
38
+ CREATE_UNICODE_ENVIRONMENT = 0x00000400
39
+ DEBUG_ONLY_THIS_PROCESS = 0x00000002
40
+ DEBUG_PROCESS = 0x00000001
41
+ DETACHED_PROCESS = 0x00000008
42
+
43
+ STARTF_USESHOWWINDOW = 0x00000001
44
+ STARTF_USESIZE = 0x00000002
45
+ STARTF_USEPOSITION = 0x00000004
46
+ STARTF_USECOUNTCHARS = 0x00000008
47
+ STARTF_USEFILLATTRIBUTE = 0x00000010
48
+ STARTF_RUNFULLSCREEN = 0x00000020
49
+ STARTF_FORCEONFEEDBACK = 0x00000040
50
+ STARTF_FORCEOFFFEEDBACK = 0x00000080
51
+ STARTF_USESTDHANDLES = 0x00000100
52
+ STARTF_USEHOTKEY = 0x00000200
53
+
54
+ CreateProcess = Win32API.new('kernel32', 'CreateProcess', 'LPLLLLLLPP', 'I')
55
+ CreateRemoteThread = Win32API.new('kernel32', 'CreateRemoteThread', 'LPLLPLP', 'L')
56
+ ExitProcess = Win32API.new('kernel32', 'ExitProcess', 'L', 'V')
57
+ GetCommandLine = Win32API.new('kernel32', 'GetCommandLine', 'V', 'P')
58
+ GetCurrentProcess = Win32API.new('kernel32', 'GetCurrentProcess', 'V', 'L')
59
+ GetCurrentProcessId = Win32API.new('kernel32', 'GetCurrentProcessId', 'V', 'L')
60
+ GetEnvironmentStrings = Win32API.new('kernel32', 'GetEnvironmentStrings', 'V', 'L')
61
+ GetEnvironmentVariable = Win32API.new('kernel32', 'GetEnvironmentVariable', 'PPL', 'L')
62
+ GetExitCodeProcess = Win32API.new('kernel32', 'GetExitCodeProcess', 'LP', 'I')
63
+ GetPriorityClass = Win32API.new('kernel32', 'GetPriorityClass', 'L', 'L')
64
+ GetProcessHandleCount = Win32API.new('kernel32', 'GetProcessHandleCount', 'LP', 'I')
65
+ GetProcessId = Win32API.new('kernel32', 'GetProcessId', 'L', 'L')
66
+ GetProcessTimes = Win32API.new('kernel32', 'GetProcessTimes', 'LPPPP', 'I')
67
+ GetStartupInfo = Win32API.new('kernel32', 'GetStartupInfo', 'P', 'V')
68
+ OpenProcess = Win32API.new('kernel32', 'OpenProcess', 'LIL', 'L')
69
+ SetEnvironmentVariable = Win32API.new('kernel32', 'SetEnvironmentVariable', 'PP', 'I')
70
+ Sleep = Win32API.new('kernel32', 'Sleep', 'L', 'V')
71
+ SleepEx = Win32API.new('kernel32', 'SleepEx', 'LI', 'L')
72
+ TerminateProcess = Win32API.new('kernel32', 'TerminateProcess', 'LL', 'I')
73
+ WaitForInputIdle = Win32API.new('user32', 'WaitForInputIdle', 'LL', 'L')
74
+
75
+ def CreateProcess(app, cmd, pattr, tattr, handles, flags, env, dir, sinfo, pinfo)
76
+ CreateProcess.call(app, cmd, pattr, tattr, handles, flags, env, dir, sinfo, pinfo) != 0
77
+ end
78
+
79
+ def CreateRemoteThread(handle, tattr, size, start, param, flags, tid)
80
+ CreateRemoteThread.call(handle, tattr, size, start, param, flags, tid)
81
+ end
82
+
83
+ def ExitProcess(exit_code)
84
+ ExitProcess.call(exit_code)
85
+ end
86
+
87
+ def GetCommandLine
88
+ GetCommandLine.call
89
+ end
90
+
91
+ def GetCurrentProcess()
92
+ GetCurrentProcess.call
93
+ end
94
+
95
+ def GetCurrentProcessId()
96
+ GetCurrentProcessId.call
97
+ end
98
+
99
+ def GetEnvironmentStrings()
100
+ GetEnvironmentStrings.call
101
+ end
102
+
103
+ def GetEnvironmentVariable(name, buffer, size)
104
+ GetEnvironmentVariable.call(name, buffer, size)
105
+ end
106
+
107
+ def GetExitCodeProcess(handle, exit_code)
108
+ GetExitCodeProcess.call(handle, exit_code) != 0
109
+ end
110
+
111
+ def GetPriorityClass(handle)
112
+ GetPriorityClass.call(handle)
113
+ end
114
+
115
+ def GetProcessHandleCount(handle, count)
116
+ GetProcessHandleCount.call(handle, count) != 0
117
+ end
118
+
119
+ def GetProcessId(handle)
120
+ GetProcessId.call(handle)
121
+ end
122
+
123
+ def GetProcessTimes(handle, t_creation, t_exit, t_kernel, t_user)
124
+ GetProcessTimes.call(handle, t_creation, t_exit, t_kernel, t_user) != 0
125
+ end
126
+
127
+ def GetStartupInfo(info_struct)
128
+ GetStartupInfo.call(info_struct)
129
+ end
130
+
131
+ def OpenProcess(access, handle, pid)
132
+ OpenProcess.call(access, handle, pid)
133
+ end
134
+
135
+ def SetEnvironmentVariable(name, value)
136
+ SetEnvironmentVariable.call(name, value)
137
+ end
138
+
139
+ def Sleep(milliseconds)
140
+ Sleep.call(milliseconds)
141
+ end
142
+
143
+ def SleepEx(milliseconds, alertable)
144
+ SleepEx.call(milliseconds, alertable)
145
+ end
146
+
147
+ def TerminateProcess(handle, exit_code)
148
+ TerminateProcess.call(handle, exit_code) != 0
149
+ end
150
+
151
+ def WaitForInputIdle(handle, milliseconds)
152
+ WaitForInputIdle.call(handle, milliseconds)
153
+ end
154
+ end
155
+ end
@@ -0,0 +1,88 @@
1
+ require 'Win32API'
2
+
3
+ module Windows
4
+ module Shell
5
+ # CSIDL constants
6
+ CSIDL_DESKTOP = 0x0000
7
+ CSIDL_INTERNET = 0x0001
8
+ CSIDL_PROGRAMS = 0x0002
9
+ CSIDL_CONTROLS = 0x0003
10
+ CSIDL_PRINTERS = 0x0004
11
+ CSIDL_PERSONAL = 0x0005
12
+ CSIDL_FAVORITES = 0x0006
13
+ CSIDL_STARTUP = 0x0007
14
+ CSIDL_RECENT = 0x0008
15
+ CSIDL_SENDTO = 0x0009
16
+ CSIDL_BITBUCKET = 0x000a
17
+ CSIDL_STARTMENU = 0x000b
18
+ CSIDL_MYDOCUMENTS = 0x000c
19
+ CSIDL_MYMUSIC = 0x000d
20
+ CSIDL_MYVIDEO = 0x000e
21
+ CSIDL_DESKTOPDIRECTORY = 0x0010
22
+ CSIDL_DRIVES = 0x0011
23
+ CSIDL_NETWORK = 0x0012
24
+ CSIDL_NETHOOD = 0x0013
25
+ CSIDL_FONTS = 0x0014
26
+ CSIDL_TEMPLATES = 0x0015
27
+ CSIDL_COMMON_STARTMENU = 0x0016
28
+ CSIDL_COMMON_PROGRAMS = 0X0017
29
+ CSIDL_COMMON_STARTUP = 0x0018
30
+ CSIDL_COMMON_FAVORITES = 0x001f
31
+ CSIDL_COMMON_DESKTOPDIRECTORY = 0x0019
32
+ CSIDL_APPDATA = 0x001a
33
+ CSIDL_PRINTHOOD = 0x001b
34
+ CSIDL_LOCAL_APPDATA = 0x001c
35
+ CSIDL_ALTSTARTUP = 0x001d
36
+ CSIDL_COMMON_ALTSTARTUP = 0x001e
37
+ CSIDL_INTERNET_CACHE = 0x0020
38
+ CSIDL_COOKIES = 0x0021
39
+ CSIDL_HISTORY = 0x0022
40
+ CSIDL_COMMON_APPDATA = 0x0023
41
+ CSIDL_WINDOWS = 0x0024
42
+ CSIDL_SYSTEM = 0x0025
43
+ CSIDL_PROGRAM_FILES = 0x0026
44
+ CSIDL_MYPICTURES = 0x0027
45
+ CSIDL_PROFILE = 0x0028
46
+ CSIDL_SYSTEMX86 = 0x0029
47
+ CSIDL_PROGRAM_FILESX86 = 0x002a
48
+ CSIDL_PROGRAM_FILES_COMMON = 0x002b
49
+ CSIDL_PROGRAM_FILES_COMMONX86 = 0x002c
50
+ CSIDL_COMMON_TEMPLATES = 0x002d
51
+ CSIDL_COMMON_DOCUMENTS = 0x002e
52
+ CSIDL_CONNECTIONS = 0x0031
53
+ CSIDL_COMMON_MUSIC = 0x0035
54
+ CSIDL_COMMON_PICTURES = 0x0036
55
+ CSIDL_COMMON_VIDEO = 0x0037
56
+ CSIDL_RESOURCES = 0x0038
57
+ CSIDL_RESOURCES_LOCALIZED = 0x0039
58
+ CSIDL_COMMON_OEM_LINKS = 0x003a
59
+ CSIDL_CDBURN_AREA = 0x003b
60
+ CSIDL_COMMON_ADMINTOOLS = 0x002f
61
+ CSIDL_ADMINTOOLS = 0x0030
62
+
63
+ # Return codes
64
+ S_FALSE = 1
65
+ E_FAIL = 2147500037
66
+ E_INVALIDARG = 2147483651
67
+
68
+ # Flags
69
+ SHGFP_TYPE_CURRENT
70
+ SHGFP_TYPE_DEFAULT
71
+
72
+ SHGetFolderPath = Win32API.new('shell32', 'SHGetFolderPath', 'LLLLP', 'L')
73
+ SHGetSpecialFolderLocation = Win32API.new('shell32', 'SHGetSpecialFolderLocation', 'LIP', 'L')
74
+ SHGetSpecialFolderPath = Win32API.new('shell32', 'SHGetSpecialFolderPath', 'LPLL','L')
75
+
76
+ def SHGetFolderPath(handle, folder, token, flags, path)
77
+ SHGetFolderPath.call(handle, folder, token, flags, path)
78
+ end
79
+
80
+ def SHGetSpecialFolderLocation(handle, folder, pidl)
81
+ SHGetSpecialFolderLocation.call(handle, folder, pidl)
82
+ end
83
+
84
+ def SHGetSpecialFolderPath(handle, path, folder, create)
85
+ SHGetSpecialFolderPath.call(handle, path, folder, create)
86
+ end
87
+ end
88
+ end
@@ -16,7 +16,6 @@
16
16
  # WaitForSingleObjectEx()
17
17
  # WaitForMultipleObjects()
18
18
  # WaitForMultipleObjectsEx()
19
- # WaitForInputIdle()
20
19
  #
21
20
  # Defines the the following constants:
22
21
  #
@@ -30,7 +29,7 @@
30
29
  #
31
30
  # Add the rest of the synchronization functions.
32
31
  #######################################################################
33
- require "Win32API"
32
+ require 'Win32API'
34
33
 
35
34
  module Windows
36
35
  module Synchronize
@@ -39,23 +38,124 @@ module Windows
39
38
  WAIT_TIMEOUT = 0x102
40
39
  WAIT_ABANDONED = 128
41
40
  WAIT_FAILED = 0xFFFFFFFF
41
+
42
+ # Wake mask constants
43
+ QS_ALLEVENTS = 0x04BF
44
+ QS_ALLINPUT = 0x04FF
45
+ QS_ALLPOSTMESSAGE = 0x0100
46
+ QS_HOTKEY = 0x0080
47
+ QS_INPUT = 0x407
48
+ QS_KEY = 0x0001
49
+ QS_MOUSE = 0x0006
50
+ QS_MOUSEBUTTON = 0x0004
51
+ QS_MOUSEMOVE = 0x0002
52
+ QS_PAINT = 0x0020
53
+ QS_POSTMESSAGE = 0x0008
54
+ QS_RAWINPUT = 0x0400
55
+ QS_SENDMESSAGE = 0x0040
56
+ QS_TIMER = 0x0010
57
+
58
+ # Wait type constants
59
+ MWMO_ALERTABLE = 0x0002
60
+ MWMO_INPUTAVAILABLE = 0x0004
61
+ MWMO_WAITALL = 0x0001
62
+
63
+ # Access rights
64
+ EVENT_ALL_ACCESS = 0x1F0003
65
+ EVENT_MODIFY_STATE = 0x0002
66
+ MUTEX_ALL_ACCESS = 0x1F0001
67
+ MUTEX_MODIFY_STATE = 0x0001
68
+ SEMAPHORE_ALL_ACCESS = 0x1F0003
69
+ SEMAPHORE_MODIFY_STATE = 0x0002
42
70
 
43
71
  CreateEvent = Win32API.new('kernel32', 'CreateEvent', 'PIIP', 'L')
44
72
  CreateMutex = Win32API.new('kernel32', 'CreateMutex', 'PIP', 'L')
45
73
  CreateSemaphore = Win32API.new('kernel32', 'CreateSemaphore', 'PLLP', 'L')
74
+
75
+ GetOverlappedResult = Win32API.new('kernel32', 'GetOverlappedResult', 'LPPI', 'I')
46
76
 
47
77
  MsgWaitForMultipleObjects = Win32API.new('user32', 'MsgWaitForMultipleObjects', 'LPILL', 'L')
48
78
  MsgWaitForMultipleObjectsEx = Win32API.new('user32', 'MsgWaitForMultipleObjectsEx', 'LPLLL', 'L')
49
79
 
50
- OpenEvent = Win32API.new('kernel32', 'OpenEvent', 'LIP', 'L')
51
- OpenMutex = Win32API.new('kernel32', 'OpenMutex', 'LIP', 'L')
52
- OpenSemaphore = Win32API.new('kernel32', 'OpenSemaphore', 'LIP', 'L')
80
+ OpenEvent = Win32API.new('kernel32', 'OpenEvent', 'LIP', 'L')
81
+ OpenMutex = Win32API.new('kernel32', 'OpenMutex', 'LIP', 'L')
82
+ OpenSemaphore = Win32API.new('kernel32', 'OpenSemaphore', 'LIP', 'L')
83
+ ReleaseMutex = Win32API.new('kernel32', 'ReleaseMutex', 'L', 'I')
84
+ ReleaseSemaphore = Win32API.new('kernel32', 'ReleaseSemaphore', 'LLP', 'I')
85
+ ResetEvent = Win32API.new('kernel32', 'ResetEvent', 'L', 'I')
86
+ SetEvent = Win32API.new('kernel32', 'SetEvent', 'L', 'I')
53
87
 
54
- WaitForDebugEvent = Win32API.new('kernel32', 'WaitForDebugEvent', 'PL', 'I')
55
- WaitForMultipleObjects = Win32API.new('kernel32', 'WaitForMultipleObjects', 'LPIL', 'L')
56
- WaitForMultipleObjectsEx = Win32API.new('kernel32', 'WaitForMultipleObjectsEx', 'LPILI', 'L')
57
- WaitForSingleObject = Win32API.new('kernel32', 'WaitForSingleObject', 'LL', 'L')
58
- WaitForSingleObjectEx = Win32API.new('kernel32', 'WaitForSingleObjectEx', 'LLI', 'L')
59
- WaitForInputIdle = Win32API.new('user32', 'WaitForInputIdle', 'LL', 'L')
88
+ WaitForMultipleObjects = Win32API.new('kernel32', 'WaitForMultipleObjects', 'LPIL', 'L')
89
+ WaitForMultipleObjectsEx = Win32API.new('kernel32', 'WaitForMultipleObjectsEx', 'LPILI', 'L')
90
+ WaitForSingleObject = Win32API.new('kernel32', 'WaitForSingleObject', 'LL', 'L')
91
+ WaitForSingleObjectEx = Win32API.new('kernel32', 'WaitForSingleObjectEx', 'LLI', 'L')
92
+
93
+ def CreateEvent(attributes, reset, state, name)
94
+ CreateEvent.call(attributes, reset, state, name)
95
+ end
96
+
97
+ def CreateMutex(attributes, owner, name)
98
+ CreateMutex.call(attributes, owner, name)
99
+ end
100
+
101
+ def CreateSemaphore(attributes, initial, max, name)
102
+ CreateSemaphore.call(attributes, initial, max, name)
103
+ end
104
+
105
+ def GetOverlappedResult(handle, overlapped, bytes_transferred, wait)
106
+ GetOverlappedResult.call(handle, overlapped, bytes_transferred, wait)
107
+ end
108
+
109
+ def MsgWaitForMultipleObjects(count, handles, wait, milli, mask)
110
+ MsgWaitForMultipleObjects.call(count, handles, wait, milli, mask)
111
+ end
112
+
113
+ def MsgWaitForMultipleObjectsEx(count, handles, milli, mask, flags)
114
+ MsgWaitForMultipleObjectsEx.call(count, handles, milli, mask, flags)
115
+ end
116
+
117
+ def OpenSemaphore(access, handle, name)
118
+ OpenSemaphore.call(access, handle, name)
119
+ end
120
+
121
+ def OpenMutex(access, handle, name)
122
+ OpenMutex.call(access, handle, name)
123
+ end
124
+
125
+ def OpenEvent(access, handle, name)
126
+ OpenEvent.call(access, handle, name)
127
+ end
128
+
129
+ def ReleaseMutex(handle)
130
+ ReleaseMutex.call(handle) != 0
131
+ end
132
+
133
+ def ReleaseSemaphore(handle, release_count, previous_count)
134
+ ReleaseSemaphore.call(handle, release_count, previous_count) != 0
135
+ end
136
+
137
+ def ResetEvent(handle)
138
+ ResetEvent.call(handle) != 0
139
+ end
140
+
141
+ def SetEvent(handle)
142
+ SetEvent.call(handle) != 0
143
+ end
144
+
145
+ def WaitForMultipleObjects(count, handles, wait_all, milliseconds)
146
+ WaitForMultipleObjects.call(count, handles, wait_all, milliseconds)
147
+ end
148
+
149
+ def WaitForMultipleObjectsEx(count, handles, wait_all, milliseconds, alertable)
150
+ WaitForMultipleObjectsEx.call(count, handles, wait_all, milliseconds, alertable)
151
+ end
152
+
153
+ def WaitForSingleObject(handle, milliseconds)
154
+ WaitForSingleObject.call(handle, milliseconds)
155
+ end
156
+
157
+ def WaitForSingleObjectEx(handle, milliseconds, alertable)
158
+ WaitForSingleObject.call(handle, milliseconds, alertable)
159
+ end
60
160
  end
61
161
  end
@@ -0,0 +1,64 @@
1
+ require 'Win32API'
2
+
3
+ module Windows
4
+ module SystemInfo
5
+ # Obsolete processor info constants
6
+ PROCESSOR_INTEL_386 = 386
7
+ PROCESSOR_INTEL_486 = 486
8
+ PROCESSOR_INTEL_PENTIUM = 586
9
+ PROCESSOR_INTEL_IA64 = 2200
10
+ PROCESSOR_AMD_X8664 = 8664
11
+
12
+ # Enum COMPUTER_NAME_FORMAT
13
+ ComputerNameNetBIOS = 0
14
+ ComputerNameDnsHostname = 1
15
+ ComputerNameDnsDomain = 2
16
+ ComputerNameDnsFullyQualified = 3
17
+ ComputerNamePhysicalNetBIOS = 4
18
+ ComputerNamePhysicalDnsHostname = 5
19
+ ComputerNamePhysicalDnsDomain = 6
20
+ ComputerNamePhysicalDnsFullyQualified = 7
21
+ ComputerNameMax = 8
22
+
23
+ GetComputerName = Win32API.new('kernel32', 'GetComputerName', 'PP', 'I')
24
+ GetComputerNameEx = Win32API.new('kernel32', 'GetComputerNameEx', 'PPP', 'I')
25
+ GetSystemInfo = Win32API.new('kernel32', 'GetSystemInfo', 'P', 'V')
26
+ GetUserName = Win32API.new('advapil32', 'GetUserName', 'LL', 'I')
27
+ GetUserNameEx = Win32API.new('secur32', 'GetUserNameEx', 'LPL', 'I')
28
+ GetVersion = Win32API.new('kernel32', 'GetVersion', 'V', 'L')
29
+ GetVersionEx = Win32API.new('kernel32', 'GetVersionEx', 'P', 'I')
30
+ GetWindowsDirectory = Win32API.new('kernel32', 'GetWindowsDirectory', 'LI', 'I')
31
+
32
+ def GetComputerName(buffer, size)
33
+ GetComputerNameEx.call(buffer, size) != 0
34
+ end
35
+
36
+ def GetComputerNameEx(name, buffer, size)
37
+ GetComputerNameEx.call(name, buffer, size) != 0
38
+ end
39
+
40
+ def GetSystemInfo(info)
41
+ GetSystemInfo.call(info)
42
+ end
43
+
44
+ def GetUserName(buf, size)
45
+ GetUserName.call(buf, size) != 0
46
+ end
47
+
48
+ def GetUserNameEx(format, buf, size)
49
+ GetUserNameEx.call(format, buf, size) != 0
50
+ end
51
+
52
+ def GetVersion()
53
+ GetVersion.call
54
+ end
55
+
56
+ def GetVersionEx(info)
57
+ GetVersionEx.call(info) != 0
58
+ end
59
+
60
+ def GetWindowsDirectory(buf, size)
61
+ GetWindowsDirectory.call(buf, size)
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,106 @@
1
+ require 'Win32API'
2
+
3
+ module Windows
4
+ module Unicode
5
+ CP_ACP = 0
6
+ CP_OEMCP = 1
7
+ CP_MACCP = 2
8
+ CP_THREAD_ACP = 3
9
+ CP_SYMBOL = 42
10
+ CP_UTF7 = 65000
11
+ CP_UTF8 = 65001
12
+
13
+ MB_PRECOMPOSED = 0x00000001
14
+ MB_COMPOSITE = 0x00000002
15
+ MB_USEGLYPHCHARS = 0x00000004
16
+ MB_ERR_INVALID_CHARS = 0x00000008
17
+
18
+ WC_COMPOSITECHECK = 0x00000200
19
+ WC_DISCARDNS = 0x00000010
20
+ WC_SEPCHARS = 0x00000020
21
+ WC_DEFAULTCHAR = 0x00000040
22
+ WC_NO_BEST_FIT_CHARS = 0x00000400
23
+
24
+ ANSI_CHARSET = 0
25
+ DEFAULT_CHARSET = 1
26
+ SYMBOL_CHARSET = 2
27
+ SHIFTJIS_CHARSET = 128
28
+ HANGEUL_CHARSET = 129
29
+ HANGUL_CHARSET = 129
30
+ GB2312_CHARSET = 134
31
+ CHINESEBIG5_CHARSET = 136
32
+ OEM_CHARSET = 255
33
+ JOHAB_CHARSET = 130
34
+ HEBREW_CHARSET = 177
35
+ ARABIC_CHARSET = 178
36
+ GREEK_CHARSET = 161
37
+ TURKISH_CHARSET = 162
38
+ VIETNAMESE_CHARSET = 163
39
+ THAI_CHARSET = 222
40
+ EASTEUROPE_CHARSET = 238
41
+ RUSSIAN_CHARSET = 204
42
+
43
+ IS_TEXT_UNICODE_ASCII16 = 0x0001
44
+ IS_TEXT_UNICODE_REVERSE_ASCII16 = 0x0010
45
+ IS_TEXT_UNICODE_STATISTICS = 0x0002
46
+ IS_TEXT_UNICODE_REVERSE_STATISTICS = 0x0020
47
+ IS_TEXT_UNICODE_CONTROLS = 0x0004
48
+ IS_TEXT_UNICODE_REVERSE_CONTROLS = 0x0040
49
+ IS_TEXT_UNICODE_SIGNATURE = 0x0008
50
+ IS_TEXT_UNICODE_REVERSE_SIGNATURE = 0x0080
51
+ IS_TEXT_UNICODE_ILLEGAL_CHARS = 0x0100
52
+ IS_TEXT_UNICODE_ODD_LENGTH = 0x0200
53
+ IS_TEXT_UNICODE_DBCS_LEADBYTE = 0x0400
54
+ IS_TEXT_UNICODE_NULL_BYTES = 0x1000
55
+ IS_TEXT_UNICODE_UNICODE_MASK = 0x000F
56
+ IS_TEXT_UNICODE_REVERSE_MASK = 0x00F0
57
+ IS_TEXT_UNICODE_NOT_UNICODE_MASK = 0x0F00
58
+ IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000
59
+
60
+ TCI_SRCCHARSET = 1
61
+ TCI_SRCCODEPAGE = 2
62
+ TCI_SRCFONTSIG = 3
63
+ TCI_SRCLOCALE = 0x100
64
+
65
+ GetTextCharset = Win32API.new('gdi32', 'GetTextCharset', 'L', 'I')
66
+ GetTextCharsetInfo = Win32API.new('gdi32', 'GetTextCharsetInfo', 'LPL', 'I')
67
+ IsDBCSLeadByte = Win32API.new('kernel32', 'IsDBCSLeadByte', 'P', 'I')
68
+ IsDBCSLeadByteEx = Win32API.new('kernel32', 'IsDBCSLeadByteEx', 'IP', 'I')
69
+ IsTextUnicode = Win32API.new('advapi32', 'IsTextUnicode', 'PIP', 'I')
70
+ MultiByteToWideChar = Win32API.new('kernel32', 'MultiByteToWideChar', 'ILPIPI', 'I')
71
+ TranslateCharsetInfo = Win32API.new('kernel32', 'TranslateCharsetInfo', 'PPL', 'I')
72
+ WideCharToMultiByte = Win32API.new('kernel32', 'WideCharToMultiByte', 'ILPIPIPP', 'I')
73
+
74
+ def GetTextCharset(hdc)
75
+ GetTextCharset.call(hdc)
76
+ end
77
+
78
+ def GetTextCharsetInfo(hdc, sig, flags)
79
+ GetTextCharsetInfo.call(hdc, sig, flags)
80
+ end
81
+
82
+ def IsDBCSLeadByte(char)
83
+ IsDBCSLeadByte.call(char) != 0
84
+ end
85
+
86
+ def IsDBCSLeadByteEx(code_page, char)
87
+ IsDBCSLeadByteEx.call(code_pag, char) != 0
88
+ end
89
+
90
+ def IsTextUnicode(buf, size, options)
91
+ IsTextUnicode.call(buf, size, options) != 0
92
+ end
93
+
94
+ def MultiByteToWideChar(page, flags, str, str_size, buf, buf_size)
95
+ MultiByteToWideChar.call(page, flags, str, str_size, buf, buf_size)
96
+ end
97
+
98
+ def TranslateCharsetInfo(src, cs, flags)
99
+ TranslateCharsetInfo.call(src, cs, flags) != 0
100
+ end
101
+
102
+ def WideCharToMultiByte(page, flags, str, str_size, buf, buf_size, defchar, used_def)
103
+ WideCharToMultiByte.call(page, flags, str, str_size, buf, buf_size, defchar, used_def)
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,22 @@
1
+ require 'Win32API'
2
+
3
+ module Windows
4
+ module Window
5
+ # ShowWindow() constants
6
+ SW_HIDE = 0
7
+ SW_SHOWNORMAL = 1
8
+ SW_NORMAL = 1
9
+ SW_SHOWMINIMIZED = 2
10
+ SW_SHOWMAXIMIZED = 3
11
+ SW_MAXIMIZE = 3
12
+ SW_SHOWNOACTIVATE = 4
13
+ SW_SHOW = 5
14
+ SW_MINIMIZE = 6
15
+ SW_SHOWMINNOACTIVE = 7
16
+ SW_SHOWNA = 8
17
+ SW_RESTORE = 9
18
+ SW_SHOWDEFAULT = 10
19
+ SW_FORCEMINIMIZE = 11
20
+ SW_MAX = 11
21
+ end
22
+ end