Module: Win32::CaptureIE::FFI::User32

Extended by:
Base
Included in:
Browser, ScreenCaptor, Window
Defined in:
lib/win32/capture_ie/ffi/user32.rb

Overview

:nodoc:

Constant Summary collapse

GW_HWNDFIRST =
0
GW_HWNDLAST =
1
GW_HWNDNEXT =
2
GW_HWNDPREV =
3

Class Method Summary collapse

Methods included from Base

define_ffi_entry

Class Method Details

.each_child_window(hwnd) ⇒ Object



90
91
92
93
94
95
96
97
98
# File 'lib/win32/capture_ie/ffi/user32.rb', line 90

def each_child_window(hwnd)
  child = get_first_child(hwnd)
  if child
    yield child
    while child = get_next_sibling(child)
      yield child
    end
  end
end

.get_class_name(hwnd) ⇒ Object

Raises:



28
29
30
31
32
33
# File 'lib/win32/capture_ie/ffi/user32.rb', line 28

def get_class_name(hwnd)
  buf = "\0" * 255
  r = GetClassName(hwnd, buf, buf.length)
  raise Win32APIError, "GetClassName failed" if r.nil? or r.zero?
  buf[0...r]
end

.get_first_child(hwnd) ⇒ Object



70
71
72
# File 'lib/win32/capture_ie/ffi/user32.rb', line 70

def get_first_child(hwnd)
  get_top_window(hwnd)
end

.get_first_sibling(hwnd) ⇒ Object



74
75
76
# File 'lib/win32/capture_ie/ffi/user32.rb', line 74

def get_first_sibling(hwnd)
  get_window(hwnd, GW_HWNDFIRST)
end

.get_last_sibling(hwnd) ⇒ Object



78
79
80
# File 'lib/win32/capture_ie/ffi/user32.rb', line 78

def get_last_sibling(hwnd)
  get_window(hwnd, GW_HWNDLAST)
end

.get_next_sibling(hwnd) ⇒ Object



82
83
84
# File 'lib/win32/capture_ie/ffi/user32.rb', line 82

def get_next_sibling(hwnd)
  get_window(hwnd, GW_HWNDNEXT)
end

.get_prev_sibling(hwnd) ⇒ Object



86
87
88
# File 'lib/win32/capture_ie/ffi/user32.rb', line 86

def get_prev_sibling(hwnd)
  get_window(hwnd, GW_HWNDPREV)
end

.get_top_window(hwnd) ⇒ Object



52
53
54
55
56
57
58
59
# File 'lib/win32/capture_ie/ffi/user32.rb', line 52

def get_top_window(hwnd)
  r = GetTopWindow(hwnd)
  if r.nil? or r.zero?
    nil
  else
    r
  end
end

.get_window(hwnd, cmd) ⇒ Object



61
62
63
64
65
66
67
68
# File 'lib/win32/capture_ie/ffi/user32.rb', line 61

def get_window(hwnd, cmd)
  r = GetWindow(hwnd, cmd)
  if r.nil? or r.zero?
    nil
  else
    r
  end
end

.get_window_rect(hwnd) ⇒ Object



45
46
47
48
49
# File 'lib/win32/capture_ie/ffi/user32.rb', line 45

def get_window_rect(hwnd)
  buf = [0, 0, 0, 0].pack("L4")
  GetWindowRect(hwnd, buf)
  buf.unpack("L4")
end

.with_window_dc(hwnd) ⇒ Object

Raises:



35
36
37
38
39
40
41
42
43
# File 'lib/win32/capture_ie/ffi/user32.rb', line 35

def with_window_dc(hwnd)
  hdc = GetWindowDC(hwnd)
  raise Win32APIError, "GetDC failed" if hdc.nil? or hdc.zero?
  begin
    yield hdc
  ensure
    ReleaseDC(hwnd, hdc)
  end
end