Alias finder

legarcon

Membre confirmé
28 Février 2004
19
1
Bonjour,
Ayant créé un "alias record" avec FSNewAlias et rempli et etc.., je voudrais le "transformer" en Alias du Finder, c'est à dire en fichier que je vois dans le finder.
Comment puis-je faire?
Merci
 
legarcon a dit:
Bonjour,
Ayant créé un "alias record" avec FSNewAlias et rempli et etc.., je voudrais le "transformer" en Alias du Finder, c'est à dire en fichier que je vois dans le finder.
Comment puis-je faire?
Merci


Perso (C+Carbon), je passe par un AppleScript :

/*********************************************************************
AppleScriptCreeAliasSurLeBureau
Possible extension, : avec changement de nom

make new alias file to \"%s\" at desktop with properties {name:"some name"}
********************************************************************/
void AppleScriptCreeAliasSurLeBureau(char * name)
{
PrintScript("tell application \"Finder\"");
PrintScript(" activate");
PrintScript(" make new alias file to \"%s\" at desktop",name);
PrintScript("end tell");
SendScript();
return ;
}


Cordialement
 
Didier Guillion a dit:
Perso (C+Carbon), je passe par un AppleScript :

PrintScript("end tell");
SendScript();

Cordialement

Merci pour votre réponse, mais que sont ces fonctions PrintScript et SendScript que je ne trouve pas dans l'aide developer Apple?
Pour être plus complet dans ma demande, je dois dire que j'ai intérêt à utiliser des fonctions de la "CarbonLib" que je sais wrapper facilement dans un autre langage

Cordialement
 
legarcon a dit:
Merci pour votre réponse, mais que sont ces fonctions PrintScript et SendScript que je ne trouve pas dans l'aide developer Apple?
Pour être plus complet dans ma demande, je dois dire que j'ai intérêt à utiliser des fonctions de la "CarbonLib" que je sais wrapper facilement dans un autre langage

Cordialement


Voici :

Bloc de code:
/*********************************************************************
                        PrintScript
********************************************************************/
static void PrintScript(char * format,...)
{
va_list  argptr;
char chaine[512];

va_start( argptr, format );
vsprintf( chaine, format, argptr );
strcat(chaine,"\r");
if(script==NULL) script=NewHandle(0);
PtrAndHand(chaine,script,strlen(chaine));
return;
}


/*********************************************************************
                        SendScript
********************************************************************/
static Handle script;
static void SendScript(void)
{
OSErr 		anErr;
AEDesc		aScriptDesc = { typeNull, NULL };
AEDesc		resultText = { typeNull, NULL };
AEDesc 		messageDesc = { typeNull, NULL };
OSAID		aScriptID = kOSANullScript;
OSAID		aResultID = kOSANullScript;
ComponentDescription 	descr;
Component           	aComponent;
ComponentInstance	gScriptingComponent=NULL;

if(script)
	{
	if(gScriptingComponent==NULL)
		{
		descr.componentType         = kOSAComponentType;
		descr.componentSubType      = (OSType) 0;
		descr.componentManufacturer = (OSType) 0;
		descr.componentFlags        = kOSASupportsCompiling + 
				                   		kOSASupportsGetSource +
				                   			kOSASupportsAECoercion + 
												kOSASupportsAESending +
													kOSASupportsRecording +
														kOSASupportsConvenience +
															kOSASupportsEventHandling;
		descr.componentFlagsMask    = descr.componentFlags;

		aComponent = FindNextComponent( NULL, &descr );
		if(aComponent)
			gScriptingComponent=OpenComponent( aComponent );
		else
			Collapse("Warning : SendScript: Can't found AppleScrip component");
		}
	if(gScriptingComponent)
		{
		HLock(script);
		anErr = AECreateDesc( typeChar,*script,GetHandleSize(script), &aScriptDesc );
		HUnlock(script);
		if(anErr==noErr)
			{
			aScriptID = kOSANullScript;
			anErr = OSACompile( gScriptingComponent, &aScriptDesc,kOSAModeCompileIntoContext, &aScriptID );
			if(anErr==noErr)
				{
				anErr = OSAExecute( gScriptingComponent, aScriptID,kOSANullScript, kOSAModeNull, &aResultID );
				if(anErr && anErr!=errOSAScriptError)  Collapse("Warning : SendScript:OSAExecute: %d",anErr);
				OSADispose( gScriptingComponent, aResultID );
				}
			else Collapse("Warning : SendScript:OSACompile: %d",anErr);
			
			/* Erreur en cours ?*/
			
			if(anErr==errOSAScriptError)
				{
				char chaine[512];
				
				OSAScriptError( gScriptingComponent, kOSAErrorMessage, typeChar, &messageDesc);
				memset(chaine,0,sizeof(chaine));
//				BlockMoveData(*messageDesc.dataHandle,chaine,GetHandleSize(messageDesc.dataHandle));
				strcpy(chaine,"Apple script error");
				Collapse(chaine);
				AEDisposeDesc(&messageDesc);
				}
			OSADispose( gScriptingComponent, aScriptID );
			AEDisposeDesc(&aScriptDesc);
			}
		/* Fermeture du conponent */
		anErr=CloseComponent(gScriptingComponent);
		gScriptingComponent=NULL;
		}
	DisposeHandle(script);
	script=NULL;
	}
return ;
}

Je pense que tu devrait avoir a peut pres tout.
Ces deux fonctions te permettent de creer un script AppleScript d'apres un code Carbon, de le compiler et de le lancer en tache de fond.

"Collapse" est dans mon code l'affichage d'une erreur a l'utilisateur.
Cordialement
 
Didier Guillion a dit:
Voici :

Je pense que tu devrait avoir a peut pres tout.
Ces deux fonctions te permettent de creer un script AppleScript d'apres un code Carbon, de le compiler et de le lancer en tache de fond.

"Collapse" est dans mon code l'affichage d'une erreur a l'utilisateur.
Cordialement

Merci beaucoup, je pense avoir ce qui me faut pour arriver à mes fins
Cordialement

Alain Legarçon