ページ 11

SafariでGoogleを開きたい

Posted: 2010年12月03日(金) 17:49
by Objective-C初心者
Objective-C初心者です。
開発環境はXcode、Macintoshのアプリケーションを作っています。
基本的な質問です。失礼な点があるかと思いますが、よろしくお願いします。

ボタンを押したときに、SafariでGoogleを開きたいです。
外部のアプリケーションを実行するのは、taskらしいというので、Webで見つけたものを継ぎ接ぎしてみたのですが、うまく動きません。

コード:

- (IBAction)show:(id)sender{
	NSString *str = [@"http://www.google.com/"];
	[outputField setStringValue:str];//ここまではうまくいっていて、設定したMultiline Labelに文字列を表示できている。

	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];//Usused variable 'pool'とエラー。
	NSTask *task  = [[NSTask alloc] init];
	
	[task setLaunchPath: @"/bin/sh"];
	[task setArguments: [NSArray arrayWithObjects: str, nil]];
	[task launch];
}
設定したstrのURLをSafari開くには、どのようにしたらよいですか?

あと、ライブラリからもってきたPush Buttonを、ウィンドウのなかでキーボードのEnterを押したときに実行するデフォルトのボタンにしたいです。
これにはどのようにしたらよいでしょう?
アドバイスお願いします。

Re: SafariでGoogleを開きたい

Posted: 2010年12月04日(土) 11:39
by Objective-C初心者
シェルスクリプトについて調べたところ、ターミナル(bash)からは、
open -a Safari http://www.google.com/
で開けるようです。
poolはなくてもよいということで、

- (IBAction)show:(id)sender{
NSString *str = [@"open -a Safari http://www.google.com/"];
[outputField setStringValue:str];

NSTask *task = [[NSTask alloc] init];
[task setLaunchPath: @"/bin/sh"];
[task setArguments: [NSArray arrayWithObjects: str, nil]];
[task launch];
}

としてみましたが、まだタスクを起動できません。
なにがだめなんでしょうか??

Re: SafariでGoogleを開きたい

Posted: 2010年12月04日(土) 16:16
by Justy
 Cocoaは余りよく知らないのですが、shで開くなら

コード:

    [task setArguments: [NSArray arrayWithObjects:@"-c", str, nil]];
と、 -cをつけてみて下さい。


 あと、デフォルトに設定しているブラウザで開くなら

コード:

    NSURL *url = [NSURL URLWithString:@"http://www.google.com/"];
    [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]];
なはずです。

Re: SafariでGoogleを開きたい

Posted: 2010年12月04日(土) 17:49
by Objective-C
Justyさんありがとうございました。
-cを追加することでできました。