rb-scpt 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +497 -0
  3. data/doc/aem-manual/01_introduction.html +60 -0
  4. data/doc/aem-manual/02_apioverview.html +107 -0
  5. data/doc/aem-manual/03_packingandunpackingdata.html +135 -0
  6. data/doc/aem-manual/04_references.html +409 -0
  7. data/doc/aem-manual/05_targetingapplications.html +164 -0
  8. data/doc/aem-manual/06_buildingandsendingevents.html +229 -0
  9. data/doc/aem-manual/07_findapp.html +63 -0
  10. data/doc/aem-manual/08_examples.html +94 -0
  11. data/doc/aem-manual/aemreferenceinheritance.gif +0 -0
  12. data/doc/aem-manual/index.html +56 -0
  13. data/doc/appscript-manual/01_introduction.html +94 -0
  14. data/doc/appscript-manual/02_aboutappscripting.html +247 -0
  15. data/doc/appscript-manual/03_quicktutorial.html +167 -0
  16. data/doc/appscript-manual/04_gettinghelp.html +188 -0
  17. data/doc/appscript-manual/05_keywordconversion.html +106 -0
  18. data/doc/appscript-manual/06_classesandenums.html +192 -0
  19. data/doc/appscript-manual/07_applicationobjects.html +211 -0
  20. data/doc/appscript-manual/08_realvsgenericreferences.html +96 -0
  21. data/doc/appscript-manual/09_referenceforms.html +241 -0
  22. data/doc/appscript-manual/10_referenceexamples.html +154 -0
  23. data/doc/appscript-manual/11_applicationcommands.html +245 -0
  24. data/doc/appscript-manual/12_commandexamples.html +138 -0
  25. data/doc/appscript-manual/13_performanceissues.html +142 -0
  26. data/doc/appscript-manual/14_notes.html +80 -0
  27. data/doc/appscript-manual/application_architecture.gif +0 -0
  28. data/doc/appscript-manual/application_architecture2.gif +0 -0
  29. data/doc/appscript-manual/finder_to_textedit_event.gif +0 -0
  30. data/doc/appscript-manual/index.html +62 -0
  31. data/doc/appscript-manual/relationships_example.gif +0 -0
  32. data/doc/appscript-manual/ruby_to_itunes_event.gif +0 -0
  33. data/doc/full.css +106 -0
  34. data/doc/index.html +45 -0
  35. data/doc/mactypes-manual/01_introduction.html +54 -0
  36. data/doc/mactypes-manual/02_aliasclass.html +124 -0
  37. data/doc/mactypes-manual/03_fileurlclass.html +126 -0
  38. data/doc/mactypes-manual/04_unitsclass.html +100 -0
  39. data/doc/mactypes-manual/index.html +53 -0
  40. data/doc/osax-manual/01_introduction.html +67 -0
  41. data/doc/osax-manual/02_interface.html +147 -0
  42. data/doc/osax-manual/03_examples.html +73 -0
  43. data/doc/osax-manual/04_notes.html +61 -0
  44. data/doc/osax-manual/index.html +53 -0
  45. data/doc/rb-appscript-logo.png +0 -0
  46. data/extconf.rb +65 -0
  47. data/rb-scpt.gemspec +14 -0
  48. data/sample/AB_export_vcard.rb +31 -0
  49. data/sample/AB_list_people_with_emails.rb +13 -0
  50. data/sample/Add_iCal_event.rb +21 -0
  51. data/sample/Create_daily_iCal_todos.rb +75 -0
  52. data/sample/Export_Address_Book_phone_numbers.rb +59 -0
  53. data/sample/Hello_world.rb +21 -0
  54. data/sample/List_iTunes_playlist_names.rb +11 -0
  55. data/sample/Make_Mail_message.rb +33 -0
  56. data/sample/Open_file_in_TextEdit.rb +13 -0
  57. data/sample/Organize_Mail_messages.rb +61 -0
  58. data/sample/Print_folder_tree.rb +16 -0
  59. data/sample/Select_all_HTML_files.rb +14 -0
  60. data/sample/Set_iChat_status.rb +24 -0
  61. data/sample/Simple_Finder_GUI_Scripting.rb +18 -0
  62. data/sample/Stagger_Finder_windows.rb +25 -0
  63. data/sample/TextEdit_demo.rb +130 -0
  64. data/sample/iTunes_top40_to_html.rb +71 -0
  65. data/src/SendThreadSafe.c +380 -0
  66. data/src/SendThreadSafe.h +139 -0
  67. data/src/lib/_aem/aemreference.rb +1022 -0
  68. data/src/lib/_aem/codecs.rb +662 -0
  69. data/src/lib/_aem/connect.rb +205 -0
  70. data/src/lib/_aem/encodingsupport.rb +77 -0
  71. data/src/lib/_aem/findapp.rb +85 -0
  72. data/src/lib/_aem/mactypes.rb +251 -0
  73. data/src/lib/_aem/send.rb +279 -0
  74. data/src/lib/_aem/typewrappers.rb +59 -0
  75. data/src/lib/_appscript/defaultterminology.rb +277 -0
  76. data/src/lib/_appscript/referencerenderer.rb +245 -0
  77. data/src/lib/_appscript/reservedkeywords.rb +116 -0
  78. data/src/lib/_appscript/safeobject.rb +249 -0
  79. data/src/lib/_appscript/terminology.rb +471 -0
  80. data/src/lib/aem.rb +253 -0
  81. data/src/lib/appscript.rb +1075 -0
  82. data/src/lib/kae.rb +1489 -0
  83. data/src/lib/osax.rb +659 -0
  84. data/src/rbae.c +979 -0
  85. data/test/README +3 -0
  86. data/test/test_aemreference.rb +118 -0
  87. data/test/test_appscriptcommands.rb +152 -0
  88. data/test/test_appscriptreference.rb +106 -0
  89. data/test/test_codecs.rb +186 -0
  90. data/test/test_findapp.rb +26 -0
  91. data/test/test_mactypes.rb +79 -0
  92. data/test/test_osax.rb +54 -0
  93. data/test/testall.sh +10 -0
  94. metadata +145 -0
