2012-01-20 6 views
0

ミッションコントロール、スペース、公開、ダッシュボードなどのアプリケーションに外部プロセスを無効にして再度有効にすることが可能かどうかは疑問でした、など...ユーザーが自分のアプリケーションを使用できるようにしながら、アプリケーション内で?ミッションコントロール、スペース、ダッシュボード、その他の外部プロセスを無効にする

これを達成する方法は、NSTaskを使用して、対応するターミナルコマンドでプロセスを無効にすることでした。例:

- (NSString *)runCommandWithBase:(NSString *)base arguments:(NSArray *)arguments { 
//Create the task 
NSTask *task = [[NSTask alloc] init]; 

//Setup the task 
[task setLaunchPath:base]; 
[task setArguments:arguments]; 
[task setStandardInput:[NSPipe pipe]]; 
[task setStandardOutput:[NSPipe pipe]]; 

//Set file handle 
NSFileHandle *file = [[NSPipe pipe] fileHandleForReading]; 

//Run the command 
[task launch]; 

//Return 
NSData *returnData = [file readDataToEndOfFile]; 
return [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];} 

と:

NSString *exposeEnable = [self runCommandWithBase:@"/usr/bin/defaults" 
              arguments:[NSArray arrayWithObjects:@"write", @"com.apple.dock", @"mcx-expose-disabled", @"-boolean", @"NO", nil]]; 
    NSLog(@"%@", exposeEnable); 

NSString *exposeDisable = [self runCommandWithBase:@"/usr/bin/defaults" 
              arguments:[NSArray arrayWithObjects:@"write", @"com.apple.dock", @"mcx-expose-disabled", @"-boolean", @"YES", nil]]; 
    NSLog(@"%@", exposeDisable); 

ミッション制御は、(公開)必ず再度有効ではないだろうと私は、これを試してみましたが、それは完全に不安定であることが判明プロパティ

を無効にします - 有効なプロパティを制御するファイルが有効になっているとしても(〜/ Library/Preferences/com.apple.dock.plist; mcx-expose-disabledのプロパティ)。別の簡単な方法がありますか、またはアプリケーションのデザインを変更して、これらのことを止める必要はありませんか?現在のメソッドをいくつか変更して使用し続けることができますか(デフォルトでは異なるプロパティをシャットダウンするなど)?事前に

おかげで、

ベン

答えて

2

は、 "キオスクモードテクニカルノート" のドキュメントとNSApplicationPresentationDisableProcessSwitchingフラグをチェックしてください。

+0

ありがとうございました!これは本当に便利で、私が探していたものです! – GravityScore

0

"アプリケーションのデザインを変更して、これらのことを止める必要はありませんか?"

おそらく、これに対する答えは「はい」です。技術的でない場合は、UXのために。