Re: Problem calling InternetConfig in Jaguar
Re: Problem calling InternetConfig in Jaguar
- Subject: Re: Problem calling InternetConfig in Jaguar
- From: Philippe Martin <email@hidden>
- Date: Mon, 30 Sep 2002 23:06:57 +0200
At 16:57 +0100 30/09/02, Diggory Laycock wrote:
>
I use ICSetPref in my prefpane to change helpers - it seems to 'stick' for all kinds of apps (with creator codes).
How do you get the creator code? Here's what I do (that's appCreatorCode that I pass to ICSetPref):
NSFileManager *defaultManager = [ NSFileManager defaultManager ];
NSBundle *appBundle = [ NSBundle bundleWithPath:filepath ];
NSString *appName = [ defaultManager displayNameAtPath:filepath ];
NSDictionary *fileAttributes;
NSString *quote = @"'";
NSString *creatorString;
OSType appCreatorCode;
if ( appBundle ) {
fileAttributes = [ appBundle infoDictionary ];
creatorString = [ [ quote stringByAppendingString:
[ fileAttributes objectForKey:@"CFBundleSignature" ] ]
stringByAppendingString:quote ];
appCreatorCode = NSHFSTypeCodeFromFileType( creatorString );
} else {
fileAttributes = [ defaultManager fileAttributesAtPath:
filepath traverseLink:YES ];
appCreatorCode = [ fileAttributes fileHFSCreatorCode ];
creatorString = NSFileTypeForHFSTypeCode( appCreatorCode );
Could my problem be in there? It doesn't seem so to me, but I'm only an egg.
>
I have found that if Internet Explorer is open when you make the change - when you quit IE it will stampede all over your changes with its own cached version of the ICHelpers preference.
I haven't seen this. Is that new in Jaguar? OTOH, that doesn't seem to be related to my problem, because the changes I do don't even stick until I quit IE.
Thanks for your reply, anyway.
Philippe
>
On Monday, September 30, 2002, at 04:13 pm, Philippe Martin wrote:
>
>
>My application (IC-Switch) gets and sets InternetConfig helpers by calling ICGetPref and ICSetPref. Everything worked fine with Mac OS X 10.1, but in 10.2, only Carbon and Classic applications are recorded by ICSetPref. It returns noErr for Cocoa applications too, but the change doesn't take.
>
>
>
>Using Sampler, I can see that System Preferences still calls ICSetPref when setting a helper to a Cocoa application, but then the changes are stored in com.apple.LaunchServices.plist instead of com.apple.internetconfig.plist, and nothing tells me why. All my calls to ICSetPref result in updating only internetconfig.plist.
>
>
>
>And when I set a helper to a Cocoa application from System Preferences and then call ICGetPref from my application, I still get the application's creatorCode as OSType and the application's name as a Pascal string, just like I pass them when I call ICSetPref.
>
>
>
>I found that InternetConfig moved to HIServices and I fixed my references accordingly, but I didn't find any mention of a change in ICSetPref's parameters (even in InternetConfig.h). Any idea on what I miss? Any suggestion on how to find it out (like how to intercept System Preferences's call to ICSetPref and see the parameters it passes)?
>
>
>
>Thanks!
>
>
>
>Philippe
>
>--
>
>______________________________________________________________________
>
> Philippe MARTIN (a.k.a. Flip) mailto:email@hidden
>
> http://www.MacrobyteResources.com http://www.Free-Conversant.com
>
>_______________________________________________
>
>cocoa-dev mailing list | email@hidden
>
>Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
>
>Do not post admin requests to the list. They will be ignored.
>
>
>
>
>
Diggory Laycock
>
-----------------------
>
http://www.diggory.net
--
______________________________________________________________________
Philippe MARTIN (a.k.a. Flip)
mailto:email@hidden
http://www.MacrobyteResources.com http://www.Free-Conversant.com
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.