vrvirtualdesktop 0.0.1

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.
@@ -0,0 +1,177 @@
1
+ require "Win32/User32"
2
+ require "rubygems"
3
+ require_gem "SimpleTrace", "< 0.1.0"
4
+
5
+ module Win32
6
+
7
+ class WindowManager
8
+ private
9
+ def get_task_bar_window
10
+ @shell_hook_message, rs = RegisterWindowMessage.call("SHELLHOOK")
11
+ @hwnd_tray, rs = FindWindowEx.call(NULL, NULL, "Shell_TrayWnd", nil);
12
+ @hwnd_bar, rs = FindWindowEx.call(@hwnd_tray, NULL, "ReBarWindow32", nil );
13
+
14
+ hwnd_bar1 = @hwnd_bar
15
+ hwnd_bar1 = @hwnd_tray if hwnd_bar1 == NULL
16
+ @hwnd_task_list, rs = FindWindowEx.call(hwnd_bar1, NULL, "MSTaskSwWClass", nil)
17
+
18
+ $TRACE.debug 5, sprintf("hwnd_tray = %d, hwnd_bar = %d, hwnd_task_list = %d\n",
19
+ @hwnd_tray, hwnd_bar1, @hwnd_task_list)
20
+ return @hwnd_task_list
21
+ end
22
+
23
+ public
24
+ TRUE = 1
25
+
26
+ class Window
27
+
28
+ class << self
29
+ # create is here to allow another program to
30
+ # change how virtual desktops are created (use an object
31
+ # loaded off of disk instead of a freshly created one
32
+ def create(*args)
33
+ Window.new(*args)
34
+ end
35
+ end
36
+
37
+ attr_reader :hwnd, :style, :ex_style, :class_name, :owner
38
+ def initialize(hwnd, style, ex_style, class_name, owner, window_manager)
39
+ @hwnd ||= hwnd
40
+ @style ||= style
41
+ @ex_style ||= ex_style
42
+ @class_name ||= class_name
43
+ @owner ||= owner
44
+ @window_manager ||= window_manager
45
+ end
46
+
47
+ def hide
48
+ @window_manager.hide_window(@hwnd)
49
+ end
50
+
51
+ def show
52
+ @window_manager.show_window(@hwnd, iconic?)
53
+ end
54
+
55
+ def iconic?
56
+ @window_manager.iconic?(@hwnd)
57
+ end
58
+
59
+ def ==(other)
60
+ return false unless other.kind_of?(self.class)
61
+ return @hwnd == other.hwnd
62
+ end
63
+
64
+ def eql?(other)
65
+ self == other
66
+ end
67
+
68
+ def hash
69
+ @hwnd.hash
70
+ end
71
+
72
+ def to_s
73
+ "#{@hwnd}-#{@class_name}"
74
+ end
75
+ end
76
+
77
+ def initialize
78
+ get_task_bar_window
79
+
80
+ @buff = " " * 16
81
+ @windows = {}
82
+
83
+ @enum_windows_proc = DL.callback('ILL') do |hwnd,lparam|
84
+ @window_handles.push(hwnd)
85
+ TRUE
86
+ end
87
+ end
88
+
89
+ def process_window_handles(window_handles, test)
90
+ window_handles.each do |hwnd|
91
+ #style, rs = GetWindowLong.call(hwnd, GWL_STYLE)
92
+ #ex_style, rs = GetWindowLong.call(hwnd, GWL_EXSTYLE)
93
+ #owner, rs = GetWindow.call(hwnd, GW_OWNER)
94
+ style = GetWindowLong_2.call(hwnd, GWL_STYLE)
95
+ ex_style = GetWindowLong_2.call(hwnd, GWL_EXSTYLE)
96
+ owner = GetWindow_2.call(hwnd, GW_OWNER)
97
+
98
+ # if the window is visible AND
99
+ # its NOT a tool window with no parent
100
+ #r,rs = GetClassName.call(hwnd, @buff, @buff.size)
101
+ #class_name = rs[1]
102
+ GetClassName_2.call(hwnd, @buff, @buff.size)
103
+ class_name = @buff.dup
104
+ if !(((ex_style & WS_EX_TOOLWINDOW) != 0) && (owner == NULL)) then
105
+ if ((style & WS_VISIBLE) != 0) || @get_not_visible_windows then
106
+ # ignore Kapsules main window
107
+ next if (/WindowsForms10/.match(class_name))
108
+
109
+ @windows[hwnd] = Window.create(hwnd, style, ex_style, class_name, owner, self)
110
+ $TRACE.debug 7, sprintf("%d, rs[1] = '%s', style = %8.8x, ex_style = %8.8x, owner = %d\n",
111
+ hwnd, class_name, style, ex_style, owner)
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ def get_all_windows(get_not_visible_windows=false,test=false)
118
+
119
+ #if !@enum_windows_proc then
120
+ #end
121
+ @buff = " " * 16
122
+ @windows = {}
123
+ @window_handles = []
124
+ @test = test
125
+ @get_not_visible_windows = get_not_visible_windows
126
+
127
+ r,rs = EnumWindows.call(@enum_windows_proc, 0)
128
+
129
+ process_window_handles(@window_handles, test) #if !test
130
+ return @windows
131
+ end
132
+
133
+ def get_top_window(windows)
134
+ get_all_windows.each_key do |hwnd|
135
+ top_window = hwnd
136
+ sub_windows = []
137
+ #puts "#{top_window}: "
138
+ while true
139
+ hwnd, rs = GetWindow.call(hwnd, GW_HWNDPREV)
140
+ break if hwnd == NULL
141
+ #puts " #{hwnd}"
142
+ sub_windows.push(hwnd) if windows.has_key?(hwnd)
143
+ end
144
+ #puts "#{top_window}: " + sub_windows.join(",")
145
+ return top_window if sub_windows == []
146
+ end
147
+ return 0
148
+ end
149
+
150
+ def hide_window(window_handle)
151
+ $TRACE.debug 5, "@hwnd_task_list = #{@hwnd_task_list}"
152
+ $TRACE.debug 5, "@shell_hook_message = #{@shell_hook_message}"
153
+ $TRACE.debug 5, "window_handle = #{window_handle}"
154
+
155
+ SendMessage.call(@hwnd_task_list, @shell_hook_message, 2, window_handle)
156
+ # ShowWindow.call(window_handle, SW_SHOWMINNOACTIVE)
157
+ ShowWindow.call(window_handle, SW_HIDE)
158
+ end
159
+
160
+ def show_window(window_handle, is_iconic)
161
+ SendMessage.call(@hwnd_task_list, @shell_hook_message, 1, window_handle)
162
+ if is_iconic then
163
+ ShowWindow.call(window_handle, SW_SHOWMINNOACTIVE)
164
+ else
165
+ ShowWindow.call(window_handle, SW_SHOWNOACTIVATE)
166
+ end
167
+ # ShowWindow.call(window_handle, SW_SHOW)
168
+ end
169
+
170
+ def iconic?(window_handle)
171
+ r, rs = IsIconic.call(window_handle)
172
+ r == TRUE
173
+ end
174
+ end
175
+
176
+ end # module Win32
177
+
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
metadata ADDED
@@ -0,0 +1,97 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.3
3
+ specification_version: 1
4
+ name: vrvirtualdesktop
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.0.1
7
+ date: 2006-04-24
8
+ summary: This module implements workspace manager for Windows (NT/2000/XP)
9
+ require_paths:
10
+ - lib
11
+ email:
12
+ homepage:
13
+ rubyforge_project:
14
+ description:
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: false
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ -
22
+ - ">"
23
+ - !ruby/object:Gem::Version
24
+ version: 0.0.0
25
+ version:
26
+ platform: ruby
27
+ authors: []
28
+ files:
29
+ - "./CHANGES"
30
+ - "./LICENSE"
31
+ - "./README"
32
+ - "./TODO"
33
+ - lib/VRVirtualDesktopForm.rb
34
+ - lib/Win32/APIMapper.rb
35
+ - lib/Win32/Base-consts.rb
36
+ - lib/Win32/Base.rb
37
+ - lib/Win32/Encoding.rb
38
+ - lib/Win32/GetSystemMetrics.rb
39
+ - lib/Win32/NetResources.rb
40
+ - lib/Win32/Process.rb
41
+ - lib/Win32/Registry.rb
42
+ - lib/Win32/User32.rb
43
+ - lib/Win32/VirtualDesktop.rb
44
+ - lib/Win32/WindowManager.rb
45
+ - bin/vrdesk.rbw
46
+ - lib/resources/desktops.ico
47
+ - lib/resources/five_down.ico
48
+ - lib/resources/five_up.ico
49
+ - lib/resources/four_down.ico
50
+ - lib/resources/four_up.ico
51
+ - lib/resources/obdb.ico
52
+ - lib/resources/one_down.ico
53
+ - lib/resources/one_up.ico
54
+ - lib/resources/six_down.ico
55
+ - lib/resources/six_up.ico
56
+ - lib/resources/three_down.ico
57
+ - lib/resources/three_up.ico
58
+ - lib/resources/two_down.ico
59
+ - lib/resources/two_up.ico
60
+ test_files: []
61
+ rdoc_options: []
62
+ extra_rdoc_files: []
63
+ executables:
64
+ - vrdesk.rbw
65
+ extensions: []
66
+ requirements: []
67
+ dependencies:
68
+ - !ruby/object:Gem::Dependency
69
+ name: usage
70
+ version_requirement:
71
+ version_requirements: !ruby/object:Gem::Version::Requirement
72
+ requirements:
73
+ -
74
+ - "<"
75
+ - !ruby/object:Gem::Version
76
+ version: 0.1.0
77
+ version:
78
+ - !ruby/object:Gem::Dependency
79
+ name: VRTools
80
+ version_requirement:
81
+ version_requirements: !ruby/object:Gem::Version::Requirement
82
+ requirements:
83
+ -
84
+ - "<"
85
+ - !ruby/object:Gem::Version
86
+ version: 0.1.0
87
+ version:
88
+ - !ruby/object:Gem::Dependency
89
+ name: SimpleTrace
90
+ version_requirement:
91
+ version_requirements: !ruby/object:Gem::Version::Requirement
92
+ requirements:
93
+ -
94
+ - "<"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.1.0
97
+ version: