Module: Fzeet

Defined in:
lib/fzeet/windows.rb,
lib/fzeet/windows/libc.rb,
lib/fzeet/windows/user.rb,
lib/fzeet/windows/urlmon.rb,
lib/fzeet/windows/propsys.rb,
lib/fzeet/windows/shdocvw.rb,
lib/fzeet/windows/shlwapi.rb,
lib/fzeet/windows/gdi/Font.rb,
lib/fzeet/windows/uiribbon.rb,
lib/fzeet/windows/core/Rect.rb,
lib/fzeet/windows/core/Size.rb,
lib/fzeet/windows/scintilla.rb,
lib/fzeet/windows/user/Menu.rb,
lib/fzeet/windows/com/Common.rb,
lib/fzeet/windows/comctl/Tab.rb,
lib/fzeet/windows/core/Point.rb,
lib/fzeet/windows/gdi/Common.rb,
lib/fzeet/windows/ole/Common.rb,
lib/fzeet/windows/comctl/Edit.rb,
lib/fzeet/windows/core/Common.rb,
lib/fzeet/windows/oleaut/Bstr.rb,
lib/fzeet/windows/user/Common.rb,
lib/fzeet/windows/core/Version.rb,
lib/fzeet/windows/shell/Common.rb,
lib/fzeet/windows/user/Message.rb,
lib/fzeet/windows/comctl/Button.rb,
lib/fzeet/windows/comctl/Common.rb,
lib/fzeet/windows/comctl/Header.rb,
lib/fzeet/windows/comctl/UpDown.rb,
lib/fzeet/windows/comdlg/Common.rb,
lib/fzeet/windows/kernel/Common.rb,
lib/fzeet/windows/mshtml/Common.rb,
lib/fzeet/windows/oleaut/Common.rb,
lib/fzeet/windows/comctl/SysLink.rb,
lib/fzeet/windows/oleaut/Variant.rb,
lib/fzeet/windows/comctl/ComboBox.rb,
lib/fzeet/windows/core/SystemTime.rb,
lib/fzeet/windows/ole/PropVariant.rb,
lib/fzeet/windows/user/MessageBox.rb,
lib/fzeet/windows/user/Window/MDI.rb,
lib/fzeet/windows/oleaut/SafeArray.rb,
lib/fzeet/windows/shell/FileDialog.rb,
lib/fzeet/windows/user/Accelerator.rb,
lib/fzeet/windows/user/Window/View.rb,
lib/fzeet/windows/comctl/ComboBoxEx.rb,
lib/fzeet/windows/comdlg/FileDialog.rb,
lib/fzeet/windows/comdlg/FontDialog.rb,
lib/fzeet/windows/user/Control/Edit.rb,
lib/fzeet/windows/comctl/ProgressBar.rb,
lib/fzeet/windows/comdlg/ColorDialog.rb,
lib/fzeet/windows/comdlg/PrintDialog.rb,
lib/fzeet/windows/user/Window/Common.rb,
lib/fzeet/windows/user/Window/Dialog.rb,
lib/fzeet/windows/user/Window/Window.rb,
lib/fzeet/windows/user/Control/Button.rb,
lib/fzeet/windows/user/Control/Common.rb,
lib/fzeet/windows/user/Control/Static.rb,
lib/fzeet/windows/comctl/MonthCalendar.rb,
lib/fzeet/windows/comctl/PropertySheet.rb,
lib/fzeet/windows/user/Control/ListBox.rb,
lib/fzeet/windows/comctl/DateTimePicker.rb,
lib/fzeet/windows/shell/BrowseForFolder.rb,
lib/fzeet/windows/user/Control/ComboBox.rb,
lib/fzeet/windows/user/Window/Container.rb,
lib/fzeet/windows/comdlg/ShellFileDialog.rb,
lib/fzeet/windows/user/SystemParametersInfo.rb,
lib/fzeet/windows/user/Window/WindowMethods.rb

Overview

