rdp-win32screenshot 0.0.7.3 → 0.0.9

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.
File without changes
File without changes
data/VERSION CHANGED
@@ -1,2 +1 @@
1
- 0.0.7.3
2
-
1
+ 0.0.9
@@ -28,6 +28,8 @@ module Win32
28
28
  [:long], :long
29
29
  attach_function :client_rect, :GetClientRect,
30
30
  [:long, :pointer], :bool
31
+ attach_function :window_rect, :GetWindowRect,
32
+ [:long, :pointer], :bool
31
33
  attach_function :minimized, :IsIconic,
32
34
  [:long], :bool
33
35
  attach_function :show_window, :ShowWindow,
@@ -100,7 +102,7 @@ module Win32
100
102
  :search_class, :char # boolean
101
103
  end
102
104
 
103
- def hwnd(window_title, search_class = nil)
105
+ def hwnd(window_title, search_class = false)
104
106
  window = WindowStruct.new
105
107
  unless window_title.is_a?(Regexp)
106
108
  window_title = Regexp.escape(window_title.to_s)
data/lib/win32/util.rb CHANGED
@@ -3,7 +3,7 @@ module Win32
3
3
  class Util
4
4
  class << self
5
5
 
6
- def all_windows
6
+ def all_desktop_windows
7
7
  titles = []
8
8
  window_callback = FFI::Function.new(:bool, [ :long, :pointer ], { :convention => :stdcall }) do |hwnd, param|
9
9
  titles << [window_title(hwnd), hwnd]
@@ -13,7 +13,43 @@ module Win32
13
13
  BitmapMaker.enum_windows(window_callback, nil)
14
14
  titles
15
15
  end
16
-
16
+
17
+ # just returns a long list of hwnd's...
18
+ # unless with_info is true
19
+ # then it will return all hwnds with full info about each window
20
+ def windows_hierarchy with_info = false
21
+ all = {}
22
+ desktop_hwnd = BitmapMaker.desktop_window
23
+ root = {:hwnd => desktop_hwnd, :children => []}
24
+ root.merge!(get_info(desktop_hwnd)) if with_info
25
+ parents = []
26
+ parents << root
27
+ window_callback = FFI::Function.new(:bool, [ :long, :pointer ], { :convention => :stdcall }) do |hwnd, param|
28
+ # this is a child of the most recent parent
29
+ myself = {:hwnd => hwnd, :children => []}
30
+ myself.merge!(get_info(hwnd)) if with_info
31
+ parents[-1][:children] << myself
32
+ parents << myself
33
+ if !all[hwnd]
34
+ all[hwnd] = true
35
+ BitmapMaker.enum_child_windows(hwnd, window_callback, nil)
36
+ end
37
+
38
+ parents.pop
39
+ true
40
+ end
41
+ BitmapMaker.enum_child_windows(desktop_hwnd, window_callback, nil)
42
+ root
43
+ end
44
+
45
+ def get_info hwnd
46
+ {:title => window_title(hwnd),
47
+ :class => window_class(hwnd),
48
+ :dimensions => dimensions_for(hwnd),
49
+ :starting_coordinates => location_of(hwnd)
50
+ }
51
+ end
52
+
17
53
  def window_title hwnd
18
54
  title_length = BitmapMaker.window_text_length(hwnd) + 1
19
55
  title = FFI::MemoryPointer.new :char, title_length
@@ -32,6 +68,13 @@ module Win32
32
68
  raise "window with title '#{title_query}' was not found!" unless hwnd
33
69
  hwnd
34
70
  end
71
+
72
+ def location_of(hwnd)
73
+ rect = [0, 0, 0, 0].pack('L4')
74
+ BitmapMaker.window_rect(hwnd, rect)
75
+ x, y, width, height = rect.unpack('L4')
76
+ return x, y
77
+ end
35
78
 
36
79
  def dimensions_for(hwnd)
37
80
  rect = [0, 0, 0, 0].pack('L4')
@@ -11,8 +11,8 @@ describe Win32::Screenshot::Util do
11
11
  @calc_hwnd = Win32::Screenshot::Util.window_hwnd("Calculator")
12
12
  end
13
13
 
14
- it ".all_windows enumerates all available windows" do
15
- all_windows = Win32::Screenshot::Util.all_windows
14
+ it ".all_desktop_windows enumerates all available windows" do
15
+ all_windows = Win32::Screenshot::Util.all_desktop_windows
16
16
  all_windows.should_not be_empty
17
17
  all_windows[0].should be_an(Array)
18
18
  all_windows[0][0].should be_a(String)
@@ -38,8 +38,36 @@ describe Win32::Screenshot::Util do
38
38
  Win32::Screenshot::Util.window_class(@calc_hwnd).should == "CalcFrame"
39
39
  end
40
40
 
41
+ it ".get_info returns lots of info about an hwnd" do
42
+ desktop_hwnd = Win32::Screenshot::BitmapMaker.desktop_window
43
+ info = Win32::Screenshot::Util.get_info desktop_hwnd
44
+ info.should be_a Hash
45
+ info.keys.sort.should == [:title, :class, :dimensions, :starting_coordinates].sort
46
+ end
47
+
48
+ it ".windows_hierarchy returns hwnds" do
49
+ a = Win32::Screenshot::Util.windows_hierarchy
50
+ # should have root as "desktop"
51
+ # though in reality some windows might not be descendants of the desktop
52
+ # (see the WinCheat source which discusses this further)
53
+ # but we don't worry about that edge case yet
54
+ a.should be_a Hash
55
+ a[:children].should be_an Array
56
+ a[:children].length.should be > 0
57
+ a[:children][0].should be_a Hash
58
+ a[:hwnd].should == Win32::Screenshot::BitmapMaker.desktop_window
59
+ end
60
+
61
+ it ".windows_hierarchy can return info" do
62
+ a = Win32::Screenshot::Util.windows_hierarchy true
63
+ # check for right structure
64
+ for hash_example in [a, a[:children][0]] do
65
+ hash_example.keys.sort.should == [:title, :hwnd, :class, :dimensions, :starting_coordinates, :children].sort
66
+ end
67
+ end
68
+
41
69
  after :all do
42
- # test our hwnd -> pid method
70
+ # tests our hwnd -> pid method, and conveniently, shuts down the calculator process
43
71
  calc_pid = Win32::Screenshot::Util.window_process_id(@calc_hwnd)
44
72
  system("taskkill /PID #{calc_pid}")
45
73
  proc {Win32::Screenshot::Util.window_hwnd("Calculator") }.should raise_exception("window with title 'Calculator' was not found!")
