cstruct 1.0.0

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.
Files changed (47) hide show
  1. data/doc/documents.html +572 -0
  2. data/doc/examples/anonymous_struct.rb.html +94 -0
  3. data/doc/examples/anonymous_union.rb.html +93 -0
  4. data/doc/examples/array_member.rb.html +79 -0
  5. data/doc/examples/file_io.rb.html +87 -0
  6. data/doc/examples/first_example.rb.html +104 -0
  7. data/doc/examples/get_system_info.rb.html +114 -0
  8. data/doc/examples/get_versionex.rb.html +97 -0
  9. data/doc/examples/global_memory.rb.html +102 -0
  10. data/doc/examples/inner_struct.rb.html +79 -0
  11. data/doc/examples/inner_union.rb.html +77 -0
  12. data/doc/examples/namespace.rb.html +80 -0
  13. data/doc/examples/show_processes.rb.html +95 -0
  14. data/doc/examples/struct_member.rb.html +128 -0
  15. data/doc/examples.html +42 -0
  16. data/doc/images/Thumbs.db +0 -0
  17. data/doc/images/examples.png +0 -0
  18. data/doc/images/excample1.png +0 -0
  19. data/doc/images/excample2.png +0 -0
  20. data/doc/images/green-point.png +0 -0
  21. data/doc/images/learnmore.png +0 -0
  22. data/doc/images/logo.png +0 -0
  23. data/doc/images/news.png +0 -0
  24. data/doc/images/point.png +0 -0
  25. data/doc/images/start.png +0 -0
  26. data/doc/images/synopsish.png +0 -0
  27. data/doc/index.html +149 -0
  28. data/doc/stylesheets/coderay.css +34 -0
  29. data/doc/stylesheets/ie.css +9 -0
  30. data/doc/stylesheets/style.css +216 -0
  31. data/examples/anonymous_struct.rb +43 -0
  32. data/examples/anonymous_union.rb +42 -0
  33. data/examples/array_member.rb +29 -0
  34. data/examples/file_io.rb +49 -0
  35. data/examples/first_example.rb +53 -0
  36. data/examples/inner_struct.rb +28 -0
  37. data/examples/inner_union.rb +26 -0
  38. data/examples/namespace.rb +29 -0
  39. data/examples/struct_member.rb +77 -0
  40. data/examples/win32/get_system_info.rb +64 -0
  41. data/examples/win32/get_versionex.rb +47 -0
  42. data/examples/win32/global_memory.rb +51 -0
  43. data/examples/win32/show_processes.rb +45 -0
  44. data/lib/cstruct.rb +523 -0
  45. data/lib/win32struct.rb +90 -0
  46. data/lib/win64struct.rb +13 -0
  47. metadata +109 -0