Fzeet::Windows.DetonateLastError(FFI::Pointer::NULL, :LoadLibrary, “#File.dirname(File.expand_path(__FILE__))/windows/libcef/libcef.dll” ).tap { |hdll| at_exit { Fzeet::Windows.FreeLibrary(hdll) } } if Fzeet::Windows::Version >= :xp

Defined Under Namespace

Modules: BitmapMethods, BrushMethods, ButtonMethods, ComboBoxExMethods, ComboBoxMethods, CursorMethods, DCMethods, DateTimePickerMethods, EditMethods, FontMethods, HeaderMethods, IconMethods, ListBoxMethods, MonthCalendarMethods, ProgressBarMethods, ScintillaMethods, ShellFileDialogMethods, StaticMethods, SysLinkMethods, TabMethods, Toggle, UpDownMethods, WindowMethods, Windows Classes: AcceleratorTable, Application, BasicWindow, Button, ClientDC, ColorDialog, ComboBox, ComboBoxEx, Command, CommonDialog, Container, Control, DateTimePicker, Dialog, DialogResult, Edit, ExplorerBrowser, FileDialog, FileOpenDialog, FileSaveDialog, FolderDialog, FontDialog, Frame, Header, IndirectFont, ListBox, MDIChild, Menu, Message, MonthCalendar, PARGB32, PageSetupDialog, PopupMenu, PrintDialog, PrintDialogEx, ProgressBar, PropertyPage, PropertySheet, Scintilla, ScreenDC, ShellFileOpenDialog, ShellFileSaveDialog, ShellFolderDialog, Static, SysLink, SystemBrush, SystemCursor, SystemIcon, Tab, UIRibbon, UpDown, View, WebBrowser, Window, WindowClass

Constant Summary collapse

Rect =
Windows::RECT
Size =
Windows::SIZE
Point =
Windows::POINT
Decimal =
Windows::DECIMAL
Handle =
Windows::HANDLE
Bstr =
Windows::BSTR
Variant =
Windows::VARIANT
SystemTime =
Windows::SYSTEMTIME
PropVariant =
Windows::PROPVARIANT
SafeArray =
Windows::SAFEARRAY

Class Method Summary collapse

Class Method Details

.constant(c, *prefixes) ⇒ Object



141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# File 'lib/fzeet/windows/core/Common.rb', line 141

def constant(c, *prefixes)
	return c if c.kind_of?(Integer) || c.kind_of?(FFI::Pointer)

	c = c.upcase

	prefixes.map! { |prefix|
		prefix = prefix.upcase

		"#{prefix}#{c}".tap { |name|
			return Windows.const_get(name) if Windows.const_defined?(name)
		}
	}

	raise "Constant not found: #{c} (tried: #{prefixes.join(', ')})."
end

.flags(flags, *prefixes) ⇒ Object



157
158
159
160
161
# File 'lib/fzeet/windows/core/Common.rb', line 157

def flags(flags, *prefixes)
	return flags if flags.kind_of?(Integer)

	[*flags].inject(0) { |flags, flag| flags |= constant(flag, *prefixes) }
end

.message(message, opts = {}) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/fzeet/windows/user/MessageBox.rb', line 73

def message(message, opts = {})
	_opts = {
		window: Application.window,
		caption: Application.name,
		buttons: [:ok],
		icon: :information
	}
	badopts = opts.keys - _opts.keys; raise "Bad option(s): #{badopts.join(', ')}." unless badopts.empty?
	_opts.merge!(opts)

	defbutton = nil
	defbutton = if [*_opts[:buttons]].find.with_index { |button, i| defbutton = i + 1; button =~ /^[A-Z]/ }
		constant(defbutton.to_s, :mb_defbutton)
	else
		0
	end

	flags = constant([*_opts[:buttons]].join(''), :mb_) | defbutton | constant(_opts[:icon], :mb_icon)

	DialogResult.new(
		Windows.DetonateLastError(0, :MessageBox, _opts[:window] && _opts[:window].handle, message.to_s, _opts[:caption].to_s, flags)
	)
end

.question(message, opts = {}) ⇒ Object



97
98
99
100
101
102
# File 'lib/fzeet/windows/user/MessageBox.rb', line 97

def question(message, opts = {})
	opts[:buttons] ||= [:yes, :no]
	opts[:icon] ||= :question

	message(message, opts)
end

.shell(name, args = nil, dir = nil, verb = 'open') ⇒ Object



317
318
319
# File 'lib/fzeet/windows/shell/Common.rb', line 317

def shell(name, args = nil, dir = nil, verb = 'open')
	raise 'ShellExecute failed.' unless Windows.ShellExecute(nil, verb, name, args, dir, Windows::SW_NORMAL).to_i > 32
end

.using(o, cleanup = :dispose) ⇒ Object



165
166
167
168
169
# File 'lib/fzeet/windows/core/Common.rb', line 165

def using(o, cleanup = :dispose)
	yield o
ensure
	o.send(cleanup)
end