1

スクリーンキャプチャの宛先パスをデフォルトのcom.apple.screencaptureパス値に設定できるようにするために、XcodeでQuicksilver プラグイン(スクリーンキャプチャ)を変更しようとしています。プラグインには現在、何らかの理由でパスがハードコーディングされているため、画面キャプチャのOSXデフォルトパスを変更した場合でも、プラグインはそれらをOSXデフォルト(デスクトップ)に送信します。

私はXcode/Objective Cの文字通りの初心者なので、情報/例や正しい方向を示していただければ幸いです。

微調整が必​​要なscreencaptureプラグインファイルは「QSScreenCapturePlugIn.m」ファイルです-これがスニペットです:

(QSObject *)captureRegion:(QSObject *)dObject{

   NSString *destinationPath=[@"~/Desktop/Picture.png" stringByStandardizingPath];

   destinationPath=[destinationPath firstUnusedFilePath];

   NSTask *task=[NSTask launchedTaskWithLaunchPath:SCTOOL arguments:[NSArray arrayWithObjects:@"-is",destinationPath,nil]];

   [task waitUntilExit];

   [[QSReg preferredCommandInterface] selectObject:[QSObject fileObjectWithPath:destinationPath]];

   [[QSReg preferredCommandInterface] actionActivate:nil];
   return nil;
}

デフォルトのデータベースから読み取る方法を示す例を高低で検索しましたが、情報が少ないようです。

ありがとう!

4

1 に答える 1

1

誰もこれについての答えやポインタを手伝うことができなかったとは信じられません(または私は十分に辛抱強くないかもしれません)が、ありがたいことに、SOで他のいくつかの答えを読んでいる間に答えを見つけることができました-残念ながら、ページを失ったため、ここで質問を参照することはできません。

とにかく、これはそれを行います:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSString *screenCaptureLocationString = [[defaults persistentDomainForName:@"com.apple.screencapture"] valueForKey:@"location"];

何らかの理由でこの情報を見つけるのは驚くほど難しいですが、うまくいけば、ここに投稿することで他の誰かの助けになるでしょう。

于 2012-11-15T14:44:26.657 に答える