-
Notifications
You must be signed in to change notification settings - Fork 3
/
listing5.html
executable file
·950 lines (809 loc) · 39 KB
/
listing5.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<!-- BEGIN META TAG INFO -->
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="home" href="http://developer.apple.com/">
<link rel="find" href="http://developer.apple.com/search/">
<link rel="stylesheet" type="text/css" href="../../documentation/css/adcstyle.css" title="fonts">
<script language="JavaScript" src="../../documentation/js/adc.js" type="text/javascript"></script>
<!-- END META TAG INFO -->
<!-- BEGIN TITLE -->
<title>QISA - /MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreAppleEvents/MoreAEObjects.c</title>
<!-- END TITLE -->
<script language="JavaScript">
function JumpToNewPage() {
window.location=document.scpopupmenu.gotop.value;
return true;
}
</script>
</head>
<!-- BEGIN BODY OPEN -->
<body>
<!--END BODY OPEN -->
<!-- START CENTER OPEN -->
<center>
<!-- END CENTER OPEN -->
<!-- BEGIN LOGO AND SEARCH -->
<!--#include virtual="/includes/adcnavbar"-->
<!-- END LOGO AND SEARCH -->
<!-- START BREADCRUMB -->
<div id="breadcrumb">
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr>
<td scope="row"><img width="340" height="10" src="images/1dot.gif" alt=""></td>
<td><img width="340" height="10" src="images/1dot.gif" alt=""></td>
</tr>
<tr valign="middle">
<td align="left" colspan="2">
<a href="http://developer.apple.com/">ADC Home</a> > <a href="../../referencelibrary/index.html">Reference Library</a> > <a href="../../samplecode/index.html">Sample Code</a> > <a href="../../samplecode/Networking/index.html">Networking</a> > <a href="../../samplecode/Networking/idxDarwin-date.html">Darwin</a> > <A HREF="javascript:location.replace('index.html');">QISA</A> >
</td>
</tr>
<tr>
<td colspan="2" scope="row"><img width="680" height="35" src="images/1dot.gif" alt=""></td>
</tr>
</table>
</div>
<!-- END BREADCRUMB -->
<!-- START MAIN CONTENT -->
<!-- START TITLE GRAPHIC AND INTRO-->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr align="left" valign="top">
<td><h1><div id="pagehead">QISA</div></h1></td>
</tr>
</table>
<!-- END TITLE GRAPHIC AND INTRO -->
<!-- START WIDE COLUMN -->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr align="left" valign="top">
<td id="scdetails">
<h2>/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreAppleEvents/MoreAEObjects.c</h2>
<form name="scpopupmenu" onSubmit="return false;" method=post>
<p><strong>View Source Code:</strong>
<select name="gotop" onChange="JumpToNewPage();" style="width:340px"><option selected value="ingnore">Select File</option>
<option value="listing1.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreAppearance/MoreAppearance.cp</option>
<option value="listing2.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreAppearance/MoreAppearance.h</option>
<option value="listing3.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreAppleEvents/MoreAEDataModel.c</option>
<option value="listing4.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreAppleEvents/MoreAEDataModel.h</option>
<option value="listing5.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreAppleEvents/MoreAEObjects.c</option>
<option value="listing6.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreAppleEvents/MoreAEObjects.h</option>
<option value="listing7.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreAppleEvents/MoreAppleEvents.cp</option>
<option value="listing8.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreAppleEvents/MoreAppleEvents.h</option>
<option value="listing9.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreCarbonEvents/MoreCarbonEvents.c</option>
<option value="listing10.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreCarbonEvents/MoreCarbonEvents.h</option>
<option value="listing11.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreCFQ/MoreCFQ.c</option>
<option value="listing12.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreCFQ/MoreCFQ.h</option>
<option value="listing13.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreControls/MoreControls.cp</option>
<option value="listing14.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreControls/MoreControls.h</option>
<option value="listing15.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreDialogs/MoreDialogs.cp</option>
<option value="listing16.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreDialogs/MoreDialogs.h</option>
<option value="listing17.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreInterfaceLib/MoreInterfaceLib.c</option>
<option value="listing18.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreInterfaceLib/MoreInterfaceLib.h</option>
<option value="listing19.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreInterfaceLib/RemoteAccessInterface.h</option>
<option value="listing20.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreMemory/MoreMemory.c</option>
<option value="listing21.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreMemory/MoreMemory.h</option>
<option value="listing22.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreOSUtils/MoreOSUtils.c</option>
<option value="listing23.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreOSUtils/MoreOSUtils.h</option>
<option value="listing24.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreProcesses/MoreProcesses.cp</option>
<option value="listing25.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreProcesses/MoreProcesses.h</option>
<option value="listing26.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreQuickDraw/MoreQuickDraw.cp</option>
<option value="listing27.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreQuickDraw/MoreQuickDraw.h</option>
<option value="listing28.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreSCF/MoreSCF.c</option>
<option value="listing29.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreSCF/MoreSCF.h</option>
<option value="listing30.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreSCF/MoreSCFCCLScanner.c</option>
<option value="listing31.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreSCF/MoreSCFCCLScanner.h</option>
<option value="listing32.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreSCF/MoreSCFDigest.c</option>
<option value="listing33.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreSCF/MoreSCFDigest.h</option>
<option value="listing34.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreSCF/MoreSCFHelpers.c</option>
<option value="listing35.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreSCF/MoreSCFHelpers.h</option>
<option value="listing36.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreSCF/MoreSCFPortScanner.c</option>
<option value="listing37.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreSCF/MoreSCFPortScanner.h</option>
<option value="listing38.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreSecurity/MoreSecurity.c</option>
<option value="listing39.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreSecurity/MoreSecurity.h</option>
<option value="listing40.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreSetup.h</option>
<option value="listing41.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreTextUtils/MoreTextUtils.cp</option>
<option value="listing42.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreTextUtils/MoreTextUtils.h</option>
<option value="listing43.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreUNIX/MoreUNIX.c</option>
<option value="listing44.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreUNIX/MoreUNIX.h</option>
<option value="listing45.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreWindows/MoreWindows.cp</option>
<option value="listing46.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/MoreWindows/MoreWindows.h</option>
<option value="listing47.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/NetworkSetup/MoreNetworkSetup.c</option>
<option value="listing48.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/NetworkSetup/MoreNetworkSetup.h</option>
<option value="listing49.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/NetworkSetup/NetworkSetupHelpers.c</option>
<option value="listing50.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/NetworkSetup/NetworkSetupHelpers.h</option>
<option value="listing51.html">/MoreIsBetter Bits/MoreIsBetter/MIB-Libraries/NetworkSetup/OldStyleAPI/OldOTConfigLib.h</option>
<option value="listing52.html">/QISA.c</option>
<option value="listing53.html">/QISA.h</option>
<option value="listing54.html">/QISAPanels.c</option>
<option value="listing55.html">/QISAPanels.h</option>
<option value="listing56.html">/QISAPlatform.c</option>
<option value="listing57.html">/QISAPlatform.h</option>
<option value="listing58.html">/QISAPlatformCFM/QISAPlatformCFM.c</option>
<option value="listing59.html">/QISAPlatformCFM/QISAPlatformCFMPrefix.h</option>
<option value="listing60.html">/QISAPlatformMach-O/QISAPlatformMach-O.c</option>
<option value="listing61.html">/QISAPlatformMach-O/QISASetupTool.c</option>
<option value="listing62.html">/ReadMeAboutQISA.html</option></select>
</p>
</form>
<p><strong><a href="QISA.zip">Download Sample</a></strong> (“QISA.zip”, 610.6K)<BR>
<strong><a href="QISA.dmg">Download Sample</a></strong> (“QISA.dmg”, 903.9K)</p>
<!--
<p><strong><a href="#">Download Sample</a></strong> (“filename.sit”, 500K)</p>
-->
</td>
</tr>
<tr>
<td scope="row"><img width="680" height="10" src="images/1dot.gif" alt=""><br>
<img height="1" width="680" src="images/1dot_919699.gif" alt=""><br>
<img width="680" height="20" src="images/1dot.gif" alt=""></td>
</tr>
<tr>
<td scope="row">
<!--googleon: index -->
<pre class="sourcecodebox">/* File: MoreAEObjects.c Contains: Functions to help you when you are working with Apple event objects. DRI: George Warner Copyright: Copyright (c) 2000-2001 by Apple Computer, Inc., All Rights Reserved. Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this Apple software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this Apple software. In consideration of your agreement to abide by the following terms, and subject to these terms, Apple grants you a personal, non-exclusive license, under Apple's copyrights in this original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the Apple Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the Apple Software in its entirety and without modifications, you must retain this notice and the following text and disclaimers in all such redistributions of the Apple Software. Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to endorse or promote products derived from the Apple Software without specific prior written permission from Apple. Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by Apple herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the Apple Software may be incorporated. The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Change History (most recent first):$Log: MoreAEObjects.c,v $Revision 1.14 2002/11/08 22:47:57 eskimo1Convert nil to NULL. Accomodate MoreAEDataModel change. We no longer include "MoreSetup.h", but instead rely oun our header to do it for us.Revision 1.13 2002/10/16 20:29:45 geowarMoreAEOCreateObjSpecifierFromCFURLRef now returns a cFile for a file and a generic cObject for everything else.Revision 1.12 2002/10/03 00:05:04 geowarMoreAEOCreateObjSpecifierFromCFURLRef now returns generic cObject instead of specific cFile or cFolder.Revision 1.11 2002/03/13 19:13:58 geowaraliasHandle => tAliasHandleRevision 1.10 2002/03/07 20:27:29 geowarGeneral clean up and added API's:MoreAEOCreateAliasObjectFromFSRefMoreAEOCreateObjectSpecifierFromFSSpecMoreAEOCreateObjectSpecifierFromFSRefRevision 1.9 2002/02/19 18:53:24 geowarAEDisposeDesc => MoreAEDisposeDescAdded MoreAEOAddAliasParameterFromFSRefAdded MoreAEOCreateAliasDescFromFSRefRevision 1.8 2002/01/16 19:05:09 geowarerr => anErr and (anErr ?= noErr) => (noErr ?= anErr)Revision 1.7 2001/11/07 15:50:37 eskimo1Tidy up headers, add CVS logs, update copyright. <6> 21/9/01 Quinn Get rid of wacky Finder label. <5> 21/9/01 Quinn Changes for CWPro7 Mach-O build. <4> 9/13/01 gaw Always compile your code before checking in chages! <3> 9/13/01 gaw AEPutPtr(typeInteger) should use pointers to longs, not shorts (&(pPosition.v ,.h)). <2> 15/2/01 Quinn Eliminate redundant code and includes. Prompted by gcc warning. <1> 3/9/00 GW Intergrating AppleEvent Helper code. First Check In*///*******************************************************************************//********** Our Prototypes ****************************************#include "MoreAEObjects.h"//********** Universal Headers ****************************************#if ! MORE_FRAMEWORK_INCLUDES #include <AERegistry.h> #include <AEObjects.h> #include <AEPackObject.h> #include <Aliases.h> #include <FinderRegistry.h> #include <Processes.h>#endif//********** Project Headers ****************************************#include "MoreAEDataModel.h"/******************************************************************************** Add a parameter of type typeAlias to an AERecord (or AppleEvent) using the provided FSSpec. pFSSpec input: Pointer to the FSSpec to use. pKeyword input: The key for the data to be added to the record. pAERecord input: Pointer to the record (or event) to add the data to. RESULT CODES ____________ noErr 0 No error paramErr -50 The value of target or alias parameter, or of both, is NIL, or the alias record is corrupt memFullErr -108 Not enough room in heap zone */pascal OSErr MoreAEOAddAliasParameterFromFSSpec(const FSSpecPtr pFSSpec, const DescType pKeyword, AERecord *pAERecord ){ OSErr anErr = noErr; AliasHandle tAliasHandle; anErr = NewAlias( NULL, pFSSpec, &tAliasHandle); if ( noErr == anErr && tAliasHandle == NULL ) { anErr = paramErr; } if ( noErr == anErr ) { char handleState; handleState = HGetState((Handle) tAliasHandle ); HLock((Handle) tAliasHandle ); anErr = AEPutParamPtr( pAERecord, pKeyword, typeAlias, *tAliasHandle, (*tAliasHandle)->aliasSize); HSetState( (Handle)tAliasHandle, handleState ); DisposeHandle( (Handle)tAliasHandle ); } return anErr;}//end AddAliasParameterFromFSS/******************************************************************************** Add a parameter of type typeAlias to an AERecord (or AppleEvent) using the provided FSRef. pFSRef input: Pointer to the FSRef to use. pKeyword input: The key for the data to be added to the record. pAERecord input: Pointer to the record (or event) to add the data to. RESULT CODES ____________ noErr 0 No error paramErr -50 The value of target or alias parameter, or of both, is NIL, or the alias record is corrupt memFullErr -108 Not enough room in heap zone */pascal OSErr MoreAEOAddAliasParameterFromFSRef(const FSRefPtr pFSRef, const DescType pKeyword, AERecord *pAERecord ){ OSErr anErr = noErr; AliasHandle tAliasHandle; anErr = FSNewAlias( NULL, pFSRef, &tAliasHandle); if ( noErr == anErr && tAliasHandle == NULL ) { anErr = paramErr; } if ( noErr == anErr ) { char handleState; handleState = HGetState((Handle) tAliasHandle ); HLock((Handle) tAliasHandle ); anErr = AEPutParamPtr( pAERecord, pKeyword, typeAlias, *tAliasHandle, (*tAliasHandle)->aliasSize); HSetState( (Handle)tAliasHandle, handleState ); DisposeHandle( (Handle)tAliasHandle ); } return anErr;}//end MoreAEOAddAliasParameterFromFSRef/******************************************************************************** Create and return an AEDesc of type typeAlias using the provided FSSpec. pFSSpec input: Pointer to the FSSpec to use. pAliasAEDesc input: Pointer to null AEDesc. output: an AEDesc of type typeAlias. RESULT CODES ____________ noErr 0 No error paramErr -50 The value of target or alias parameter, or of both, is NIL, or the alias record is corrupt memFullErr -108 Not enough room in heap zone */pascal OSErr MoreAEOCreateAliasDescFromFSSpec( const FSSpecPtr pFSSpec, AEDesc *pAliasAEDesc ){ OSErr anErr = noErr; AliasHandle tAliasHandle; anErr = NewAlias( NULL, pFSSpec, &tAliasHandle); if ( noErr == anErr && tAliasHandle == NULL ) { anErr = paramErr; } if ( noErr == anErr ) { anErr = MoreAEOCreateAliasDesc( tAliasHandle, pAliasAEDesc ); DisposeHandle( (Handle)tAliasHandle ); } return anErr;}//end MoreAEOCreateAliasDescFromFSSpec/******************************************************************************** Create and return an AEDesc of type typeAlias using the provided FSRef. pFSRef input: Pointer to the FSRef to use. pAliasAEDesc input: Pointer to null AEDesc. output: an AEDesc of type typeAlias. RESULT CODES ____________ noErr 0 No error paramErr -50 The value of target or alias parameter, or of both, is NIL, or the alias record is corrupt memFullErr -108 Not enough room in heap zone */pascal OSErr MoreAEOCreateAliasDescFromFSRef( const FSRefPtr pFSRef, AEDesc *pAliasAEDesc ){ OSErr anErr = noErr; AliasHandle tAliasHandle; anErr = FSNewAlias( NULL, pFSRef, &tAliasHandle); if ( noErr == anErr && tAliasHandle == NULL ) { anErr = paramErr; } if ( noErr == anErr ) { anErr = MoreAEOCreateAliasDesc( tAliasHandle, pAliasAEDesc ); DisposeHandle( (Handle)tAliasHandle ); } return anErr;}//end MoreAEOCreateAliasDescFromFSRef/******************************************************************************** Create and return an AEDesc of type typeAlias using the provided alias record. pAliasHdl input: Handle to an alias record. pAliasAEDesc input: Pointer to null AEDesc. output: an AEDesc of type typeAlias. RESULT CODES ____________ noErr 0 No error memFullErr -108 Not enough room in heap zone */pascal OSErr MoreAEOCreateAliasDesc( const AliasHandle pAliasHdl, AEDesc *pAliasAEDesc ){ OSErr anErr = noErr; char handleState = HGetState( (Handle)pAliasHdl ); HLock( (Handle)pAliasHdl ); anErr = AECreateDesc( typeAlias, *pAliasHdl, GetHandleSize( (Handle)pAliasHdl ), pAliasAEDesc ); HSetState( (Handle)pAliasHdl, handleState ); return anErr;}//end MoreAEOCreateAliasDesc/******************************************************************************** Given an FSSpec, return an object descriptor containing an alias, contained by containerObj. pFSSpec input: Pointer to the FSSpec to use. pContainerAEDesc input: Pointer to container object for object being created. pAliasObjectAEDesc input: Pointer to null AEDesc. output: an alias object. RESULT CODES ____________ noErr 0 No error paramErr -50 The value of target or alias parameter, or of both, is NIL, or the alias record is corrupt memFullErr -108 Not enough room in heap zone errAECoercionFail -1700 Data could not be coerced to the requested Apple event data type errAEWrongDataType -1703 Wrong Apple event data type errAENotAEDesc -1704 Not a valid descriptor record errAEBadListItem -1705 Operation involving a list item failed */pascal OSErr MoreAEOCreateAliasObjectFromFSSpec( const FSSpecPtr pFSSpec, AEDesc *pContainerAEDesc, AEDesc *pAliasObjectAEDesc ){ OSErr anErr = noErr; AEDesc aliasDesc = {typeNull,NULL}; anErr = MoreAEOCreateAliasDescFromFSSpec( pFSSpec, &aliasDesc ); if ( noErr == anErr ) { anErr = CreateObjSpecifier( typeAlias, pContainerAEDesc, formAbsolutePosition, &aliasDesc, false, pAliasObjectAEDesc ); MoreAEDisposeDesc( &aliasDesc ); } return anErr;}//end MoreAEOCreateAliasObjectFromFSSpec/******************************************************************************** Given an FSRef, return an object descriptor containing an alias, contained by containerObj. pFSRef input: Pointer to the FSRef to use. pContainerAEDesc input: Pointer to container object for object being created. pAliasObjectAEDesc input: Pointer to null AEDesc. output: an alias object. RESULT CODES ____________ noErr 0 No error paramErr -50 The value of target or alias parameter, or of both, is NIL, or the alias record is corrupt memFullErr -108 Not enough room in heap zone errAECoercionFail -1700 Data could not be coerced to the requested Apple event data type errAEWrongDataType -1703 Wrong Apple event data type errAENotAEDesc -1704 Not a valid descriptor record errAEBadListItem -1705 Operation involving a list item failed */pascal OSErr MoreAEOCreateAliasObjectFromFSRef( const FSRefPtr pFSRef, AEDesc *pContainerAEDesc, AEDesc *pAliasObjectAEDesc ){ OSErr anErr = noErr; AEDesc aliasDesc = {typeNull,NULL}; anErr = MoreAEOCreateAliasDescFromFSRef( pFSRef, &aliasDesc ); if ( noErr == anErr ) { anErr = CreateObjSpecifier( typeAlias, pContainerAEDesc, formAbsolutePosition, &aliasDesc, false, pAliasObjectAEDesc ); MoreAEDisposeDesc( &aliasDesc ); } return anErr;}//end MoreAEOCreateAliasObjectFromFSRef/******************************************************************************** Given an AliasHandle, return an object descriptor containing an alias, contained by containerObj. pAliasHdl input: Handle to an alias record. pContainerAEDesc input: Pointer to container object for object being created. pAliasObjectAEDesc input: Pointer to null AEDesc. output: an alias object. RESULT CODES ____________ noErr 0 No error paramErr -50 Error in parameter list memFullErr -108 Not enough room in heap zone errAECoercionFail -1700 Data could not be coerced to the requested Apple event data type errAEWrongDataType -1703 Wrong Apple event data type errAENotAEDesc -1704 Not a valid descriptor record errAEBadListItem -1705 Operation involving a list item failed */pascal OSErr MoreAEOCreateAliasObject( const AliasHandle pAliasHdl, AEDesc *pContainerAEDesc, AEDesc *pAliasObjectAEDesc ){ OSErr anErr = noErr; AEDesc aliasDesc; anErr = MoreAEOCreateAliasDesc( pAliasHdl, &aliasDesc ); if ( noErr == anErr ) { anErr = CreateObjSpecifier( typeAlias, pContainerAEDesc, formAbsolutePosition, &aliasDesc, false, pAliasObjectAEDesc ); MoreAEDisposeDesc( &aliasDesc ); } return anErr;}//end MoreAEOCreateAliasObject/******************************************************************************** Given a property type, create an new object descriptor for that property, contained by containerObj. pPropertyType input: Property type to use for object. pContainerAEDesc input: Pointer to container object for object being created. propertyObjPtr input: Pointer to null AEDesc. output: A property object. RESULT CODES ____________ noErr 0 No error paramErr -50 Error in parameter list memFullErr -108 Not enough room in heap zone errAECoercionFail -1700 Data could not be coerced to the requested Apple event data type errAEWrongDataType -1703 Wrong Apple event data type errAENotAEDesc -1704 Not a valid descriptor record errAEBadListItem -1705 Operation involving a list item failed */pascal OSErr MoreAEOCreatePropertyObject( const DescType pPropertyType, AEDesc *pContainerAEDesc, AEDesc *propertyObjPtr ){ OSErr anErr = noErr; AEDesc propDesc; anErr = AECreateDesc( typeType, &pPropertyType, sizeof( pPropertyType ), &propDesc ); if ( noErr == anErr ) { anErr = CreateObjSpecifier( cProperty, pContainerAEDesc, formPropertyID, &propDesc, false, propertyObjPtr ); MoreAEDisposeDesc( &propDesc ); } return anErr;}//end MoreAEOCreatePropertyObject/******************************************************************************** Given a ProcessSerialNumber, create an new object descriptor for the PSN, contained by containerObj. pPSN input: ProcessSerialNumber to use for object. pContainerAEDesc input: Pointer to container object for object being created. pPSNObjDesc input: Pointer to null AEDesc. output: A ProcessSerialNumber object. RESULT CODES ____________ noErr 0 No error paramErr -50 Error in parameter list memFullErr -108 Not enough room in heap zone errAECoercionFail -1700 Data could not be coerced to the requested Apple event data type errAEWrongDataType -1703 Wrong Apple event data type errAENotAEDesc -1704 Not a valid descriptor record errAEBadListItem -1705 Operation involving a list item failed */pascal OSErr MoreAEOCreateProcessObject( const ProcessSerialNumber *pPSN, AEDesc *pContainerAEDesc, AEDesc *pPSNObjDesc ){ OSErr anErr = noErr; AEDesc psnDesc; anErr = AECreateDesc( typeProcessSerialNumber, pPSN, sizeof( ProcessSerialNumber ), &psnDesc ); if ( noErr == anErr ) { anErr = CreateObjSpecifier( cProperty, pContainerAEDesc, formPropertyID, &psnDesc, false, pPSNObjDesc ); MoreAEDisposeDesc( &psnDesc ); } return anErr;}//end MoreAEOCreateProcessObject/******************************************************************************** Given selection type, create an new object descriptor for a selection, contained by containerObj. pSelectionAEDesc input: Selection type to use for object. pContainerAEDesc input: Pointer to container object for object being created. pSelectionObject input: Pointer to null AEDesc. output: A property object. RESULT CODES ____________ noErr 0 No error paramErr -50 Error in parameter list memFullErr -108 Not enough room in heap zone errAECoercionFail -1700 Data could not be coerced to the requested Apple event data type errAEWrongDataType -1703 Wrong Apple event data type errAENotAEDesc -1704 Not a valid descriptor record errAEBadListItem -1705 Operation involving a list item failed */pascal OSErr MoreAEOCreateSelectionObject( const DescType pSelectionAEDesc, AEDesc *pContainerAEDesc, AEDesc *pSelectionObject ){ OSErr anErr = noErr; AEDesc selectionDesc = {typeNull,NULL}; anErr = AECreateDesc( typeAbsoluteOrdinal, &pSelectionAEDesc, sizeof( pSelectionAEDesc ), &selectionDesc ); if ( noErr == anErr ) { anErr = CreateObjSpecifier( cObject, pContainerAEDesc, formAbsolutePosition, &selectionDesc, false, pSelectionObject ); MoreAEDisposeDesc( &selectionDesc ); } return anErr;}//end MoreAEOCreateSelectionObject/******************************************************************************** Make position list (a list containing two longs representin the x and y values for the position of a Finder item). pPosition input: A point specifying the position. pPositionAEList input: Pointer to an AEList (contents will be lost, but not disposed). output: A new AEList containing the x & y values for the position. Result Codes ____________ noErr 0 No error memFullErr -108 Not enough room in heap zone */pascal OSErr MoreAEOCreatePositionList( const Point pPosition, AEDescList * pPositionAEList ){ OSErr anErr = noErr; anErr = AECreateList( NULL, 0, false, pPositionAEList ); if ( noErr == anErr ) { long h = pPosition.h; long v = pPosition.v; anErr = AEPutPtr( pPositionAEList, 0, typeInteger, &h, sizeof(h) ); if ( noErr == anErr ) anErr = AEPutPtr( pPositionAEList, 0, typeInteger, &v, sizeof(v) ); } return anErr;}//end MoreAEOCreatePositionList//********************************************************************************// A simple wrapper around CreateObjSpecifier which creates// an object specifier using formUniqueID and the unique ID// in pKeyData.pascal OSStatus MoreAEOCreateObjSpecifierFormUniqueID(DescType pDesiredClass, const AEDesc *pContainer, SInt32 pKeyData, Boolean pDisposeInputs, AEDesc *pObjSpecifier){ OSStatus anErr; AEDesc keyDesc; assert(pContainer != NULL); assert(pObjSpecifier != NULL); MoreAENullDesc(&keyDesc); anErr = AECreateDesc(typeLongInteger, &pKeyData, sizeof(SInt32), &keyDesc); if (noErr == anErr) { anErr = CreateObjSpecifier(pDesiredClass, (AEDesc *) pContainer, formUniqueID, &keyDesc, pDisposeInputs, pObjSpecifier); } MoreAEDisposeDesc(&keyDesc); return anErr;}//end MoreAEOCreateObjSpecifierFormUniqueID//********************************************************************************// A simple wrapper around CreateObjSpecifier which creates// an object specifier using formAbsolutePosition, a key of// typeLongInteger (rather than typeAbsoluteOrdinal) and the// position index in pKeyData.pascal OSStatus MoreAEOCreateObjSpecifierFormAbsPos(DescType pDesiredClass, const AEDesc *pContainer, SInt32 pKeyData, SInt32 pDisposeInputs, AEDesc *pObjSpecifier){ OSStatus anErr; AEDesc keyDesc; assert(pContainer != NULL); assert(pObjSpecifier != NULL); MoreAENullDesc(&keyDesc); anErr = AECreateDesc(typeLongInteger, &pKeyData, sizeof(SInt32), &keyDesc); if (noErr == anErr) { anErr = CreateObjSpecifier(pDesiredClass, (AEDesc *) pContainer, formAbsolutePosition, &keyDesc, pDisposeInputs, pObjSpecifier); } MoreAEDisposeDesc(&keyDesc); return anErr;}//end MoreAEOCreateObjSpecifierFormAbsPos//********************************************************************************// A simple wrapper around CreateObjSpecifier which creates// an object specifier using formName and the name in pKeyData.pascal OSStatus MoreAEOCreateObjSpecifierFormName(DescType pDesiredClass, const AEDesc *pContainer, ConstStr255Param pKeyData, Boolean pDisposeInputs, AEDesc *pObjSpecifier){ OSStatus anErr; AEDesc keyDesc; assert(pContainer != NULL); assert(pKeyData != NULL); assert(pObjSpecifier != NULL); MoreAENullDesc(&keyDesc); anErr = AECreateDesc(typeText, &pKeyData[1], pKeyData[0], &keyDesc); if (noErr == anErr) { anErr = CreateObjSpecifier(pDesiredClass, (AEDesc *) pContainer, formName, &keyDesc, pDisposeInputs, pObjSpecifier); } MoreAEDisposeDesc(&keyDesc); return anErr;}//end MoreAEOCreateObjSpecifierFormName//********************************************************************************// A simple wrapper around CreateObjSpecifier which creates// an object specifier from a FSSpec using formName.pascal OSStatus MoreAEOCreateObjSpecifierFromFSSpec(const FSSpecPtr pFSSpecPtr,AEDesc *pObjSpecifier){ OSErr anErr = paramErr; if (NULL != pFSSpecPtr) {#if TARGET_API_MAC_CARBON FSRef tFSRef; anErr = FSpMakeFSRef(pFSSpecPtr,&tFSRef); if (noErr == anErr) { anErr = MoreAEOCreateObjSpecifierFromFSRef(&tFSRef,pObjSpecifier); }#else AEDesc containerAEDesc = {typeNull,NULL}; anErr = MoreAEOCreateAliasObjectFromFSSpec(pFSSpecPtr,&containerAEDesc,pObjSpecifier);#endif TARGET_API_MAC_CARBON } return anErr;}//end MoreAEOCreateObjSpecifierFromFSSpec//********************************************************************************// A simple wrapper around CreateObjSpecifier which creates// an object specifier from a FSRef and using formName.pascal OSStatus MoreAEOCreateObjSpecifierFromFSRef(const FSRefPtr pFSRefPtr,AEDesc *pObjSpecifier){ OSErr anErr = paramErr; if (NULL != pFSRefPtr) {#if TARGET_API_MAC_CARBON CFURLRef tCFURLRef = CFURLCreateFromFSRef(kCFAllocatorDefault,pFSRefPtr); if (NULL != tCFURLRef) { anErr = MoreAEOCreateObjSpecifierFromCFURLRef(tCFURLRef,pObjSpecifier); CFRelease(tCFURLRef); } else anErr = coreFoundationUnknownErr;#else AEDesc containerAEDesc = {typeNull,NULL}; anErr = MoreAEOCreateAliasObjectFromFSRef(pFSRefPtr,&containerAEDesc,pObjSpecifier);#endif TARGET_API_MAC_CARBON } return anErr;}// end MoreAEOCreateObjSpecifierFromFSRef//********************************************************************************// A simple wrapper around CreateObjSpecifier which creates// an object specifier from a CFURLRef and using formName.#if TARGET_API_MAC_CARBONpascal OSStatus MoreAEOCreateObjSpecifierFromCFURLRef(const CFURLRef pCFURLRef,AEDesc *pObjSpecifier){ OSErr anErr = paramErr; if (NULL != pCFURLRef) { CFStringRef tCFStringRef = CFURLCopyFileSystemPath(pCFURLRef,kCFURLHFSPathStyle); anErr = coreFoundationUnknownErr; if (NULL != tCFStringRef) { Boolean isDirectory = CFURLHasDirectoryPath(pCFURLRef); AEDesc containerDesc = {typeNull, NULL}; AEDesc nameDesc = {typeNull, NULL}; Size bufSize = (CFStringGetLength(tCFStringRef) + (isDirectory ? 1 : 0)) * sizeof(UniChar); UniCharPtr buf = (UniCharPtr) NewPtr(bufSize); if ((anErr = MemError()) == noErr) { CFStringGetCharacters(tCFStringRef, CFRangeMake(0,bufSize/2), buf); if (isDirectory) (buf)[(bufSize-1)/2] = (UniChar) 0x003A; } if (anErr == noErr) anErr = AECreateDesc(typeUnicodeText, buf, GetPtrSize((Ptr) buf), &nameDesc); if (anErr == noErr) { if (isDirectory) // we use cObject here since this might be a package (and we have no way to tell) anErr = CreateObjSpecifier(cObject, &containerDesc, formName, &nameDesc, false, pObjSpecifier); else anErr = CreateObjSpecifier(cFile, &containerDesc, formName, &nameDesc, false, pObjSpecifier); } MoreAEDisposeDesc(&nameDesc); if (buf) DisposePtr((Ptr)buf); } } return anErr;}//end MoreAEOCreateObjSpecifierFromCFURLRef#endif TARGET_API_MAC_CARBON//********************************************************************************// *******************************************// ***** AddTwoIntListToEvent *****// *******************************************// Creates an AEList containing 2 integers, and then adds the list to an Apple event./*OSErr AddTwoIntListToEvent( AppleEvent *pAppleEvent, long param1, long param2 ){ OSErr anErr; AEDescList paramList; anErr = AECreateList( NULL, 0, false, &paramList ); if ( noErr == anErr ) { anErr = AEPutPtr( &paramList, 0, typeInteger, &param1, sizeof( param1 ) ); if ( noErr == anErr ) { anErr = AEPutPtr( &paramList, 0, typeInteger, &param2, sizeof( param2 ) ); if ( noErr == anErr ) { anErr = AEPutParamDesc( pAppleEvent, keyDirectObject, &paramList ); } } } MoreAEDisposeDesc( &paramList ); return ( anErr );}// end AddTwoIntListToEvent*/</pre>
<!--googleoff: index -->
</td>
</tr>
</table>
<!-- END WIDE COLUMN -->
<!-- END MAIN CONTENT -->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr>
<td><div style="width: 100%; height: 1px; background-color: #919699; margin-top: 5px; margin-bottom: 15px"></div></td>
</tr>
<tr>
<td align="center"><br/>
<table border="0" cellpadding="0" cellspacing="0" class="graybox">
<tr>
<th>Did this document help you?</th>
</tr>
<tr>
<td>
<div style="margin-bottom: 8px"><a href="http://developer.apple.com/feedback/?v=1&url=/samplecode/QISA/listing5.html%3Fid%3DDTS10000714-1.0&media=dvd" target=_new>Yes</a>: Tell us what works for you.</div>
<div style="margin-bottom: 8px"><a href="http://developer.apple.com/feedback/?v=2&url=/samplecode/QISA/listing5.html%3Fid%3DDTS10000714-1.0&media=dvd" target=_new>It’s good, but:</a> Report typos, inaccuracies, and so forth.</div>
<div><a href="http://developer.apple.com/feedback/?v=3&url=/samplecode/QISA/listing5.html%3Fid%3DDTS10000714-1.0&media=dvd" target=_new>It wasn’t helpful</a>: Tell us what would have helped.</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!-- START BOTTOM APPLE NAVIGATION -->
<!--#include virtual="/includes/footer"-->
<!-- END BOTTOM APPLE NAVIGATION -->
<!-- START CENTER CLOSE -->
</center>
<!-- END CENTER CLOSE -->
</body>
</html>