@@ -0,0 +1,164 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+
5
+ <title>rb-aem manual | 5. Targeting Applications</title>
6
+
7
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
8
+ <style type="text/css" media="all"><!--@import url(../full.css);--></style>
9
+
10
+ </head>
11
+ <body>
12
+
13
+ <h1><img src="../rb-appscript-logo.png" alt="rb-appscript" title="rb-appscript" /></h1>
14
+
15
+ <!-- top navigation -->
16
+ <div class="navbar">
17
+ <a href="04_references.html">Previous</a> &bull;
18
+ <a href="index.html">Up</a> &bull;
19
+ <a href="06_buildingandsendingevents.html">Next</a>
20
+
21
+ <span>
22
+ <a href="../appscript-manual/index.html">appscript</a> /
23
+ <a href="../mactypes-manual/index.html">mactypes</a> /
24
+ <a href="../osax-manual/index.html">osax</a> /
25
+ <strong><a href="../aem-manual/index.html">aem</a></strong>
26
+ </span>
27
+ </div>
28
+
29
+ <!-- content -->
30
+ <div id="content">
31
+
32
+ <h2>5. Targeting Applications</h2>
33
+
34
+ <h3>The <code>Application</code> class</h3>
35
+
36
+ <p>The <code>Application</code> class represents an application to which Apple events will be sent. Its constructor allows applications to be identified in one of four ways: by full path, by eppc URL, by custom <code>AEAddressDesc</code>, or the host application if no other value is given. Its main method, <code>#event</code>, is used to construct the Apple events to send. Several utility methods are also provided.</p>
37
+
38
+ <pre><code>Application -- the target application
39
+
40
+ Class methods:
41
+
42
+ process_exists_for_path?(path) -- Does a local process launched
43
+ from the specified application file exist?
44
+ path : string -- application's path, e.g. '/Applications/iCal.app'
45
+ Result : boolean -- Note: if path is invalid, an AE::MacOSError
46
+ is raised.
47
+
48
+ process_exists_for_pid?(pid) -- Is there a local application process
49
+ with the given Unix process id?
50
+ pid : integer
51
+ Result : boolean
52
+
53
+ process_exists_for_url?(url) -- Does an application process specified
54
+ by the given eppc:// URL exist?
55
+ url : string -- url for remote process
56
+ (e.g. 'eppc://user:pass@0.0.0.1/TextEdit')
57
+ Result : boolean -- Returns false if process doesn't exist, or if
58
+ access isn't allowed.
59
+
60
+ process_exists_for_desc?(desc) -- Does an application process specified
61
+ by the given AEAddressDesc exist?
62
+ desc : AE::AEDesc -- AEAddressDesc for application
63
+ Result : boolean -- Returns false if process doesn't exist, or if
64
+ access isn't allowed.
65
+
66
+ launch(path) -- launch an application in background if not
67
+ already running, and send it a 'ascrnoop' event
68
+ path : string -- application's path, e.g. '/Applications/iCal.app'
69
+
70
+ Constructors:
71
+
72
+ by_path(path)
73
+ path : string -- full path to local application
74
+ (e.g. '/Applications/TextEdit.app')
75
+
76
+ by_pid(pid)
77
+ pid : integer -- Unix process id
78
+
79
+ by_url(url)
80
+ url : string -- url for remote process
81
+ (e.g. 'eppc://user:pass@0.0.0.1/TextEdit')
82
+
83
+ by_desc(desc)
84
+ desc : AEDesc -- AEAddressDesc for application
85
+
86
+ current -- the host process
87
+
88
+ Methods:
89
+
90
+ event(...) -- construct an Apple event (see next chapter for details)
91
+
92
+ begin_transaction(session=nil) -- begin a new transaction;
93
+ all Events constructed after begin_transaction is
94
+ called will belong to the same transaction until
95
+ end_transaction or abort_transaction is called
96
+ session : anything -- optional value identifying the
97
+ specific session (where supported)
98
+
99
+ end_transaction -- end the current transaction
100
+
101
+ abort_transaction -- abort the current transaction
102
+
103
+ reconnect -- Make sure this Application object has a valid
104
+ AEAddressDesc for the target application, relaunching
105
+ the target application if it's not currently running.
106
+ (Note: this only works for Application objects created
107
+ via the by_path constructor.)</code></pre>
108
+
109
+
110
+ <h3>Creating <code>Application</code> objects</h3>
111
+
112
+ <p>When targeting a local application by path, the full path to the application (or application bundle) must be given, including a <code>.app</code> suffix if present. Note that aem identifies local applications by process serial number for reliability. If the target application is not already running when a new <code>Application</code> instance is created, it will be started automatically so that a PSN can be acquired. If the application can't be launched for some reason (e.g. if it's in the Trash), an <code>AEM::CantLaunchApplicationError</code> error will be raised.</p>
113
+
114
+ <p>If the <code>by_url</code> constructor is used, its <code>url</code> argument should be an eppc URL string. Aem will pack this as an <code>AEDesc</code> of <code>typeApplicationURL</code>. The target machine must have Remote Apple Events enabled in its Sharing preferences.</p>
115
+
116
+ <p>Clients can also supply their own <code>AEAddressDesc</code> if they prefer. This should be an <code>AE::AEDesc</code> of one of the following types:</p>
117
+
118
+ <pre><code>KAE::TypeApplicationBundleID
119
+ KAE::TypeApplicationURL
120
+ KAE::TypeApplSignature
121
+ KAE::TypeKernelProcessID
122
+ KAE::TypeMachPort
123
+ KAE::TypeProcessSerialNumber</code></pre>
124
+
125
+ <p>See the Apple Event Manager documentation for more information on these addressing modes.</p>
126
+
127
+
128
+ <h3>Launching applications</h3>
129
+
130
+ <p><code>Application.launch</code> is a class method attached to the <code>Application</code> class for convenience. It allows a non-running application to be launched without sending it the 'run' event (<code>aevtoapp</code>) normally sent to applications - a 'no-op' event (<code>ascrnoop</code>) is sent instead. It should be called before creating an <code>Application</code> object for the target application, otherwise the application will be launched as normal.</p>
131
+
132
+
133
+ <h3>Transactions</h3>
134
+
135
+ <p>The <code>#begin_transaction</code> and <code>#end_transaction</code> methods are used to start and stop transaction sessions for applications that support this. All events <em>created</em> while a transaction session is active will be identified as part of that transaction.</p>
136
+
137
+ <p>Note that during a transaction, sending the application an event not created during that transaction will cause an error. Similarly, sending the application an event created during a transaction after that transaction has ended will cause an error.</p>
138
+
139
+ <p>The <code>#end_transaction</code> method must be called to close both successful and failed transactions on completion. If a transaction session is accidentally left open, aem will attempt to close it when the <code>Application</code> object is garbage-collected, although this cannot be guaranteed to succeed.</p>
140
+
141
+
142
+ <h3>Reconnecting to local applications</h3>
143
+
144
+ <p>Because local applications are identified by process serial number, an existing <code>Application</code> object created using the <code>by_path</code> constructor will no longer hold a valid <code>AEAddressDesc</code> if the target application subsequently quits. Sending events to an invalid address will cause a <code>EventError</code> -600 ("application isn't running") or -609 ("connection is invalid") to be raised.</p>
145
+
146
+ <p>The <code>process_exists_for_path?</code> class method can be used to check if a local application is running or not, given its full path.</p>
147
+
148
+ <p>Calling the <code>#reconnect</code> method will create a new <code>AEAddressDesc</code> for an existing <code>Application</code> object that was originally created via the <code>by_path</code> constructor. If the application is not running at the time, it will be started automatically.</p>
149
+
150
+ <p>Note that only <code>Event</code> instances created after <code>#reconnect</code> is called will receive the new <code>AEAddressDesc</code>. Any <code>Event</code> instances created before <code>reconnect</code> is called will still contain the old <code>AEAddressDesc</code>.</p>
151
+
152
+
153
+ </div>
154
+
155
+ <!-- bottom navigation -->
156
+
157
+ <div class="footer">
158
+ <a href="04_references.html">Previous</a> &bull;
159
+ <a href="index.html">Up</a> &bull;
160
+ <a href="06_buildingandsendingevents.html">Next</a>
161
+ </div>
162
+
163
+ </body>
164
+ </html>
@@ -0,0 +1,229 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+
5
+ <title>rb-aem manual | 6. Building and sending events</title>
6
+
7
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
8
+ <style type="text/css" media="all"><!--@import url(../full.css);--></style>
9
+
10
+ </head>
11
+ <body>
12
+
13
+ <h1><img src="../rb-appscript-logo.png" alt="rb-appscript" title="rb-appscript" /></h1>
14
+
15
+ <!-- top navigation -->
16
+ <div class="navbar">
17
+ <a href="05_targetingapplications.html">Previous</a> &bull;
18
+ <a href="index.html">Up</a> &bull;
19
+ <a href="07_findapp.html">Next</a>
20
+
21
+ <span>
22
+ <a href="../appscript-manual/index.html">appscript</a> /
23
+ <a href="../mactypes-manual/index.html">mactypes</a> /
24
+ <a href="../osax-manual/index.html">osax</a> /
25
+ <strong><a href="../aem-manual/index.html">aem</a></strong>
26
+ </span>
27
+ </div>
28
+
29
+ <!-- content -->
30
+ <div id="content">
31
+
32
+ <h2>6. Building and sending events</h2>
33
+
34
+
35
+ <h3>The <code>Application#event</code> method</h3>
36
+
37
+ <p>The <code>Application#event</code> method is used to create new Apple events targetted at the specified application.</p>
38
+
39
+ <pre><code>Application -- the target application
40
+ ...
41
+
42
+ event(event_code, params={}, atts={}, return_id=KAE::KAutoGenerateReturnID,
43
+ codecs=DefaultCodecs) -- construct an Apple event
44
+ event_code : string -- 8-letter code indicating event's class and id,
45
+ e.g. 'coregetd'
46
+ params : hash -- a hash of form {AE_code=&gt;anything,...} containing
47
+ zero or more event parameters
48
+ atts : hash -- a hash of form {AE_code=&gt;anything,...} containing
49
+ zero or more event attributes
50
+ return_id : integer -- reply event's ID
51
+ codecs : Codecs -- codecs object to use when packing/unpacking
52
+ attributes and parameters for this event and its reply
53
+ Result : Event -- a ready-to-send Apple event</code></pre>
54
+
55
+
56
+
57
+ <h3>The <code>Event</code> class</h3>
58
+
59
+ <p>The <code>Event</code> class represents an Apple event that has been packed and is ready to send.</p>
60
+
61
+ <pre><code>Event
62
+
63
+ Methods:
64
+
65
+ send(timeout=KAE::KDefaultTimeout, flags=KAE::KAEWaitReply) -- send event
66
+ timeout : integer | KAE::KDefaultTimeout | KAE::KNoTimeOut -- number of
67
+ ticks to wait for application reply before raising timeout error
68
+ flags : integer -- bitwise flags determining how event should be
69
+ handled
70
+ Result : anything -- value returned by application, if any</code></pre>
71
+
72
+
73
+ <p>The <code>send</code> method may be called any number of times.</p>
74
+
75
+
76
+ <h3>Constants</h3>
77
+
78
+ <p>The following constants are defined in the <code>KAE</code> module.</p>
79
+
80
+ <h4>Common parameter keys</h4>
81
+
82
+ <pre><code>KAE::KeyDirectObject
83
+ KAE::KeyAERequestedType</code></pre>
84
+
85
+ <p>(The value for a <code>keyAERequestedType</code> parameter should be an <code>AEType</code> instance.)</p>
86
+
87
+ <p>Other parameter keys are defined by individual applications.</p>
88
+
89
+
90
+ <h4>Attribute keys</h4>
91
+
92
+ <p>Most of the following attributes are already supplied by other means (e.g. keyEventClassAttr, keyEventIDAttr are supplied separately when creating an Apple event; keyTimeoutAttr when sending it) and are only of interest if unpacking AppleEvent descriptors manually. A few may be used when passing an attributes dict to <code>Application#event</code> (<code>EnumConsiderations</code>, <code>EnumConsidsAndIgnores</code>, <code>KeySubjectAttr</code>):</p>
93
+
94
+ <pre><code>KAE::KeyTransactionIDAttr
95
+ KAE::KeyReturnIDAttr
96
+ KAE::KeyEventClassAttr
97
+ KAE::KeyEventIDAttr
98
+ KAE::KeyAddressAttr
99
+ KAE::KeyOptionalKeywordAttr
100
+ KAE::KeyTimeoutAttr
101
+ KAE::KeyInteractLevelAttr
102
+ KAE::KeyEventSourceAttr
103
+ KAE::KeyOriginalAddressAttr
104
+ KAE::KeyAcceptTimeoutAttr
105
+ KAE::EnumConsiderations
106
+ KAE::EnumConsidsAndIgnores
107
+ KAE::KeySubjectAttr</code></pre>
108
+
109
+
110
+ <p>The value of the <code>EnumConsiderations</code> attribute should be a list containing zero or more <code>AEEnum</code> instances with the following codes:</p>
111
+
112
+ <pre><code>KAE::KAECase
113
+ KAE::KAEDiacritic
114
+ KAE::KAEWhiteSpace
115
+ KAE::KAEHyphens
116
+ KAE::KAEExpansion
117
+ KAE::KAEPunctuation
118
+ KAE::KASConsiderReplies
119
+ KAE::KASNumericStrings</code></pre>
120
+
121
+ <p>See the <a href="http://developer.apple.com/documentation/Carbon/Reference/Apple_Event_Manager/index.html">Apple Event Manager</a> API reference for more info. Note that the <code>EnumConsiderations</code> attribute is deprecated in favour of the <code>EnumConsidsAndIgnores</code> attribute.</p>
122
+
123
+
124
+ <p>The value of the <code>EnumConsidsAndIgnores</code> attribute should be an integer composed from the sum of zero or more of the following bit masks:</p>
125
+
126
+ <pre><code>KAE::KAECaseConsiderMask
127
+ KAE::KAEDiacriticConsiderMask
128
+ KAE::KAEWhiteSpaceConsiderMask
129
+ KAE::KAEHyphensConsiderMask
130
+ KAE::KAEExpansionConsiderMask
131
+ KAE::KAEPunctuationConsiderMask
132
+ KAE::KASConsiderRepliesConsiderMask
133
+ KAE::KASNumericStringsConsiderMask
134
+
135
+ KAE::KAECaseIgnoreMask
136
+ KAE::KAEDiacriticIgnoreMask
137
+ KAE::KAEWhiteSpaceIgnoreMask
138
+ KAE::KAEHyphensIgnoreMask
139
+ KAE::KAEExpansionIgnoreMask
140
+ KAE::KAEPunctuationIgnoreMask
141
+ KAE::KASConsiderRepliesIgnoreMask
142
+ KAE::KASNumericStringsIgnoreMask</code></pre>
143
+
144
+
145
+ <h4>Send flag constants</h4>
146
+
147
+ <p>The value of the <code>send</code> method's <code>flags</code> argument should be an integer composed from the sum of zero or more of the following bit masks:</p>
148
+
149
+ <pre><code>KAE::KAENoReply
150
+ KAE::KAEQueueReply
151
+ KAE::KAEWaitReply
152
+
153
+ KAE::KAEDontReconnect
154
+
155
+ KAE::KAEWantReceipt
156
+
157
+ KAE::KAENeverInteract
158
+ KAE::KAECanInteract
159
+ KAE::KAEAlwaysInteract
160
+
161
+ KAE::KAECanSwitchLayer</code></pre>
162
+
163
+ <p>See the <a href="http://developer.apple.com/documentation/Carbon/Reference/Apple_Event_Manager/apple_event_manager_ref/chapter_1.4_section_6.html">Apple Event Manager</a> API reference for details.</p>
164
+
165
+
166
+ <h4>Other constants</h4>
167
+
168
+ <pre><code>KAE::KAutoGenerateReturnID</code></pre>
169
+
170
+
171
+ <h3>Exception classes</h3>
172
+
173
+ <h4>The <code>EventError</code> class</h4>
174
+
175
+ <p>The <code>EventError</code> class is raised by <code>Event#send</code> and represents an error raised by the target application or Apple Event Manager when sending an event.</p>
176
+
177
+ <pre><code>EventError &lt; RuntimeError
178
+
179
+ Methods:
180
+
181
+ number
182
+ Result: integer -- Mac OS error number
183
+
184
+ message
185
+ Result: string | nil -- application-supplied/generic
186
+ error description
187
+
188
+ offending_object
189
+ Result: anything | nil -- object that caused the error,
190
+ if given by application
191
+
192
+ expected_type
193
+ Result: anything | nil -- object that caused a coercion
194
+ error, if given by application
195
+
196
+ partial_result
197
+ Result: anything | nil -- part of return value constructed
198
+ before error occurred, if given by application
199
+
200
+ to_i -- Mac OS error number
201
+
202
+ to_s -- formatted description of error</code></pre>
203
+
204
+
205
+ <h4><code>AE::MacOSError</code></h4>
206
+
207
+ <p>The <code>AE::MacOSError</code> exception is raised by the low-level <code>AE</code> extension and represents an error raised by the Apple Event Manager. The <code>AEM</code> API usually traps these low-level errors and throws more descriptive errors in their place (e.g. <code>AEM::EventError</code>).</p>
208
+
209
+ <pre><code>MacOSError &lt; StandardError
210
+
211
+ Methods:
212
+ number
213
+ Result: integer -- the Mac OS error number
214
+
215
+ description
216
+ Result: string -- short generic error description</code></pre>
217
+
218
+ </div>
219
+
220
+ <!-- bottom navigation -->
221
+
222
+ <div class="footer">
223
+ <a href="05_targetingapplications.html">Previous</a> &bull;
224
+ <a href="index.html">Up</a> &bull;
225
+ <a href="07_findapp.html">Next</a>
226
+ </div>
227
+
228
+ </body>
229
+ </html>
@@ -0,0 +1,63 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+
5
+ <title>rb-aem manual | 7. Locating applications</title>
6
+
7
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
8
+ <style type="text/css" media="all"><!--@import url(../full.css);--></style>
9
+
10
+ </head>
11
+ <body>
12
+
13
+ <h1><img src="../rb-appscript-logo.png" alt="rb-appscript" title="rb-appscript" /></h1>
14
+
15
+ <!-- top navigation -->
16
+ <div class="navbar">
17
+ <a href="06_buildingandsendingevents.html">Previous</a> &bull;
18
+ <a href="index.html">Up</a> &bull;
19
+ <a href="08_examples.html">Next</a>
20
+
21
+ <span>
22
+ <a href="../appscript-manual/index.html">appscript</a> /
23
+ <a href="../mactypes-manual/index.html">mactypes</a> /
24
+ <a href="../osax-manual/index.html">osax</a> /
25
+ <strong><a href="../aem-manual/index.html">aem</a></strong>
26
+ </span>
27
+ </div>
28
+
29
+ <!-- content -->
30
+ <div id="content">
31
+
32
+ <h2>7. Locating applications</h2>
33
+
34
+ <h3>The <code>FindApp</code> module</h3>
35
+
36
+ <p>The <code>FindApp</code> module is used to obtain the full path to an application given its file name, bundle ID, or creator code. It exports the following methods:</p>
37
+
38
+ <pre><code>by_name(name) -- Find the application with the given name.
39
+ name : string -- application's name, e.g. 'Finder.app'. The '.app' suffix
40
+ is optional. Absolute paths are also accepted.
41
+ Result : string -- full path to application
42
+
43
+ by_id(id) -- Find the application with the given bundle id.
44
+ id : string -- bundle id, e.g. 'com.apple.textedit'
45
+ Result : string -- full path to application
46
+
47
+ by_creator(creator) -- Find the application with the given creator type.
48
+ creator : string -- four-char code, e.g. 'ttxt'
49
+ Result : string -- full path to application</code></pre>
50
+
51
+
52
+ </div>
53
+
54
+ <!-- bottom navigation -->
55
+
56
+ <div class="footer">
57
+ <a href="06_buildingandsendingevents.html">Previous</a> &bull;
58
+ <a href="index.html">Up</a> &bull;
59
+ <a href="08_examples.html">Next</a>
60
+ </div>
61
+
62
+ </body>
63
+ </html>