@@ -1,69 +1,69 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{win32screenshot}
8
- s.version = "0.0.7"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Jarmo Pertman", "Aslak Helles\u00F8y"]
12
- s.date = %q{2010-08-19}
13
- s.description = %q{Capture Screenshots on Windows with Ruby}
14
- s.email = ["jarmo.p@gmail.com", "aslak.hellesoy@gmail.com"]
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".gitignore",
22
- "History.rdoc",
23
- "LICENSE",
24
- "README.rdoc",
25
- "Rakefile",
26
- "VERSION",
27
- "lib/win32/screenshot.rb",
28
- "lib/win32/screenshot/bitmap_maker.rb",
29
- "lib/win32/util.rb",
30
- "spec/spec.opts",
31
- "spec/spec_helper.rb",
32
- "spec/win32_screenshot_spec.rb",
33
- "spec/win32_screenshot_util_spec.rb",
34
- "win32screenshot.gemspec"
35
- ]
36
- s.homepage = %q{http://github.com/jarmo/win32screenshot}
37
- s.rdoc_options = ["--main", "README.rdoc"]
38
- s.require_paths = ["lib"]
39
- s.rubygems_version = %q{1.3.7}
40
- s.summary = %q{Capture Screenshots on Windows with Ruby}
41
- s.test_files = [
42
- "spec/spec_helper.rb",
43
- "spec/win32_screenshot_spec.rb",
44
- "spec/win32_screenshot_util_spec.rb"
45
- ]
46
-
47
- if s.respond_to? :specification_version then
48
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
49
- s.specification_version = 3
50
-
51
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
52
- s.add_runtime_dependency(%q<ffi>, [">= 0"])
53
- s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
54
- s.add_development_dependency(%q<os>, [">= 0"])
55
- s.add_development_dependency(%q<rmagick>, [">= 0"])
56
- else
57
- s.add_dependency(%q<ffi>, [">= 0"])
58
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
59
- s.add_dependency(%q<os>, [">= 0"])
60
- s.add_dependency(%q<rmagick>, [">= 0"])
61
- end
62
- else
63
- s.add_dependency(%q<ffi>, [">= 0"])
64
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
65
- s.add_dependency(%q<os>, [">= 0"])
66
- s.add_dependency(%q<rmagick>, [">= 0"])
67
- end
68
- end
69
-
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{win32screenshot}
8
+ s.version = "0.0.7"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Jarmo Pertman", "Aslak Helles\303\270y"]
12
+ s.date = %q{2010-08-18}
13
+ s.description = %q{Capture Screenshots on Windows with Ruby}
14
+ s.email = ["jarmo.p@gmail.com", "aslak.hellesoy@gmail.com"]
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ "History.rdoc",
23
+ "LICENSE",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "lib/win32/screenshot.rb",
28
+ "lib/win32/screenshot/bitmap_maker.rb",
29
+ "lib/win32/util.rb",
30
+ "spec/spec.opts",
31
+ "spec/spec_helper.rb",
32
+ "spec/win32_screenshot_spec.rb",
33
+ "spec/win32_screenshot_util_spec.rb",
34
+ "win32screenshot.gemspec"
35
+ ]
36
+ s.homepage = %q{http://github.com/jarmo/win32screenshot}
37
+ s.rdoc_options = ["--main", "README.rdoc"]
38
+ s.require_paths = ["lib"]
39
+ s.rubygems_version = %q{1.3.7}
40
+ s.summary = %q{Capture Screenshots on Windows with Ruby}
41
+ s.test_files = [
42
+ "spec/spec_helper.rb",
43
+ "spec/win32_screenshot_spec.rb",
44
+ "spec/win32_screenshot_util_spec.rb"
45
+ ]
46
+
47
+ if s.respond_to? :specification_version then
48
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
49
+ s.specification_version = 3
50
+
51
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
52
+ s.add_runtime_dependency(%q<ffi>, [">= 0"])
53
+ s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
54
+ s.add_development_dependency(%q<os>, [">= 0"])
55
+ s.add_development_dependency(%q<rmagick>, [">= 0"])
56
+ else
57
+ s.add_dependency(%q<ffi>, [">= 0"])
58
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
59
+ s.add_dependency(%q<os>, [">= 0"])
60
+ s.add_dependency(%q<rmagick>, [">= 0"])
61
+ end
62
+ else
63
+ s.add_dependency(%q<ffi>, [">= 0"])
64
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
65
+ s.add_dependency(%q<os>, [">= 0"])
66
+ s.add_dependency(%q<rmagick>, [">= 0"])
67
+ end
68
+ end
69
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdp-win32screenshot
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 13
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 0
8
- - 7
9
- - 3
10
- version: 0.0.7.3
9
+ - 9
10
+ version: 0.0.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jarmo Pertman
@@ -16,8 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-08-19 00:00:00 -06:00
20
- default_executable:
19
+ date: 2011-08-12 00:00:00 Z
21
20
  dependencies:
22
21
  - !ruby/object:Gem::Dependency
23
22
  name: ffi
@@ -27,6 +26,7 @@ dependencies:
27
26
  requirements:
28
27
  - - ">="
29
28
  - !ruby/object:Gem::Version
29
+ hash: 3
30
30
  segments:
31
31
  - 0
32
32
  version: "0"
@@ -40,6 +40,7 @@ dependencies:
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
+ hash: 13
43
44
  segments:
44
45
  - 1
45
46
  - 2
@@ -55,6 +56,7 @@ dependencies:
55
56
  requirements:
56
57
  - - ">="
57
58
  - !ruby/object:Gem::Version
59
+ hash: 3
58
60
  segments:
59
61
  - 0
60
62
  version: "0"
@@ -68,6 +70,7 @@ dependencies:
68
70
  requirements:
69
71
  - - ">="
70
72
  - !ruby/object:Gem::Version
73
+ hash: 3
71
74
  segments:
72
75
  - 0
73
76
  version: "0"
@@ -86,9 +89,10 @@ extra_rdoc_files:
86
89
  - README.rdoc
87
90
  files:
88
91
  - .document
89
- - .gitignore
90
92
  - History.rdoc
91
93
  - LICENSE
94
+ - RDP_BRANCH_HAS_MASTER_WITH_CORRECT_VERSION_NUMBER
95
+ - RDP_VERSION_IS_IN_RDP_BRANCH
92
96
  - README.rdoc
93
97
  - Rakefile
94
98
  - VERSION
@@ -100,7 +104,6 @@ files:
100
104
  - spec/win32_screenshot_spec.rb
101
105
  - spec/win32_screenshot_util_spec.rb
102
106
  - win32screenshot.gemspec
103
- has_rdoc: true
104
107
  homepage: http://github.com/jarmo/win32screenshot
105
108
  licenses: []
106
109
 
@@ -115,6 +118,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
115
118
  requirements:
116
119
  - - ">="
117
120
  - !ruby/object:Gem::Version
121
+ hash: 3
118
122
  segments:
119
123
  - 0
120
124
  version: "0"
@@ -123,17 +127,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
127
  requirements:
124
128
  - - ">="
125
129
  - !ruby/object:Gem::Version
130
+ hash: 3
126
131
  segments:
127
132
  - 0
128
133
  version: "0"
129
134
  requirements: []
130
135
 
131
136
  rubyforge_project:
132
- rubygems_version: 1.3.7
137
+ rubygems_version: 1.7.2
133
138
  signing_key:
134
139
  specification_version: 3
135
140
  summary: Capture Screenshots on Windows with Ruby
136
- test_files:
137
- - spec/spec_helper.rb
138
- - spec/win32_screenshot_spec.rb
139
- - spec/win32_screenshot_util_spec.rb
141
+ test_files: []
142
+
data/.gitignore DELETED
@@ -1,5 +0,0 @@
1
- coverage
2
- rdoc
3
- pkg
4
- .idea
5
- spec/tmp