@@ -0,0 +1,97 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head profile="http://gmpg.org/xfn/11" >
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
+ <title>CStruct:Examples:GetVersionExA</title>
6
+ <style type="text/css">
7
+
8
+ .CodeRay {
9
+ background-color: #232323;
10
+ border: 1px solid black;
11
+ font-family: 'Courier New', 'Terminal', monospace;
12
+ color: #E6E0DB;
13
+ padding: 3px 5px;
14
+ overflow: auto;
15
+ font-size: 12px;
16
+ margin: 12px 0;
17
+ }
18
+ .CodeRay pre {
19
+ margin: 0px;
20
+ padding: 0px;
21
+ }
22
+
23
+ .CodeRay .an { color:#E7BE69 }
24
+ .CodeRay .c { color:#BC9358; font-style: italic; }
25
+ .CodeRay .ch { color:#509E4F }
26
+ .CodeRay .cl { color:#FFF }
27
+ .CodeRay .co { color:#FFF }
28
+ .CodeRay .fl { color:#A4C260 }
29
+ .CodeRay .fu { color:#FFC56D }
30
+ .CodeRay .gv { color:#D0CFFE }
31
+ .CodeRay .i { color:#A4C260 }
32
+ .CodeRay .il { background:#151515 }
33
+ .CodeRay .iv { color:#D0CFFE }
34
+ .CodeRay .pp { color:#E7BE69 }
35
+ .CodeRay .r { color:#CB7832 }
36
+ .CodeRay .rx { color:#A4C260 }
37
+ .CodeRay .s { color:#A4C260 }
38
+ .CodeRay .sy { color:#6C9CBD }
39
+ .CodeRay .ta { color:#E7BE69 }
40
+ .CodeRay .pc { color:#6C9CBD }
41
+
42
+ </style>
43
+ </head>
44
+ <body>
45
+ <div style="margin-left:auto;margin-right:auto;width:800px;">
46
+ <div class="CodeRay">
47
+ <div class="code"><pre><span class="c"># CStruct Examples</span>
48
+ require <span class="s"><span class="dl">'</span><span class="k">windows/system_info</span><span class="dl">'</span></span>
49
+ require <span class="s"><span class="dl">'</span><span class="k">win32struct</span><span class="dl">'</span></span>
50
+ include <span class="co">Windows</span>::<span class="co">SystemInfo</span>
51
+
52
+
53
+ <span class="c"># OSVERSIONINFOEXA in VC6 's SDK</span>
54
+ <span class="c">#typedef struct _OSVERSIONINFOEXA {</span>
55
+ <span class="c"># DWORD dwOSVersionInfoSize;</span>
56
+ <span class="c"># DWORD dwMajorVersion;</span>
57
+ <span class="c"># DWORD dwMinorVersion;</span>
58
+ <span class="c"># DWORD dwBuildNumber;</span>
59
+ <span class="c"># DWORD dwPlatformId;</span>
60
+ <span class="c"># CHAR szCSDVersion[ 128 ]; // Maintenance string for PSS usage</span>
61
+ <span class="c"># WORD wServicePackMajor;</span>
62
+ <span class="c"># WORD wServicePackMinor;</span>
63
+ <span class="c"># WORD wReserved[2];</span>
64
+ <span class="c">#} OSVERSIONINFOEXA;</span>
65
+
66
+
67
+ <span class="r">class</span> <span class="cl">OSVERSIONINFOEXA</span> &lt; <span class="co">Win32Struct</span>
68
+ <span class="co">DWORD</span> <span class="sy">:dwOSVersionInfoSize</span>
69
+ <span class="co">DWORD</span> <span class="sy">:dwMajorVersion</span>
70
+ <span class="co">DWORD</span> <span class="sy">:dwMinorVersion</span>
71
+ <span class="co">DWORD</span> <span class="sy">:dwBuildNumber</span>
72
+ <span class="co">DWORD</span> <span class="sy">:dwPlatformId</span>
73
+ <span class="co">CHAR</span> <span class="sy">:szCSDVersion</span>,[ <span class="i">128</span> ]
74
+ <span class="co">WORD</span> <span class="sy">:wServicePackMajor</span>
75
+ <span class="co">WORD</span> <span class="sy">:wServicePackMinor</span>
76
+ <span class="co">WORD</span> <span class="sy">:wReserved</span>,[<span class="i">2</span>]
77
+ <span class="r">end</span>
78
+
79
+ ver_info_ex = <span class="co">OSVERSIONINFOEXA</span>.new <span class="r">do</span> |st|
80
+ st.dwOSVersionInfoSize = <span class="co">OSVERSIONINFOEXA</span>.__size__ <span class="c"># __size__ is an alias for method 'size'</span>
81
+ <span class="r">end</span>
82
+
83
+ <span class="c">#ANSI Version: GetVersionExA</span>
84
+ GetVersionExA(ver_info_ex.__data__) <span class="c"># __data__ is an alias for method 'data'</span>
85
+
86
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">&lt;OS Version Infomation&gt;</span><span class="dl">&quot;</span></span>
87
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">Major Version:</span><span class="il"><span class="idl">#{</span>ver_info_ex.dwMajorVersion<span class="idl">}</span></span><span class="dl">&quot;</span></span>
88
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">Minor Version:</span><span class="il"><span class="idl">#{</span>ver_info_ex.dwMinorVersion<span class="idl">}</span></span><span class="dl">&quot;</span></span>
89
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">Build Number:</span><span class="il"><span class="idl">#{</span>ver_info_ex.dwBuildNumber<span class="idl">}</span></span><span class="dl">&quot;</span></span>
90
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">Platform Id:</span><span class="il"><span class="idl">#{</span>ver_info_ex.dwPlatformId<span class="idl">}</span></span><span class="dl">&quot;</span></span>
91
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">CSD Version:</span><span class="il"><span class="idl">#{</span>ver_info_ex.szCSDVersion.to_cstr<span class="idl">}</span></span><span class="dl">&quot;</span></span> <span class="c"># to_cstr return a string(C Style)</span>
92
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">ServicePack Major:</span><span class="il"><span class="idl">#{</span>ver_info_ex.wServicePackMajor<span class="idl">}</span></span><span class="dl">&quot;</span></span>
93
+ puts <span class="s"><span class="dl">&quot;</span><span class="k">ServicePack Minor:</span><span class="il"><span class="idl">#{</span>ver_info_ex.wServicePackMinor<span class="idl">}</span></span><span class="dl">&quot;</span></span></pre></div>
94
+ </div>
95
+
96
+ </div>
97
+ </body>
@@ -0,0 +1,102 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head profile="http://gmpg.org/xfn/11" >
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
+ <title>CStruct:Examples:GlobalMemoryStatus</title>
6
+ <style type="text/css">
7
+
8
+ .CodeRay {
9
+ background-color: #232323;
10
+ border: 1px solid black;
11
+ font-family: 'Courier New', 'Terminal', monospace;
12
+ color: #E6E0DB;
13
+ padding: 3px 5px;
14
+ overflow: auto;
15
+ font-size: 12px;
16
+ margin: 12px 0;
17
+ }
18
+ .CodeRay pre {
19
+ margin: 0px;
20
+ padding: 0px;
21
+ }
22
+
23
+ .CodeRay .an { color:#E7BE69 }
24
+ .CodeRay .c { color:#BC9358; font-style: italic; }
25
+ .CodeRay .ch { color:#509E4F }
26
+ .CodeRay .cl { color:#FFF }
27
+ .CodeRay .co { color:#FFF }
28
+ .CodeRay .fl { color:#A4C260 }
29
+ .CodeRay .fu { color:#FFC56D }
30
+ .CodeRay .gv { color:#D0CFFE }
31
+ .CodeRay .i { color:#A4C260 }
32
+ .CodeRay .il { background:#151515 }
33
+ .CodeRay .iv { color:#D0CFFE }
34
+ .CodeRay .pp { color:#E7BE69 }
35
+ .CodeRay .r { color:#CB7832 }
36
+ .CodeRay .rx { color:#A4C260 }
37
+ .CodeRay .s { color:#A4C260 }
38
+ .CodeRay .sy { color:#6C9CBD }
39
+ .CodeRay .ta { color:#E7BE69 }
40
+ .CodeRay .pc { color:#6C9CBD }
41
+
42
+ </style>
43
+ </head>
44
+ <body>
45
+ <div style="margin-left:auto;margin-right:auto;width:800px;">
46
+ <div class="CodeRay">
47
+ <div class="code"><pre><span class="c"># CStruct Examples</span>
48
+ require <span class="s"><span class="dl">'</span><span class="k">windows/memory</span><span class="dl">'</span></span>
49
+ require <span class="s"><span class="dl">'</span><span class="k">win32struct</span><span class="dl">'</span></span>
50
+
51
+ include <span class="co">Windows</span>::<span class="co">Memory</span>
52
+
53
+ <span class="c"># example:</span>
54
+
55
+ <span class="c"># typedef struct _MEMORYSTATUS {</span>
56
+ <span class="c"># DWORD dwLength;</span>
57
+ <span class="c"># DWORD dwMemoryLoad;</span>
58
+ <span class="c"># DWORD dwTotalPhys;</span>
59
+ <span class="c"># DWORD dwAvailPhys;</span>
60
+ <span class="c"># DWORD dwTotalPageFile;</span>
61
+ <span class="c"># DWORD dwAvailPageFile;</span>
62
+ <span class="c"># DWORD dwTotalVirtual;</span>
63
+ <span class="c"># DWORD dwAvailVirtual;</span>
64
+ <span class="c"># } MEMORYSTATUS, *LPMEMORYSTATUS;</span>
65
+
66
+ <span class="r">class</span> <span class="cl">MEMORYSTATUS</span> &lt; <span class="co">Win32Struct</span>
67
+ <span class="co">DWORD</span> <span class="sy">:dwLength</span>
68
+ <span class="co">DWORD</span> <span class="sy">:dwMemoryLoad</span>
69
+ <span class="co">DWORD</span> <span class="sy">:dwTotalPhys</span>
70
+ <span class="co">DWORD</span> <span class="sy">:dwAvailPhys</span>
71
+ <span class="co">DWORD</span> <span class="sy">:dwTotalPageFile</span>
72
+ <span class="co">DWORD</span> <span class="sy">:dwAvailPageFile</span>
73
+ <span class="co">DWORD</span> <span class="sy">:dwTotalVirtual</span>
74
+ <span class="co">DWORD</span> <span class="sy">:dwAvailVirtual</span>
75
+ <span class="r">end</span>
76
+
77
+
78
+
79
+ <span class="c"># create a MEMORYSTATUS's instance</span>
80
+ stat = <span class="co">MEMORYSTATUS</span>.new {|st| st.dwLength = <span class="co">MEMORYSTATUS</span>.size }
81
+
82
+ <span class="c"># call API &quot;GlobalMemoryStatus&quot; - See also MSDN</span>
83
+ GlobalMemoryStatus(stat.data)
84
+
85
+ <span class="c">#output</span>
86
+ printf <span class="s"><span class="dl">&quot;</span><span class="k">[Physical Memory]</span><span class="ch">\n</span><span class="dl">&quot;</span></span>
87
+ printf <span class="s"><span class="dl">&quot;</span><span class="k"> total:%12d bytes</span><span class="ch">\n</span><span class="dl">&quot;</span></span>,stat.dwTotalPhys
88
+ printf <span class="s"><span class="dl">&quot;</span><span class="k"> free :%12d bytes</span><span class="ch">\n</span><span class="dl">&quot;</span></span>,stat.dwAvailPhys
89
+
90
+ printf <span class="s"><span class="dl">&quot;</span><span class="k">[Virtual Memory]</span><span class="ch">\n</span><span class="dl">&quot;</span></span>
91
+ printf <span class="s"><span class="dl">&quot;</span><span class="k"> total:%12d bytes</span><span class="ch">\n</span><span class="dl">&quot;</span></span>,stat.dwTotalVirtual
92
+ printf <span class="s"><span class="dl">&quot;</span><span class="k"> free :%12d bytes</span><span class="ch">\n</span><span class="dl">&quot;</span></span>,stat.dwAvailVirtual
93
+
94
+ printf <span class="s"><span class="dl">&quot;</span><span class="k">[Paging File]</span><span class="ch">\n</span><span class="dl">&quot;</span></span>
95
+ printf <span class="s"><span class="dl">&quot;</span><span class="k"> total:%12d bytes</span><span class="ch">\n</span><span class="dl">&quot;</span></span>,stat.dwTotalPageFile
96
+ printf <span class="s"><span class="dl">&quot;</span><span class="k"> free :%12d bytes</span><span class="ch">\n</span><span class="dl">&quot;</span></span>,stat.dwAvailPageFile
97
+
98
+ </pre></div>
99
+ </div>
100
+
101
+ </div>
102
+ </body>
@@ -0,0 +1,79 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head profile="http://gmpg.org/xfn/11" >
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
+ <title>CStruct:Examples:Inner struct</title>
6
+ <style type="text/css">
7
+
8
+ .CodeRay {
9
+ background-color: #232323;
10
+ border: 1px solid black;
11
+ font-family: 'Courier New', 'Terminal', monospace;
12
+ color: #E6E0DB;
13
+ padding: 3px 5px;
14
+ overflow: auto;
15
+ font-size: 12px;
16
+ margin: 12px 0;
17
+ }
18
+ .CodeRay pre {
19
+ margin: 0px;
20
+ padding: 0px;
21
+ }
22
+
23
+ .CodeRay .an { color:#E7BE69 }
24
+ .CodeRay .c { color:#BC9358; font-style: italic; }
25
+ .CodeRay .ch { color:#509E4F }
26
+ .CodeRay .cl { color:#FFF }
27
+ .CodeRay .co { color:#FFF }
28
+ .CodeRay .fl { color:#A4C260 }
29
+ .CodeRay .fu { color:#FFC56D }
30
+ .CodeRay .gv { color:#D0CFFE }
31
+ .CodeRay .i { color:#A4C260 }
32
+ .CodeRay .il { background:#151515 }
33
+ .CodeRay .iv { color:#D0CFFE }
34
+ .CodeRay .pp { color:#E7BE69 }
35
+ .CodeRay .r { color:#CB7832 }
36
+ .CodeRay .rx { color:#A4C260 }
37
+ .CodeRay .s { color:#A4C260 }
38
+ .CodeRay .sy { color:#6C9CBD }
39
+ .CodeRay .ta { color:#E7BE69 }
40
+ .CodeRay .pc { color:#6C9CBD }
41
+
42
+ </style>
43
+ </head>
44
+ <body>
45
+ <div style="margin-left:auto;margin-right:auto;width:800px;">
46
+ <div class="CodeRay">
47
+ <div class="code"><pre><span class="c"># CStruct Examples</span>
48
+ require <span class="s"><span class="dl">'</span><span class="k">cstruct</span><span class="dl">'</span></span>
49
+ <span class="c"># example:</span>
50
+ <span class="c"># struct A in C\C++ (32-bit platform): </span>
51
+ <span class="c"># struct A{</span>
52
+ <span class="c"># struct Inner</span>
53
+ <span class="c"># {</span>
54
+ <span class="c"># int v1; </span>
55
+ <span class="c"># int v2;</span>
56
+ <span class="c"># };</span>
57
+ <span class="c"># Inner inner;</span>
58
+ <span class="c"># };</span>
59
+
60
+ <span class="c"># struct A in Ruby:</span>
61
+ <span class="r">class</span> <span class="cl">A</span> &lt; <span class="co">CStruct</span>
62
+ <span class="r">class</span> <span class="cl">Inner</span> &lt; <span class="co">CStruct</span>
63
+ int32 <span class="sy">:v1</span>
64
+ int32 <span class="sy">:v2</span>
65
+ <span class="r">end</span>
66
+ <span class="co">Inner</span> <span class="sy">:inner</span>
67
+ <span class="r">end</span>
68
+
69
+ a = <span class="co">A</span>.new
70
+ a.inner.v1 = <span class="i">1</span>
71
+ a.inner.v2 = <span class="i">2</span>
72
+
73
+ puts a.inner.v1
74
+ puts a.inner.v2
75
+ </pre></div>
76
+ </div>
77
+
78
+ </div>
79
+ </body>
@@ -0,0 +1,77 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head profile="http://gmpg.org/xfn/11" >
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
+ <title>CStruct:Examples:Inner union</title>
6
+ <style type="text/css">
7
+
8
+ .CodeRay {
9
+ background-color: #232323;
10
+ border: 1px solid black;
11
+ font-family: 'Courier New', 'Terminal', monospace;
12
+ color: #E6E0DB;
13
+ padding: 3px 5px;
14
+ overflow: auto;
15
+ font-size: 12px;
16
+ margin: 12px 0;
17
+ }
18
+ .CodeRay pre {
19
+ margin: 0px;
20
+ padding: 0px;
21
+ }
22
+
23
+ .CodeRay .an { color:#E7BE69 }
24
+ .CodeRay .c { color:#BC9358; font-style: italic; }
25
+ .CodeRay .ch { color:#509E4F }
26
+ .CodeRay .cl { color:#FFF }
27
+ .CodeRay .co { color:#FFF }
28
+ .CodeRay .fl { color:#A4C260 }
29
+ .CodeRay .fu { color:#FFC56D }
30
+ .CodeRay .gv { color:#D0CFFE }
31
+ .CodeRay .i { color:#A4C260 }
32
+ .CodeRay .il { background:#151515 }
33
+ .CodeRay .iv { color:#D0CFFE }
34
+ .CodeRay .pp { color:#E7BE69 }
35
+ .CodeRay .r { color:#CB7832 }
36
+ .CodeRay .rx { color:#A4C260 }
37
+ .CodeRay .s { color:#A4C260 }
38
+ .CodeRay .sy { color:#6C9CBD }
39
+ .CodeRay .ta { color:#E7BE69 }
40
+ .CodeRay .pc { color:#6C9CBD }
41
+
42
+ </style>
43
+ </head>
44
+ <body>
45
+ <div style="margin-left:auto;margin-right:auto;width:800px;">
46
+ <div class="CodeRay">
47
+ <div class="code"><pre><span class="c"># CStruct Examples</span>
48
+ require <span class="s"><span class="dl">'</span><span class="k">cstruct</span><span class="dl">'</span></span>
49
+
50
+ <span class="c"># example:</span>
51
+ <span class="c"># struct U in C\C++ (32-bit platform): </span>
52
+ <span class="c"># </span>
53
+ <span class="c">#struct U</span>
54
+ <span class="c">#{</span>
55
+ <span class="c"># union NumericType</span>
56
+ <span class="c"># {</span>
57
+ <span class="c"># int32 v1;</span>
58
+ <span class="c"># int16 v2; </span>
59
+ <span class="c"># int16 v3; </span>
60
+ <span class="c"># };</span>
61
+ <span class="c"># NumericType value;</span>
62
+ <span class="c">#};</span>
63
+
64
+ <span class="c"># Named union is nonsupport in CStruct. Fortunately, anonymous union can take the place of it.</span>
65
+ <span class="c"># struct U in Ruby: </span>
66
+ <span class="r">class</span> <span class="cl">U</span> &lt; <span class="co">CStruct</span>
67
+ union<span class="sy">:value</span> <span class="r">do</span>
68
+ int32<span class="sy">:x</span>
69
+ int32<span class="sy">:y</span>
70
+ <span class="r">end</span>
71
+ <span class="r">end</span>
72
+
73
+ <span class="c"># See also: 'anonymous_union.rb' </span></pre></div>
74
+ </div>
75
+
76
+ </div>
77
+ </body>
@@ -0,0 +1,80 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head profile="http://gmpg.org/xfn/11" >
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
+ <title>CStruct:Examples:Namespace</title>
6
+ <style type="text/css">
7
+
8
+ .CodeRay {
9
+ background-color: #232323;
10
+ border: 1px solid black;
11
+ font-family: 'Courier New', 'Terminal', monospace;
12
+ color: #E6E0DB;
13
+ padding: 3px 5px;
14
+ overflow: auto;
15
+ font-size: 12px;
16
+ margin: 12px 0;
17
+ }
18
+ .CodeRay pre {
19
+ margin: 0px;
20
+ padding: 0px;
21
+ }
22
+
23
+ .CodeRay .an { color:#E7BE69 }
24
+ .CodeRay .c { color:#BC9358; font-style: italic; }
25
+ .CodeRay .ch { color:#509E4F }
26
+ .CodeRay .cl { color:#FFF }
27
+ .CodeRay .co { color:#FFF }
28
+ .CodeRay .fl { color:#A4C260 }
29
+ .CodeRay .fu { color:#FFC56D }
30
+ .CodeRay .gv { color:#D0CFFE }
31
+ .CodeRay .i { color:#A4C260 }
32
+ .CodeRay .il { background:#151515 }
33
+ .CodeRay .iv { color:#D0CFFE }
34
+ .CodeRay .pp { color:#E7BE69 }
35
+ .CodeRay .r { color:#CB7832 }
36
+ .CodeRay .rx { color:#A4C260 }
37
+ .CodeRay .s { color:#A4C260 }
38
+ .CodeRay .sy { color:#6C9CBD }
39
+ .CodeRay .ta { color:#E7BE69 }
40
+ .CodeRay .pc { color:#6C9CBD }
41
+
42
+ </style>
43
+ </head>
44
+ <body>
45
+ <div style="margin-left:auto;margin-right:auto;width:800px;">
46
+ <div class="CodeRay">
47
+ <div class="code"><pre><span class="c"># CStruct Examples</span>
48
+ require <span class="s"><span class="dl">'</span><span class="k">cstruct</span><span class="dl">'</span></span>
49
+
50
+ <span class="c"># example:</span>
51
+ <span class="r">module</span> <span class="cl">NS1</span> <span class="c">#namespace</span>
52
+ <span class="r">class</span> <span class="cl">A</span> &lt; <span class="co">CStruct</span>
53
+ uint32<span class="sy">:handle</span>
54
+ <span class="r">end</span>
55
+
56
+ <span class="r">module</span> <span class="cl">NS2</span>
57
+ <span class="r">class</span> <span class="cl">B</span> &lt; <span class="co">CStruct</span>
58
+ <span class="co">A</span><span class="sy">:a</span> <span class="c"># directly use A</span>
59
+ <span class="r">end</span>
60
+ <span class="r">end</span>
61
+
62
+ <span class="r">class</span> <span class="cl">C</span> &lt; <span class="co">CStruct</span>
63
+ <span class="co">A</span> <span class="sy">:a</span>
64
+ <span class="co">NS2_B</span> <span class="sy">:b</span> <span class="c"># Meaning of the 'NS2_B' is NS2::B</span>
65
+ <span class="r">end</span>
66
+ <span class="r">end</span>
67
+
68
+ <span class="r">class</span> <span class="cl">D</span> &lt; <span class="co">CStruct</span>
69
+ <span class="co">NS1_NS2_B</span><span class="sy">:b</span> <span class="c"># Meaning of the 'NS1_NS2_B' is NS1::NS2::B</span>
70
+ <span class="r">end</span>
71
+
72
+ v = <span class="co">D</span>.new
73
+ v.b.a.handle = <span class="i">120</span>
74
+ p <span class="co">D</span>.__size__
75
+ p v.b.a.handle
76
+ </pre></div>
77
+ </div>
78
+
79
+ </div>
80
+ </body>
@@ -0,0 +1,95 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head profile="http://gmpg.org/xfn/11" >
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
+ <title>CStruct:Examples:Show All Processes</title>
6
+ <style type="text/css">
7
+
8
+ .CodeRay {
9
+ background-color: #232323;
10
+ border: 1px solid black;
11
+ font-family: 'Courier New', 'Terminal', monospace;
12
+ color: #E6E0DB;
13
+ padding: 3px 5px;
14
+ overflow: auto;
15
+ font-size: 12px;
16
+ margin: 12px 0;
17
+ }
18
+ .CodeRay pre {
19
+ margin: 0px;
20
+ padding: 0px;
21
+ }
22
+
23
+ .CodeRay .an { color:#E7BE69 }
24
+ .CodeRay .c { color:#BC9358; font-style: italic; }
25
+ .CodeRay .ch { color:#509E4F }
26
+ .CodeRay .cl { color:#FFF }
27
+ .CodeRay .co { color:#FFF }
28
+ .CodeRay .fl { color:#A4C260 }
29
+ .CodeRay .fu { color:#FFC56D }
30
+ .CodeRay .gv { color:#D0CFFE }
31
+ .CodeRay .i { color:#A4C260 }
32
+ .CodeRay .il { background:#151515 }
33
+ .CodeRay .iv { color:#D0CFFE }
34
+ .CodeRay .pp { color:#E7BE69 }
35
+ .CodeRay .r { color:#CB7832 }
36
+ .CodeRay .rx { color:#A4C260 }
37
+ .CodeRay .s { color:#A4C260 }
38
+ .CodeRay .sy { color:#6C9CBD }
39
+ .CodeRay .ta { color:#E7BE69 }
40
+ .CodeRay .pc { color:#6C9CBD }
41
+
42
+ </style>
43
+ </head>
44
+ <body>
45
+ <div style="margin-left:auto;margin-right:auto;width:800px;">
46
+ <div class="CodeRay">
47
+ <div class="code"><pre><span class="c"># CStruct Examples</span>
48
+ require <span class="s"><span class="dl">'</span><span class="k">windows/tool_helper</span><span class="dl">'</span></span>
49
+ require <span class="s"><span class="dl">'</span><span class="k">win32struct</span><span class="dl">'</span></span>
50
+ include <span class="co">Windows</span>::<span class="co">ToolHelper</span>
51
+
52
+ <span class="r">module</span> <span class="cl">Windows</span>
53
+ <span class="co">MAX_PATH</span> = <span class="i">260</span>
54
+ <span class="r">module</span> <span class="cl">ToolHelper</span>
55
+ <span class="r">class</span> <span class="cl">PROCESSENTRY32</span> &lt; <span class="co">Win32Struct</span>
56
+ <span class="co">DWORD</span> <span class="sy">:dwSize</span>
57
+ <span class="co">DWORD</span> <span class="sy">:cntUsage</span>
58
+ <span class="co">DWORD</span> <span class="sy">:th32ProcessID</span>
59
+ <span class="co">DWORD</span> <span class="sy">:th32DefaultHeapID</span>
60
+ <span class="co">DWORD</span> <span class="sy">:th32ModuleID</span>
61
+ <span class="co">DWORD</span> <span class="sy">:cntThreads</span>
62
+ <span class="co">DWORD</span> <span class="sy">:th32ParentProcessID</span>
63
+ <span class="co">LONG</span> <span class="sy">:pcPriClassBase</span>
64
+ <span class="co">DWORD</span> <span class="sy">:dwFlags</span>
65
+ <span class="co">CHAR</span> <span class="sy">:szExeFile</span>,[<span class="co">MAX_PATH</span>]
66
+ <span class="r">end</span>
67
+ <span class="r">end</span>
68
+ <span class="r">end</span>
69
+
70
+ <span class="r">def</span> <span class="fu">show_all_processes</span>
71
+ proc_enrty32 = <span class="co">PROCESSENTRY32</span>.new
72
+ proc_enrty32.dwSize = <span class="co">PROCESSENTRY32</span>.__size__
73
+ snap_handle = CreateToolhelp32Snapshot( <span class="co">TH32CS_SNAPPROCESS</span>,<span class="i">0</span>)
74
+
75
+ <span class="r">if</span> Process32First(snap_handle,proc_enrty32.data)
76
+ show_process proc_enrty32
77
+ <span class="r">while</span> <span class="pc">true</span>
78
+ <span class="r">break</span> <span class="r">if</span> !Process32Next( snap_handle,proc_enrty32.data )
79
+ show_process proc_enrty32
80
+ <span class="r">end</span>
81
+ <span class="r">end</span>
82
+
83
+ <span class="r">end</span>
84
+
85
+ <span class="r">def</span> <span class="fu">show_process</span> proc_enrty32
86
+ printf<span class="s"><span class="dl">&quot;</span><span class="k">%20s 0x%08X</span><span class="ch">\n</span><span class="dl">&quot;</span></span>,proc_enrty32.szExeFile.to_cstr,proc_enrty32.th32ProcessID
87
+ <span class="r">end</span>
88
+
89
+ printf<span class="s"><span class="dl">&quot;</span><span class="k">%20s %s</span><span class="ch">\n</span><span class="dl">&quot;</span></span>,<span class="s"><span class="dl">&quot;</span><span class="k">&lt;Process Name&gt;</span><span class="dl">&quot;</span></span>,<span class="s"><span class="dl">&quot;</span><span class="k">&lt;PID&gt;</span><span class="dl">&quot;</span></span>
90
+ printf<span class="s"><span class="dl">&quot;</span><span class="k">%20s %s</span><span class="ch">\n</span><span class="dl">&quot;</span></span>,<span class="s"><span class="dl">&quot;</span><span class="k">--------------</span><span class="dl">&quot;</span></span>,<span class="s"><span class="dl">&quot;</span><span class="k">-----</span><span class="dl">&quot;</span></span>
91
+ show_all_processes</pre></div>
92
+ </div>
93
+
94
+ </div>
95
+ </body>