cstruct 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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>