92 lines
2.7 KiB
Plaintext
92 lines
2.7 KiB
Plaintext
== Description
|
|
This is a wrapper for Win32::API that simplifies various idioms typically
|
|
used by people who use Win32::API.
|
|
|
|
== Synopsis
|
|
require 'windows/api'
|
|
include Windows
|
|
|
|
# Defaults to 'V' prototype, 'L' return type and 'kernel32' library
|
|
GetVersion = API.new('GetVersion')
|
|
|
|
# Defaults to 'L' return type and 'kernel32' library
|
|
CloseHandle = API.new('CloseHandle', 'L')
|
|
|
|
# Defaults to 'kernel32' library
|
|
GetWindowsDirectory = API.new('GetWindowsDirectory', 'LI', 'I')
|
|
|
|
# Explicitly state every argument
|
|
GetComputerNameEx = API.new('GetComputerNameEx', 'PPP', 'I', 'kernel32')
|
|
|
|
# Use long data type names
|
|
GetUserName = API.new('GetUserName',['LPTSTR','LPDWORD'],'BOOL','advapi32')
|
|
|
|
# Attributes for possible inspection
|
|
puts GetVersion.dll_name # 'kernel32'
|
|
puts GetVersion.function_name # 'GetVersion'
|
|
puts GetVersion.prototype # ['V']
|
|
puts GetVersion.return_type # 'L'
|
|
|
|
# Automatic method generation
|
|
|
|
# This code....
|
|
module Windows
|
|
module Foo
|
|
API.auto_namespace = 'Windows::Foo'
|
|
API.auto_constant = true
|
|
API.auto_method = true
|
|
API.auto_unicode = true
|
|
|
|
API.new('GetComputerName', 'PP', 'B')
|
|
end
|
|
end
|
|
|
|
# Is the same as this code...
|
|
module Windows
|
|
module Foo
|
|
GetComputerName = Win32API.new('kernel32', 'GetComputerName', 'PP', 'I')
|
|
GetComputerNameA = Win32API.new('kernel32', 'GetComputerNameA', 'PP', 'I')
|
|
GetComputerNameW = Win32API.new('kernel32', 'GetComputerNameW', 'PP', 'I')
|
|
|
|
def GetComputerName(p1, p2)
|
|
GetComputerName.call(p1, p2) != 0
|
|
end
|
|
|
|
def GetComputerNameA(p1, p2)
|
|
GetComputerName.call(p1, p2) != 0
|
|
end
|
|
|
|
def GetComputerNameW(p1, p2)
|
|
GetComputerName.call(p1, p2) != 0
|
|
end
|
|
end
|
|
end
|
|
|
|
== Advantages over plain Win32::API
|
|
* Automatic constant generation.
|
|
* Automatic definition of ANSI and Unicode method wrappers, including
|
|
special handling for boolean methods.
|
|
* Ability to use more familiar Windows data types, e.g. DWORD.
|
|
* Automatic handling of msvcrt vs msvcrXX via MSVCRT_DLL constant.
|
|
|
|
== More documentation
|
|
See the RDoc documentation, which should have been automatically generated
|
|
if you installed this as a gem.
|
|
|
|
== Future Plans
|
|
Add an auto_private method that is true by default.
|
|
Replace or drop this library in favor of FFI.
|
|
|
|
== Bugs
|
|
None that I'm aware of. Please submit any bugs to the project page at
|
|
http://www.rubyforge.org/projects/win32utils.
|
|
|
|
== Copyright
|
|
(C) 2007-2012, Daniel J. Berger
|
|
|
|
== License
|
|
Artistic 2.0
|
|
|
|
== Author
|
|
Daniel Berger
|