windows-pr 1.2.2 → 1.2.3

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.
Files changed (126) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +444 -438
  3. data/MANIFEST +68 -65
  4. data/README +154 -153
  5. data/Rakefile +42 -37
  6. data/doc/conversion_guide.txt +37 -37
  7. data/lib/windows/clipboard.rb +61 -61
  8. data/lib/windows/com.rb +192 -192
  9. data/lib/windows/com/accessibility.rb +16 -16
  10. data/lib/windows/com/automation.rb +149 -149
  11. data/lib/windows/com/variant.rb +24 -24
  12. data/lib/windows/console.rb +114 -114
  13. data/lib/windows/debug.rb +35 -35
  14. data/lib/windows/device_io.rb +248 -248
  15. data/lib/windows/directory.rb +27 -27
  16. data/lib/windows/error.rb +504 -498
  17. data/lib/windows/eventlog.rb +80 -80
  18. data/lib/windows/file.rb +264 -264
  19. data/lib/windows/file_mapping.rb +25 -25
  20. data/lib/windows/filesystem.rb +15 -15
  21. data/lib/windows/gdi/bitmap.rb +65 -65
  22. data/lib/windows/gdi/device_context.rb +46 -46
  23. data/lib/windows/gdi/metafile.rb +40 -40
  24. data/lib/windows/gdi/painting_drawing.rb +115 -115
  25. data/lib/windows/handle.rb +23 -23
  26. data/lib/windows/library.rb +44 -44
  27. data/lib/windows/limits.rb +34 -34
  28. data/lib/windows/mailslot.rb +24 -24
  29. data/lib/windows/memory.rb +128 -128
  30. data/lib/windows/msvcrt/buffer.rb +75 -75
  31. data/lib/windows/msvcrt/directory.rb +31 -31
  32. data/lib/windows/msvcrt/file.rb +47 -47
  33. data/lib/windows/msvcrt/io.rb +73 -73
  34. data/lib/windows/msvcrt/string.rb +182 -182
  35. data/lib/windows/msvcrt/time.rb +169 -169
  36. data/lib/windows/national.rb +580 -580
  37. data/lib/windows/network/management.rb +525 -525
  38. data/lib/windows/network/snmp.rb +92 -92
  39. data/lib/windows/network/winsock.rb +128 -128
  40. data/lib/windows/nio.rb +50 -50
  41. data/lib/windows/ntfs/winternl.rb +117 -117
  42. data/lib/windows/path.rb +143 -143
  43. data/lib/windows/pipe.rb +42 -42
  44. data/lib/windows/process.rb +176 -176
  45. data/lib/windows/registry.rb +171 -171
  46. data/lib/windows/security.rb +479 -479
  47. data/lib/windows/security/authentication.rb +32 -32
  48. data/lib/windows/security/sspi.rb +153 -0
  49. data/lib/windows/service.rb +142 -142
  50. data/lib/windows/shell.rb +171 -171
  51. data/lib/windows/socket.rb +86 -86
  52. data/lib/windows/sound.rb +39 -39
  53. data/lib/windows/synchronize.rb +133 -133
  54. data/lib/windows/system_info.rb +229 -229
  55. data/lib/windows/thread.rb +64 -64
  56. data/lib/windows/time.rb +48 -48
  57. data/lib/windows/tool_helper.rb +36 -36
  58. data/lib/windows/unicode.rb +155 -155
  59. data/lib/windows/volume.rb +61 -61
  60. data/lib/windows/window.rb +81 -81
  61. data/lib/windows/window/classes.rb +59 -59
  62. data/lib/windows/window/dialog.rb +91 -91
  63. data/lib/windows/window/menu.rb +102 -102
  64. data/lib/windows/window/message.rb +297 -297
  65. data/lib/windows/window/properties.rb +20 -20
  66. data/lib/windows/window/timer.rb +19 -19
  67. data/lib/windows/wsa.rb +102 -102
  68. data/test/tc_clipboard.rb +41 -41
  69. data/test/tc_com.rb +32 -32
  70. data/test/tc_com_automation.rb +15 -15
  71. data/test/tc_console.rb +108 -108
  72. data/test/tc_debug.rb +48 -48
  73. data/test/tc_device_io.rb +29 -29
  74. data/test/tc_directory.rb +25 -25
  75. data/test/tc_error.rb +38 -38
  76. data/test/tc_eventlog.rb +58 -58
  77. data/test/tc_file.rb +67 -67
  78. data/test/tc_file_mapping.rb +38 -38
  79. data/test/tc_filesystem.rb +27 -27
  80. data/test/tc_gdi_bitmap.rb +25 -25
  81. data/test/tc_gdi_metafile.rb +23 -23
  82. data/test/tc_handle.rb +36 -36
  83. data/test/tc_library.rb +37 -37
  84. data/test/tc_limits.rb +34 -34
  85. data/test/tc_mailslot.rb +22 -22
  86. data/test/tc_memory.rb +44 -44
  87. data/test/tc_msvcrt_buffer.rb +63 -63
  88. data/test/tc_msvcrt_directory.rb +96 -96
  89. data/test/tc_msvcrt_file.rb +80 -80
  90. data/test/tc_msvcrt_io.rb +48 -48
  91. data/test/tc_msvcrt_string.rb +94 -94
  92. data/test/tc_msvcrt_time.rb +19 -19
  93. data/test/tc_national.rb +38 -38
  94. data/test/tc_network_management.rb +32 -32
  95. data/test/tc_network_snmp.rb +31 -31
  96. data/test/tc_network_winsock.rb +34 -34
  97. data/test/tc_nio.rb +32 -32
  98. data/test/tc_ntfs_winternl.rb +48 -48
  99. data/test/tc_path.rb +90 -90
  100. data/test/tc_pipe.rb +53 -53
  101. data/test/tc_process.rb +24 -24
  102. data/test/tc_registry.rb +29 -29
  103. data/test/tc_security.rb +104 -104
  104. data/test/tc_security_authentication.rb +34 -34
  105. data/test/tc_security_sspi.rb +23 -0
  106. data/test/tc_service.rb +57 -57
  107. data/test/tc_shell.rb +34 -34
  108. data/test/tc_socket.rb +20 -20
  109. data/test/tc_sound.rb +37 -37
  110. data/test/tc_synchronize.rb +75 -75
  111. data/test/tc_system_info.rb +33 -33
  112. data/test/tc_thread.rb +29 -29
  113. data/test/tc_time.rb +32 -32
  114. data/test/tc_tool_helper.rb +29 -29
  115. data/test/tc_unicode.rb +83 -83
  116. data/test/tc_volume.rb +47 -47
  117. data/test/tc_window.rb +45 -45
  118. data/test/tc_window_classes.rb +33 -33
  119. data/test/tc_window_dialog.rb +33 -33
  120. data/test/tc_window_menu.rb +29 -29
  121. data/test/tc_window_message.rb +33 -33
  122. data/test/tc_window_properties.rb +29 -29
  123. data/test/tc_window_timer.rb +29 -29
  124. data/test/tc_wsa.rb +19 -19
  125. data/windows-pr.gemspec +33 -34
  126. metadata +31 -32
@@ -1,102 +1,102 @@
1
- require 'windows/api'
2
-
3
- module Windows
4
- module Window
5
- module Menu
6
- API.auto_namespace = 'Windows::Window::Menu'
7
- API.auto_constant = true
8
- API.auto_method = true
9
- API.auto_unicode = true
10
-
11
- private
12
-
13
- # Menu Flags
14
-
15
- MF_INSERT = 0x00000000
16
- MF_CHANGE = 0x00000080
17
- MF_APPEND = 0x00000100
18
- MF_DELETE = 0x00000200
19
- MF_REMOVE = 0x00001000
20
- MF_BYCOMMAND = 0x00000000
21
- MF_BYPOSITION = 0x00000400
22
- MF_SEPARATOR = 0x00000800
23
- MF_ENABLED = 0x00000000
24
- MF_GRAYED = 0x00000001
25
- MF_DISABLED = 0x00000002
26
- MF_UNCHECKED = 0x00000000
27
- MF_CHECKED = 0x00000008
28
- MF_USECHECKBITMAPS = 0x00000200
29
- MF_STRING = 0x00000000
30
- MF_BITMAP = 0x00000004
31
- MF_OWNERDRAW = 0x00000100
32
- MF_POPUP = 0x00000010
33
- MF_MENUBARBREAK = 0x00000020
34
- MF_MENUBREAK = 0x00000040
35
- MF_UNHILITE = 0x00000000
36
- MF_HILITE = 0x00000080
37
- MF_DEFAULT = 0x00001000
38
- MF_SYSMENU = 0x00002000
39
- MF_HELP = 0x00004000
40
- MF_RIGHTJUSTIFY = 0x00004000
41
- MF_MOUSESELECT = 0x00008000
42
- MF_END = 0x00000080
43
-
44
- # System Objects
45
-
46
- OBJID_WINDOW = 0x00000000
47
- OBJID_SYSMENU = 0xFFFFFFFF
48
- OBJID_TITLEBAR = 0xFFFFFFFE
49
- OBJID_MENU = 0xFFFFFFFD
50
- OBJID_CLIENT = 0xFFFFFFFC
51
- OBJID_VSCROLL = 0xFFFFFFFB
52
- OBJID_HSCROLL = 0xFFFFFFFA
53
- OBJID_SIZEGRIP = 0xFFFFFFF9
54
- OBJID_CARET = 0xFFFFFFF8
55
- OBJID_CURSOR = 0xFFFFFFF7
56
- OBJID_ALERT = 0xFFFFFFF6
57
- OBJID_SOUND = 0xFFFFFFF5
58
- OBJID_QUERYCLASSNAMEIDX = 0xFFFFFFF4
59
- OBJID_NATIVEOM = 0xFFFFFFF0
60
-
61
- API.new('AppendMenu', 'LIPP', 'B', 'user32')
62
- API.new('CheckMenuItem', 'LII', 'L', 'user32')
63
- API.new('CheckMenuRadioItem', 'LIIII', 'B', 'user32')
64
- API.new('CreateMenu', 'V', 'L', 'user32')
65
- API.new('CreatePopupMenu', 'V', 'L', 'user32')
66
- API.new('DeleteMenu', 'LII', 'B', 'user32')
67
- API.new('DestroyMenu', 'L', 'B', 'user32')
68
- API.new('DrawMenuBar', 'L', 'B', 'user32')
69
- API.new('EnableMenuItem', 'LII', 'B', 'user32')
70
- API.new('EndMenu', 'V', 'B', 'user32')
71
- API.new('GetMenu', 'L', 'L', 'user32')
72
- API.new('GetMenuBarInfo', 'LLLP', 'B', 'user32')
73
- API.new('GetMenuCheckMarkDimensions', 'V', 'L', 'user32')
74
- API.new('GetMenuDefaultItem', 'LII', 'I', 'user32')
75
- API.new('GetMenuInfo', 'LP', 'B', 'user32')
76
- API.new('GetMenuItemCount', 'L', 'I', 'user32')
77
- API.new('GetMenuItemID', 'LI', 'I', 'user32')
78
- API.new('GetMenuItemInfo', 'LIIP', 'B', 'user32')
79
- API.new('GetMenuItemRect', 'LLIP', 'B', 'user32')
80
- API.new('GetMenuState', 'LLI', 'I', 'user32')
81
- API.new('GetMenuString', 'LIPII', 'I', 'user32')
82
- API.new('GetSubMenu', 'LI', 'L', 'user32')
83
- API.new('GetSystemMenu', 'LI', 'L', 'user32')
84
- API.new('HiliteMenuItem', 'LLII', 'B', 'user32')
85
- API.new('InsertMenu', 'LIIPP', 'B', 'user32')
86
- API.new('InsertMenuItem', 'LIIP', 'B', 'user32')
87
- API.new('IsMenu', 'L', 'B', 'user32')
88
- API.new('LoadMenu', 'LP', 'L', 'user32')
89
- API.new('LoadMenuIndirect', 'P', 'L', 'user32')
90
- API.new('MenuItemFromPoint', 'LLP', 'I', 'user32')
91
- API.new('ModifyMenu', 'LIIPP', 'B', 'user32')
92
- API.new('RemoveMenu', 'LII', 'B', 'user32')
93
- API.new('SetMenu', 'LL', 'B', 'user32')
94
- API.new('SetMenuDefaultItem', 'LLL', 'B', 'user32')
95
- API.new('SetMenuInfo', 'LP', 'B', 'user32')
96
- API.new('SetMenuItemBitmaps', 'LIILL', 'B', 'user32')
97
- API.new('SetMenuItemInfo', 'LIIP', 'B', 'user32')
98
- API.new('TrackPopupMenu', 'LIIIILP', 'B', 'user32')
99
- API.new('TrackPopupMenuEx', 'LIIILP', 'B', 'user32')
100
- end
101
- end
102
- end
1
+ require 'windows/api'
2
+
3
+ module Windows
4
+ module Window
5
+ module Menu
6
+ API.auto_namespace = 'Windows::Window::Menu'
7
+ API.auto_constant = true
8
+ API.auto_method = true
9
+ API.auto_unicode = true
10
+
11
+ private
12
+
13
+ # Menu Flags
14
+
15
+ MF_INSERT = 0x00000000
16
+ MF_CHANGE = 0x00000080
17
+ MF_APPEND = 0x00000100
18
+ MF_DELETE = 0x00000200
19
+ MF_REMOVE = 0x00001000
20
+ MF_BYCOMMAND = 0x00000000
21
+ MF_BYPOSITION = 0x00000400
22
+ MF_SEPARATOR = 0x00000800
23
+ MF_ENABLED = 0x00000000
24
+ MF_GRAYED = 0x00000001
25
+ MF_DISABLED = 0x00000002
26
+ MF_UNCHECKED = 0x00000000
27
+ MF_CHECKED = 0x00000008
28
+ MF_USECHECKBITMAPS = 0x00000200
29
+ MF_STRING = 0x00000000
30
+ MF_BITMAP = 0x00000004
31
+ MF_OWNERDRAW = 0x00000100
32
+ MF_POPUP = 0x00000010
33
+ MF_MENUBARBREAK = 0x00000020
34
+ MF_MENUBREAK = 0x00000040
35
+ MF_UNHILITE = 0x00000000
36
+ MF_HILITE = 0x00000080
37
+ MF_DEFAULT = 0x00001000
38
+ MF_SYSMENU = 0x00002000
39
+ MF_HELP = 0x00004000
40
+ MF_RIGHTJUSTIFY = 0x00004000
41
+ MF_MOUSESELECT = 0x00008000
42
+ MF_END = 0x00000080
43
+
44
+ # System Objects
45
+
46
+ OBJID_WINDOW = 0x00000000
47
+ OBJID_SYSMENU = 0xFFFFFFFF
48
+ OBJID_TITLEBAR = 0xFFFFFFFE
49
+ OBJID_MENU = 0xFFFFFFFD
50
+ OBJID_CLIENT = 0xFFFFFFFC
51
+ OBJID_VSCROLL = 0xFFFFFFFB
52
+ OBJID_HSCROLL = 0xFFFFFFFA
53
+ OBJID_SIZEGRIP = 0xFFFFFFF9
54
+ OBJID_CARET = 0xFFFFFFF8
55
+ OBJID_CURSOR = 0xFFFFFFF7
56
+ OBJID_ALERT = 0xFFFFFFF6
57
+ OBJID_SOUND = 0xFFFFFFF5
58
+ OBJID_QUERYCLASSNAMEIDX = 0xFFFFFFF4
59
+ OBJID_NATIVEOM = 0xFFFFFFF0
60
+
61
+ API.new('AppendMenu', 'LIPP', 'B', 'user32')
62
+ API.new('CheckMenuItem', 'LII', 'L', 'user32')
63
+ API.new('CheckMenuRadioItem', 'LIIII', 'B', 'user32')
64
+ API.new('CreateMenu', 'V', 'L', 'user32')
65
+ API.new('CreatePopupMenu', 'V', 'L', 'user32')
66
+ API.new('DeleteMenu', 'LII', 'B', 'user32')
67
+ API.new('DestroyMenu', 'L', 'B', 'user32')
68
+ API.new('DrawMenuBar', 'L', 'B', 'user32')
69
+ API.new('EnableMenuItem', 'LII', 'B', 'user32')
70
+ API.new('EndMenu', 'V', 'B', 'user32')
71
+ API.new('GetMenu', 'L', 'L', 'user32')
72
+ API.new('GetMenuBarInfo', 'LLLP', 'B', 'user32')
73
+ API.new('GetMenuCheckMarkDimensions', 'V', 'L', 'user32')
74
+ API.new('GetMenuDefaultItem', 'LII', 'I', 'user32')
75
+ API.new('GetMenuInfo', 'LP', 'B', 'user32')
76
+ API.new('GetMenuItemCount', 'L', 'I', 'user32')
77
+ API.new('GetMenuItemID', 'LI', 'I', 'user32')
78
+ API.new('GetMenuItemInfo', 'LIIP', 'B', 'user32')
79
+ API.new('GetMenuItemRect', 'LLIP', 'B', 'user32')
80
+ API.new('GetMenuState', 'LLI', 'I', 'user32')
81
+ API.new('GetMenuString', 'LIPII', 'I', 'user32')
82
+ API.new('GetSubMenu', 'LI', 'L', 'user32')
83
+ API.new('GetSystemMenu', 'LI', 'L', 'user32')
84
+ API.new('HiliteMenuItem', 'LLII', 'B', 'user32')
85
+ API.new('InsertMenu', 'LIIPP', 'B', 'user32')
86
+ API.new('InsertMenuItem', 'LIIP', 'B', 'user32')
87
+ API.new('IsMenu', 'L', 'B', 'user32')
88
+ API.new('LoadMenu', 'LP', 'L', 'user32')
89
+ API.new('LoadMenuIndirect', 'P', 'L', 'user32')
90
+ API.new('MenuItemFromPoint', 'LLP', 'I', 'user32')
91
+ API.new('ModifyMenu', 'LIIPP', 'B', 'user32')
92
+ API.new('RemoveMenu', 'LII', 'B', 'user32')
93
+ API.new('SetMenu', 'LL', 'B', 'user32')
94
+ API.new('SetMenuDefaultItem', 'LLL', 'B', 'user32')
95
+ API.new('SetMenuInfo', 'LP', 'B', 'user32')
96
+ API.new('SetMenuItemBitmaps', 'LIILL', 'B', 'user32')
97
+ API.new('SetMenuItemInfo', 'LIIP', 'B', 'user32')
98
+ API.new('TrackPopupMenu', 'LIIIILP', 'B', 'user32')
99
+ API.new('TrackPopupMenuEx', 'LIIILP', 'B', 'user32')
100
+ end
101
+ end
102
+ end
@@ -1,297 +1,297 @@
1
- require 'windows/api'
2
-
3
- module Windows
4
- module Window
5
- module Message
6
- API.auto_namespace = 'Windows::Window::Message'
7
- API.auto_constant = true
8
- API.auto_method = true
9
- API.auto_unicode = false
10
-
11
- private
12
-
13
- # These constants are in winuser.h
14
-
15
- BSF_QUERY = 0x00000001
16
- BSF_IGNORECURRENTTASK = 0x00000002
17
- BSF_FLUSHDISK = 0x00000004
18
- BSF_NOHANG = 0x00000008
19
- BSF_POSTMESSAGE = 0x00000010
20
- BSF_FORCEIFHUNG = 0x00000020
21
- BSF_NOTIMEOUTIFNOTHUNG = 0x00000040
22
- BSF_ALLOWSFW = 0x00000080
23
- BSF_SENDNOTIFYMESSAGE = 0x00000100
24
- BSF_RETURNHDESK = 0x00000200
25
- BSF_LUID = 0x00000400
26
-
27
- SMTO_NORMAL = 0x0000
28
- SMTO_BLOCK = 0x0001
29
- SMTO_ABORTIFHUNG = 0x0002
30
- SMTO_NOTIMEOUTIFNOTHUNG = 0x0008
31
-
32
- WM_NULL = 0x0000
33
- WM_CREATE = 0x0001
34
- WM_DESTROY = 0x0002
35
- WM_MOVE = 0x0003
36
- WM_SIZE = 0x0005
37
- WM_ACTIVATE = 0x0006
38
- WM_SETFOCUS = 0x0007
39
- WM_KILLFOCUS = 0x0008
40
- WM_ENABLE = 0x000A
41
- WM_SETREDRAW = 0x000B
42
- WM_SETTEXT = 0x000C
43
- WM_GETTEXT = 0x000D
44
- WM_GETTEXTLENGTH = 0x000E
45
- WM_PAINT = 0x000F
46
- WM_CLOSE = 0x0010
47
- WM_QUERYENDSESSION = 0x0011
48
- WM_QUERYOPEN = 0x0013
49
- WM_ENDSESSION = 0x0016
50
- WM_QUIT = 0x0012
51
- WM_ERASEBKGND = 0x0014
52
- WM_SYSCOLORCHANGE = 0x0015
53
- WM_SHOWWINDOW = 0x0018
54
- WM_WININICHANGE = 0x001A
55
- WM_SETTINGCHANGE = WM_WININICHANGE
56
- WM_DEVMODECHANGE = 0x001B
57
- WM_ACTIVATEAPP = 0x001C
58
- WM_FONTCHANGE = 0x001D
59
- WM_TIMECHANGE = 0x001E
60
- WM_CANCELMODE = 0x001F
61
- WM_SETCURSOR = 0x0020
62
- WM_MOUSEACTIVATE = 0x0021
63
- WM_CHILDACTIVATE = 0x0022
64
- WM_QUEUESYNC = 0x0023
65
- WM_GETMINMAXINFO = 0x0024
66
- WM_PAINTICON = 0x0026
67
- WM_ICONERASEBKGND = 0x0027
68
- WM_NEXTDLGCTL = 0x0028
69
- WM_SPOOLERSTATUS = 0x002A
70
- WM_DRAWITEM = 0x002B
71
- WM_MEASUREITEM = 0x002C
72
- WM_DELETEITEM = 0x002D
73
- WM_VKEYTOITEM = 0x002E
74
- WM_CHARTOITEM = 0x002F
75
- WM_SETFONT = 0x0030
76
- WM_GETFONT = 0x0031
77
- WM_SETHOTKEY = 0x0032
78
- WM_GETHOTKEY = 0x0033
79
- WM_QUERYDRAGICON = 0x0037
80
- WM_COMPAREITEM = 0x0039
81
- WM_GETOBJECT = 0x003D
82
- WM_COMPACTING = 0x0041
83
- WM_COMMNOTIFY = 0x0044
84
- WM_WINDOWPOSCHANGING = 0x0046
85
- WM_WINDOWPOSCHANGED = 0x0047
86
- WM_POWER = 0x0048
87
- WM_COPYDATA = 0x004A
88
- WM_CANCELJOURNAL = 0x004B
89
- WM_NOTIFY = 0x004E
90
- WM_INPUTLANGCHANGEREQUEST = 0x0050
91
- WM_INPUTLANGCHANGE = 0x0051
92
- WM_TCARD = 0x0052
93
- WM_HELP = 0x0053
94
- WM_USERCHANGED = 0x0054
95
- WM_NOTIFYFORMAT = 0x0055
96
- WM_CONTEXTMENU = 0x007B
97
- WM_STYLECHANGING = 0x007C
98
- WM_STYLECHANGED = 0x007D
99
- WM_DISPLAYCHANGE = 0x007E
100
- WM_GETICON = 0x007F
101
- WM_SETICON = 0x0080
102
- WM_NCCREATE = 0x0081
103
- WM_NCDESTROY = 0x0082
104
- WM_NCCALCSIZE = 0x0083
105
- WM_NCHITTEST = 0x0084
106
- WM_NCPAINT = 0x0085
107
- WM_NCACTIVATE = 0x0086
108
- WM_GETDLGCODE = 0x0087
109
- WM_SYNCPAINT = 0x0088
110
- WM_NCMOUSEMOVE = 0x00A0
111
- WM_NCLBUTTONDOWN = 0x00A1
112
- WM_NCLBUTTONUP = 0x00A2
113
- WM_NCLBUTTONDBLCLK = 0x00A3
114
- WM_NCRBUTTONDOWN = 0x00A4
115
- WM_NCRBUTTONUP = 0x00A5
116
- WM_NCRBUTTONDBLCLK = 0x00A6
117
- WM_NCMBUTTONDOWN = 0x00A7
118
- WM_NCMBUTTONUP = 0x00A8
119
- WM_NCMBUTTONDBLCLK = 0x00A9
120
- WM_NCXBUTTONDOWN = 0x00AB
121
- WM_NCXBUTTONUP = 0x00AC
122
- WM_NCXBUTTONDBLCLK = 0x00AD
123
- WM_INPUT = 0x00FF
124
- WM_KEYFIRST = 0x0100
125
- WM_KEYDOWN = 0x0100
126
- WM_KEYUP = 0x0101
127
- WM_CHAR = 0x0102
128
- WM_DEADCHAR = 0x0103
129
- WM_SYSKEYDOWN = 0x0104
130
- WM_SYSKEYUP = 0x0105
131
- WM_SYSCHAR = 0x0106
132
- WM_SYSDEADCHAR = 0x0107
133
- WM_UNICHAR = 0x0109
134
- WM_IME_STARTCOMPOSITION = 0x010D
135
- WM_IME_ENDCOMPOSITION = 0x010E
136
- WM_IME_COMPOSITION = 0x010F
137
- WM_IME_KEYLAST = 0x010F
138
- WM_INITDIALOG = 0x0110
139
- WM_COMMAND = 0x0111
140
- WM_SYSCOMMAND = 0x0112
141
- WM_TIMER = 0x0113
142
- WM_HSCROLL = 0x0114
143
- WM_VSCROLL = 0x0115
144
- WM_INITMENU = 0x0116
145
- WM_INITMENUPOPUP = 0x0117
146
- WM_MENUSELECT = 0x011F
147
- WM_MENUCHAR = 0x0120
148
- WM_ENTERIDLE = 0x0121
149
- WM_MENURBUTTONUP = 0x0122
150
- WM_MENUDRAG = 0x0123
151
- WM_MENUGETOBJECT = 0x0124
152
- WM_UNINITMENUPOPUP = 0x0125
153
- WM_MENUCOMMAND = 0x0126
154
- WM_CHANGEUISTATE = 0x0127
155
- WM_UPDATEUISTATE = 0x0128
156
- WM_QUERYUISTATE = 0x0129
157
- WM_CTLCOLORMSGBOX = 0x0132
158
- WM_CTLCOLOREDIT = 0x0133
159
- WM_CTLCOLORLISTBOX = 0x0134
160
- WM_CTLCOLORBTN = 0x0135
161
- WM_CTLCOLORDLG = 0x0136
162
- WM_CTLCOLORSCROLLBAR = 0x0137
163
- WM_CTLCOLORSTATIC = 0x0138
164
- WM_MOUSEFIRST = 0x0200
165
- WM_MOUSEMOVE = 0x0200
166
- WM_LBUTTONDOWN = 0x0201
167
- WM_LBUTTONUP = 0x0202
168
- WM_LBUTTONDBLCLK = 0x0203
169
- WM_RBUTTONDOWN = 0x0204
170
- WM_RBUTTONUP = 0x0205
171
- WM_RBUTTONDBLCLK = 0x0206
172
- WM_MBUTTONDOWN = 0x0207
173
- WM_MBUTTONUP = 0x0208
174
- WM_MBUTTONDBLCLK = 0x0209
175
- WM_MOUSEWHEEL = 0x020A
176
- WM_XBUTTONDOWN = 0x020B
177
- WM_XBUTTONUP = 0x020C
178
- WM_XBUTTONDBLCLK = 0x020D
179
- WM_MOUSELAST = 0x020D # Assume Win2k or later
180
- WM_PARENTNOTIFY = 0x0210
181
- WM_ENTERMENULOOP = 0x0211
182
- WM_EXITMENULOOP = 0x0212
183
- WM_NEXTMENU = 0x0213
184
- WM_SIZING = 0x0214
185
- WM_CAPTURECHANGED = 0x0215
186
- WM_MOVING = 0x0216
187
- WM_POWERBROADCAST = 0x0218
188
- WM_DEVICECHANGE = 0x0219
189
- WM_MDICREATE = 0x0220
190
- WM_MDIDESTROY = 0x0221
191
- WM_MDIACTIVATE = 0x0222
192
- WM_MDIRESTORE = 0x0223
193
- WM_MDINEXT = 0x0224
194
- WM_MDIMAXIMIZE = 0x0225
195
- WM_MDITILE = 0x0226
196
- WM_MDICASCADE = 0x0227
197
- WM_MDIICONARRANGE = 0x0228
198
- WM_MDIGETACTIVE = 0x0229
199
- WM_MDISETMENU = 0x0230
200
- WM_ENTERSIZEMOVE = 0x0231
201
- WM_EXITSIZEMOVE = 0x0232
202
- WM_DROPFILES = 0x0233
203
- WM_MDIREFRESHMENU = 0x0234
204
- WM_IME_SETCONTEXT = 0x0281
205
- WM_IME_NOTIFY = 0x0282
206
- WM_IME_CONTROL = 0x0283
207
- WM_IME_COMPOSITIONFULL = 0x0284
208
- WM_IME_SELECT = 0x0285
209
- WM_IME_CHAR = 0x0286
210
- WM_IME_REQUEST = 0x0288
211
- WM_IME_KEYDOWN = 0x0290
212
- WM_IME_KEYUP = 0x0291
213
- WM_MOUSEHOVER = 0x02A1
214
- WM_MOUSELEAVE = 0x02A3
215
- WM_NCMOUSEHOVER = 0x02A0
216
- WM_NCMOUSELEAVE = 0x02A2
217
- WM_WTSSESSION_CHANGE = 0x02B1
218
- WM_TABLET_FIRST = 0x02c0
219
- WM_TABLET_LAST = 0x02df
220
- WM_CUT = 0x0300
221
- WM_COPY = 0x0301
222
- WM_PASTE = 0x0302
223
- WM_CLEAR = 0x0303
224
- WM_UNDO = 0x0304
225
- WM_RENDERFORMAT = 0x0305
226
- WM_RENDERALLFORMATS = 0x0306
227
- WM_DESTROYCLIPBOARD = 0x0307
228
- WM_DRAWCLIPBOARD = 0x0308
229
- WM_PAINTCLIPBOARD = 0x0309
230
- WM_VSCROLLCLIPBOARD = 0x030A
231
- WM_SIZECLIPBOARD = 0x030B
232
- WM_ASKCBFORMATNAME = 0x030C
233
- WM_CHANGECBCHAIN = 0x030D
234
- WM_HSCROLLCLIPBOARD = 0x030E
235
- WM_QUERYNEWPALETTE = 0x030F
236
- WM_PALETTEISCHANGING = 0x0310
237
- WM_PALETTECHANGED = 0x0311
238
- WM_HOTKEY = 0x0312
239
- WM_PRINT = 0x0317
240
- WM_PRINTCLIENT = 0x0318
241
- WM_APPCOMMAND = 0x0319
242
- WM_THEMECHANGED = 0x031A
243
- WM_HANDHELDFIRST = 0x0358
244
- WM_HANDHELDLAST = 0x035F
245
- WM_AFXFIRST = 0x0360
246
- WM_AFXLAST = 0x037F
247
- WM_PENWINFIRST = 0x0380
248
- WM_PENWINLAST = 0x038F
249
- WM_APP = 0x8000
250
- WM_USER = 0x0400
251
-
252
- # I'd rather not mixin Windows::SystemInfo
253
- getVersionEx = Win32::API.new('GetVersionEx', 'P', 'B')
254
- vbuf = "\0" * 128
255
- vinfo = [148, 0 ,0, 0, 0, vbuf].pack("LLLLLa128")
256
- getVersionEx.call(vinfo)
257
- info = vinfo.unpack("LLLLLa128")
258
-
259
- if info[2] >= 1
260
- WM_KEYLAST = 0x0109 # Windows XP or later
261
- else
262
- WM_KEYLAST = 0x0108 # Windows 2000
263
- end
264
-
265
- API.new('BroadcastSystemMessage', 'LPILL', 'L', 'user32')
266
- API.new('DefWindowProc', 'LLLL', 'L', 'user32')
267
- API.new('DispatchMessage', 'P', 'L', 'user32')
268
- API.new('GetInputState', 'V', 'B', 'user32')
269
- API.new('GetMessage', 'PLII', 'B', 'user32')
270
- API.new('GetMessageExtraInfo', 'V', 'L', 'user32')
271
- API.new('GetMessagePos', 'V', 'L', 'user32')
272
- API.new('GetMessageTime', 'V', 'L', 'user32')
273
- API.new('GetQueueStatus', 'I', 'L', 'user32')
274
- API.new('InSendMessage', 'V', 'B', 'user32')
275
- API.new('InSendMessageEx', 'L', 'L', 'user32')
276
- API.new('PeekMessage', 'PLIII', 'B', 'user32')
277
- API.new('PostMessage', 'PLLL', 'B', 'user32')
278
- API.new('PostQuitMessage', 'I', 'V', 'user32')
279
- API.new('PostThreadMessage', 'LILL', 'B', 'user32')
280
- API.new('RegisterWindowMessage', 'P', 'I', 'user32')
281
- API.new('ReplyMessage', 'L', 'B', 'user32')
282
- API.new('SendMessage', 'LILL', 'L', 'user32')
283
- API.new('SendMessageCallback', 'LILLKP', 'B', 'user32')
284
- API.new('SendMessageTimeout', 'LILLIIP', 'L', 'user32')
285
- API.new('SendNotifyMessage', 'LILLIIP', 'L', 'user32')
286
- API.new('SetMessageExtraInfo', 'L', 'L', 'user32')
287
- API.new('TranslateMessage', 'P', 'B', 'user32')
288
- API.new('WaitMessage', 'V', 'B', 'user32')
289
-
290
- begin
291
- API.new('BroadcastSystemMessageEx', 'LPILLP', 'L', 'user32')
292
- rescue Win32::API::LoadLibraryError
293
- # Windows XP or later
294
- end
295
- end
296
- end
297
- end
1
+ require 'windows/api'
2
+
3
+ module Windows
4
+ module Window
5
+ module Message
6
+ API.auto_namespace = 'Windows::Window::Message'
7
+ API.auto_constant = true
8
+ API.auto_method = true
9
+ API.auto_unicode = false
10
+
11
+ private
12
+
13
+ # These constants are in winuser.h
14
+
15
+ BSF_QUERY = 0x00000001
16
+ BSF_IGNORECURRENTTASK = 0x00000002
17
+ BSF_FLUSHDISK = 0x00000004
18
+ BSF_NOHANG = 0x00000008
19
+ BSF_POSTMESSAGE = 0x00000010
20
+ BSF_FORCEIFHUNG = 0x00000020
21
+ BSF_NOTIMEOUTIFNOTHUNG = 0x00000040
22
+ BSF_ALLOWSFW = 0x00000080
23
+ BSF_SENDNOTIFYMESSAGE = 0x00000100
24
+ BSF_RETURNHDESK = 0x00000200
25
+ BSF_LUID = 0x00000400
26
+
27
+ SMTO_NORMAL = 0x0000
28
+ SMTO_BLOCK = 0x0001
29
+ SMTO_ABORTIFHUNG = 0x0002
30
+ SMTO_NOTIMEOUTIFNOTHUNG = 0x0008
31
+
32
+ WM_NULL = 0x0000
33
+ WM_CREATE = 0x0001
34
+ WM_DESTROY = 0x0002
35
+ WM_MOVE = 0x0003
36
+ WM_SIZE = 0x0005
37
+ WM_ACTIVATE = 0x0006
38
+ WM_SETFOCUS = 0x0007
39
+ WM_KILLFOCUS = 0x0008
40
+ WM_ENABLE = 0x000A
41
+ WM_SETREDRAW = 0x000B
42
+ WM_SETTEXT = 0x000C
43
+ WM_GETTEXT = 0x000D
44
+ WM_GETTEXTLENGTH = 0x000E
45
+ WM_PAINT = 0x000F
46
+ WM_CLOSE = 0x0010
47
+ WM_QUERYENDSESSION = 0x0011
48
+ WM_QUERYOPEN = 0x0013
49
+ WM_ENDSESSION = 0x0016
50
+ WM_QUIT = 0x0012
51
+ WM_ERASEBKGND = 0x0014
52
+ WM_SYSCOLORCHANGE = 0x0015
53
+ WM_SHOWWINDOW = 0x0018
54
+ WM_WININICHANGE = 0x001A
55
+ WM_SETTINGCHANGE = WM_WININICHANGE
56
+ WM_DEVMODECHANGE = 0x001B
57
+ WM_ACTIVATEAPP = 0x001C
58
+ WM_FONTCHANGE = 0x001D
59
+ WM_TIMECHANGE = 0x001E
60
+ WM_CANCELMODE = 0x001F
61
+ WM_SETCURSOR = 0x0020
62
+ WM_MOUSEACTIVATE = 0x0021
63
+ WM_CHILDACTIVATE = 0x0022
64
+ WM_QUEUESYNC = 0x0023
65
+ WM_GETMINMAXINFO = 0x0024
66
+ WM_PAINTICON = 0x0026
67
+ WM_ICONERASEBKGND = 0x0027
68
+ WM_NEXTDLGCTL = 0x0028
69
+ WM_SPOOLERSTATUS = 0x002A
70
+ WM_DRAWITEM = 0x002B
71
+ WM_MEASUREITEM = 0x002C
72
+ WM_DELETEITEM = 0x002D
73
+ WM_VKEYTOITEM = 0x002E
74
+ WM_CHARTOITEM = 0x002F
75
+ WM_SETFONT = 0x0030
76
+ WM_GETFONT = 0x0031
77
+ WM_SETHOTKEY = 0x0032
78
+ WM_GETHOTKEY = 0x0033
79
+ WM_QUERYDRAGICON = 0x0037
80
+ WM_COMPAREITEM = 0x0039
81
+ WM_GETOBJECT = 0x003D
82
+ WM_COMPACTING = 0x0041
83
+ WM_COMMNOTIFY = 0x0044
84
+ WM_WINDOWPOSCHANGING = 0x0046
85
+ WM_WINDOWPOSCHANGED = 0x0047
86
+ WM_POWER = 0x0048
87
+ WM_COPYDATA = 0x004A
88
+ WM_CANCELJOURNAL = 0x004B
89
+ WM_NOTIFY = 0x004E
90
+ WM_INPUTLANGCHANGEREQUEST = 0x0050
91
+ WM_INPUTLANGCHANGE = 0x0051
92
+ WM_TCARD = 0x0052
93
+ WM_HELP = 0x0053
94
+ WM_USERCHANGED = 0x0054
95
+ WM_NOTIFYFORMAT = 0x0055
96
+ WM_CONTEXTMENU = 0x007B
97
+ WM_STYLECHANGING = 0x007C
98
+ WM_STYLECHANGED = 0x007D
99
+ WM_DISPLAYCHANGE = 0x007E
100
+ WM_GETICON = 0x007F
101
+ WM_SETICON = 0x0080
102
+ WM_NCCREATE = 0x0081
103
+ WM_NCDESTROY = 0x0082
104
+ WM_NCCALCSIZE = 0x0083
105
+ WM_NCHITTEST = 0x0084
106
+ WM_NCPAINT = 0x0085
107
+ WM_NCACTIVATE = 0x0086
108
+ WM_GETDLGCODE = 0x0087
109
+ WM_SYNCPAINT = 0x0088
110
+ WM_NCMOUSEMOVE = 0x00A0
111
+ WM_NCLBUTTONDOWN = 0x00A1
112
+ WM_NCLBUTTONUP = 0x00A2
113
+ WM_NCLBUTTONDBLCLK = 0x00A3
114
+ WM_NCRBUTTONDOWN = 0x00A4
115
+ WM_NCRBUTTONUP = 0x00A5
116
+ WM_NCRBUTTONDBLCLK = 0x00A6
117
+ WM_NCMBUTTONDOWN = 0x00A7
118
+ WM_NCMBUTTONUP = 0x00A8
119
+ WM_NCMBUTTONDBLCLK = 0x00A9
120
+ WM_NCXBUTTONDOWN = 0x00AB
121
+ WM_NCXBUTTONUP = 0x00AC
122
+ WM_NCXBUTTONDBLCLK = 0x00AD
123
+ WM_INPUT = 0x00FF
124
+ WM_KEYFIRST = 0x0100
125
+ WM_KEYDOWN = 0x0100
126
+ WM_KEYUP = 0x0101
127
+ WM_CHAR = 0x0102
128
+ WM_DEADCHAR = 0x0103
129
+ WM_SYSKEYDOWN = 0x0104
130
+ WM_SYSKEYUP = 0x0105
131
+ WM_SYSCHAR = 0x0106
132
+ WM_SYSDEADCHAR = 0x0107
133
+ WM_UNICHAR = 0x0109
134
+ WM_IME_STARTCOMPOSITION = 0x010D
135
+ WM_IME_ENDCOMPOSITION = 0x010E
136
+ WM_IME_COMPOSITION = 0x010F
137
+ WM_IME_KEYLAST = 0x010F
138
+ WM_INITDIALOG = 0x0110
139
+ WM_COMMAND = 0x0111
140
+ WM_SYSCOMMAND = 0x0112
141
+ WM_TIMER = 0x0113
142
+ WM_HSCROLL = 0x0114
143
+ WM_VSCROLL = 0x0115
144
+ WM_INITMENU = 0x0116
145
+ WM_INITMENUPOPUP = 0x0117
146
+ WM_MENUSELECT = 0x011F
147
+ WM_MENUCHAR = 0x0120
148
+ WM_ENTERIDLE = 0x0121
149
+ WM_MENURBUTTONUP = 0x0122
150
+ WM_MENUDRAG = 0x0123
151
+ WM_MENUGETOBJECT = 0x0124
152
+ WM_UNINITMENUPOPUP = 0x0125
153
+ WM_MENUCOMMAND = 0x0126
154
+ WM_CHANGEUISTATE = 0x0127
155
+ WM_UPDATEUISTATE = 0x0128
156
+ WM_QUERYUISTATE = 0x0129
157
+ WM_CTLCOLORMSGBOX = 0x0132
158
+ WM_CTLCOLOREDIT = 0x0133
159
+ WM_CTLCOLORLISTBOX = 0x0134
160
+ WM_CTLCOLORBTN = 0x0135
161
+ WM_CTLCOLORDLG = 0x0136
162
+ WM_CTLCOLORSCROLLBAR = 0x0137
163
+ WM_CTLCOLORSTATIC = 0x0138
164
+ WM_MOUSEFIRST = 0x0200
165
+ WM_MOUSEMOVE = 0x0200
166
+ WM_LBUTTONDOWN = 0x0201
167
+ WM_LBUTTONUP = 0x0202
168
+ WM_LBUTTONDBLCLK = 0x0203
169
+ WM_RBUTTONDOWN = 0x0204
170
+ WM_RBUTTONUP = 0x0205
171
+ WM_RBUTTONDBLCLK = 0x0206
172
+ WM_MBUTTONDOWN = 0x0207
173
+ WM_MBUTTONUP = 0x0208
174
+ WM_MBUTTONDBLCLK = 0x0209
175
+ WM_MOUSEWHEEL = 0x020A
176
+ WM_XBUTTONDOWN = 0x020B
177
+ WM_XBUTTONUP = 0x020C
178
+ WM_XBUTTONDBLCLK = 0x020D
179
+ WM_MOUSELAST = 0x020D # Assume Win2k or later
180
+ WM_PARENTNOTIFY = 0x0210
181
+ WM_ENTERMENULOOP = 0x0211
182
+ WM_EXITMENULOOP = 0x0212
183
+ WM_NEXTMENU = 0x0213
184
+ WM_SIZING = 0x0214
185
+ WM_CAPTURECHANGED = 0x0215
186
+ WM_MOVING = 0x0216
187
+ WM_POWERBROADCAST = 0x0218
188
+ WM_DEVICECHANGE = 0x0219
189
+ WM_MDICREATE = 0x0220
190
+ WM_MDIDESTROY = 0x0221
191
+ WM_MDIACTIVATE = 0x0222
192
+ WM_MDIRESTORE = 0x0223
193
+ WM_MDINEXT = 0x0224
194
+ WM_MDIMAXIMIZE = 0x0225
195
+ WM_MDITILE = 0x0226
196
+ WM_MDICASCADE = 0x0227
197
+ WM_MDIICONARRANGE = 0x0228
198
+ WM_MDIGETACTIVE = 0x0229
199
+ WM_MDISETMENU = 0x0230
200
+ WM_ENTERSIZEMOVE = 0x0231
201
+ WM_EXITSIZEMOVE = 0x0232
202
+ WM_DROPFILES = 0x0233
203
+ WM_MDIREFRESHMENU = 0x0234
204
+ WM_IME_SETCONTEXT = 0x0281
205
+ WM_IME_NOTIFY = 0x0282
206
+ WM_IME_CONTROL = 0x0283
207
+ WM_IME_COMPOSITIONFULL = 0x0284
208
+ WM_IME_SELECT = 0x0285
209
+ WM_IME_CHAR = 0x0286
210
+ WM_IME_REQUEST = 0x0288
211
+ WM_IME_KEYDOWN = 0x0290
212
+ WM_IME_KEYUP = 0x0291
213
+ WM_MOUSEHOVER = 0x02A1
214
+ WM_MOUSELEAVE = 0x02A3
215
+ WM_NCMOUSEHOVER = 0x02A0
216
+ WM_NCMOUSELEAVE = 0x02A2
217
+ WM_WTSSESSION_CHANGE = 0x02B1
218
+ WM_TABLET_FIRST = 0x02c0
219
+ WM_TABLET_LAST = 0x02df
220
+ WM_CUT = 0x0300
221
+ WM_COPY = 0x0301
222
+ WM_PASTE = 0x0302
223
+ WM_CLEAR = 0x0303
224
+ WM_UNDO = 0x0304
225
+ WM_RENDERFORMAT = 0x0305
226
+ WM_RENDERALLFORMATS = 0x0306
227
+ WM_DESTROYCLIPBOARD = 0x0307
228
+ WM_DRAWCLIPBOARD = 0x0308
229
+ WM_PAINTCLIPBOARD = 0x0309
230
+ WM_VSCROLLCLIPBOARD = 0x030A
231
+ WM_SIZECLIPBOARD = 0x030B
232
+ WM_ASKCBFORMATNAME = 0x030C
233
+ WM_CHANGECBCHAIN = 0x030D
234
+ WM_HSCROLLCLIPBOARD = 0x030E
235
+ WM_QUERYNEWPALETTE = 0x030F
236
+ WM_PALETTEISCHANGING = 0x0310
237
+ WM_PALETTECHANGED = 0x0311
238
+ WM_HOTKEY = 0x0312
239
+ WM_PRINT = 0x0317
240
+ WM_PRINTCLIENT = 0x0318
241
+ WM_APPCOMMAND = 0x0319
242
+ WM_THEMECHANGED = 0x031A
243
+ WM_HANDHELDFIRST = 0x0358
244
+ WM_HANDHELDLAST = 0x035F
245
+ WM_AFXFIRST = 0x0360
246
+ WM_AFXLAST = 0x037F
247
+ WM_PENWINFIRST = 0x0380
248
+ WM_PENWINLAST = 0x038F
249
+ WM_APP = 0x8000
250
+ WM_USER = 0x0400
251
+
252
+ # I'd rather not mixin Windows::SystemInfo
253
+ getVersionEx = Win32::API.new('GetVersionEx', 'P', 'B')
254
+ vbuf = "\0" * 128
255
+ vinfo = [148, 0 ,0, 0, 0, vbuf].pack("LLLLLa128")
256
+ getVersionEx.call(vinfo)
257
+ info = vinfo.unpack("LLLLLa128")
258
+
259
+ if info[2] >= 1
260
+ WM_KEYLAST = 0x0109 # Windows XP or later
261
+ else
262
+ WM_KEYLAST = 0x0108 # Windows 2000
263
+ end
264
+
265
+ API.new('BroadcastSystemMessage', 'LPILL', 'L', 'user32')
266
+ API.new('DefWindowProc', 'LLLL', 'L', 'user32')
267
+ API.new('DispatchMessage', 'P', 'L', 'user32')
268
+ API.new('GetInputState', 'V', 'B', 'user32')
269
+ API.new('GetMessage', 'PLII', 'B', 'user32')
270
+ API.new('GetMessageExtraInfo', 'V', 'L', 'user32')
271
+ API.new('GetMessagePos', 'V', 'L', 'user32')
272
+ API.new('GetMessageTime', 'V', 'L', 'user32')
273
+ API.new('GetQueueStatus', 'I', 'L', 'user32')
274
+ API.new('InSendMessage', 'V', 'B', 'user32')
275
+ API.new('InSendMessageEx', 'L', 'L', 'user32')
276
+ API.new('PeekMessage', 'PLIII', 'B', 'user32')
277
+ API.new('PostMessage', 'PLLL', 'B', 'user32')
278
+ API.new('PostQuitMessage', 'I', 'V', 'user32')
279
+ API.new('PostThreadMessage', 'LILL', 'B', 'user32')
280
+ API.new('RegisterWindowMessage', 'P', 'I', 'user32')
281
+ API.new('ReplyMessage', 'L', 'B', 'user32')
282
+ API.new('SendMessage', 'LILL', 'L', 'user32')
283
+ API.new('SendMessageCallback', 'LILLKP', 'B', 'user32')
284
+ API.new('SendMessageTimeout', 'LILLIIP', 'L', 'user32')
285
+ API.new('SendNotifyMessage', 'LILLIIP', 'L', 'user32')
286
+ API.new('SetMessageExtraInfo', 'L', 'L', 'user32')
287
+ API.new('TranslateMessage', 'P', 'B', 'user32')
288
+ API.new('WaitMessage', 'V', 'B', 'user32')
289
+
290
+ begin
291
+ API.new('BroadcastSystemMessageEx', 'LPILLP', 'L', 'user32')
292
+ rescue Win32::API::LoadLibraryError
293
+ # Windows XP or later
294
+ end
295
+ end
296
+ end
297
+ end