問題タブ [scripting-bridge]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 値が文字列のように見える列挙型の型は何ですか?
私は Apple のフレームワークを使用しており、次のようないくつかの sScriptingBridge
を含む iTunes のヘッダー ファイルを生成しました。enum
私の理解では、enum
値は整数のようでなければなりませんでしたが、この定義はその規則に違反しているようです。enum
さらに、これらの値を整数として (たとえば、 で)扱うことNSPredicate
は正しいことをしていないようです。
enum
上記の宣言を空のmain
関数を含む C ファイルに追加し、i686-apple-darwin9-gcc-4.0.1
. したがって、これらの種類のenum
s は C 標準に準拠していない可能性がありますが (Parappa が以下で指摘しているように)、少なくともgcc によって何らかの型にコンパイルされています。
では、その型とは何ですか?たとえば、書式文字列でどのように使用できますか?
c - C での Apple Scripting Bridge の使用
C でスクリプト ブリッジ (ここで説明したように) を使用できるかどうか疑問に思っています。私がしようとしているのは、Apple アプリケーション (iTunes など) からの情報を制御および/または取得することです。上記のリンク リスト 2.1 および 2.2 を参照してください。リンク) これは、Objective-C を使用するとかなり簡単です。
C を使用して Objective-C でこれらの部分を作成することもできますが、それはかなり複雑になるため、完全な C のアプローチが好まれます。
cocoa - スクリプティング ブリッジで iTunes プレイリストを作成する
cocoa スクリプト ブリッジを使用して新しいユーザー プレイリストを作成しようとしていますが、うまく動作しないようです。私はこれまでに持っています:
プレイリストの名前を追加しようとすると、次のエラー メッセージが表示されます。
iTunesBridge[630:80f] *** -[SBProxyByClass setName:]: オブジェクトはまだコンテナに追加されていません。セレクターが認識されない
誰かが私を正しい方向に向けることができますか?
scripting - AppleScript を使用して Safari のすべてのタブまたは一部のタブのみを閉じる方法は?
Safari でタブを閉じるための非常に単純な AppleScript を作成しました。問題は、それが機能することですが、完全ではありません。いくつかのタブだけが閉じられています。コードは次のとおりです。
私もこのスクリプトを試しました:
...しかし、どちらも機能しません(同じ動作)。
私は自分のシステム (MacBook Pro 2008 年 1 月) と、Tiger の下の Mac Pro G5 でそれを試してみましたが、Tiger では説明的なエラーははるかに少ないものの、スクリプトは両方で失敗します。
スクリプトを数回実行すると、タブがなくなるまで毎回いくつかのタブが閉じられますが、いくつかのタブを閉じた後は常に同じエラーで失敗します。Leopard では、範囲外のエラーが発生します。私は高速列挙を使用しているため(「ウィンドウ内のアイテムの数を 0 から数まで繰り返す」を使用していません)、これで境界外エラーを取得する方法がわかりません...
私の目標は、Cocoa Scripting Bridge を使用して、Objective-C Cocoa アプリケーションから Safari のタブを閉じることですが、Scripting Bridge は同じように失敗します。削除できないタブは Xcode デバッガーのように表示さNULL
れますが、他のタブは値 (タイトルなど) を取得できる有効なオブジェクトです。実際、私は最初に Scripting Bridge を試してから、これを AppleScript で直接試してはどうかと自分に言い聞かせましたが、同じ結果が得られて驚きました。
そこに明らかな省略か何かがあるに違いありません...(私にはSafari AppleScriptサポートのバグのように思えます... :S)私は繰り返しループとObj-C 2.0高速列挙を使用して、コレクションをゼロで反復処理しました問題があるので、ここで何が問題なのかわかりません。
誰でも助けることができますか?
前もって感謝します!
cocoa - PerlのOS-XScriptingBridgeフレームワークを使用してウィンドウを閉じるにはどうすればよいですか?
問題...
MacPerlは64ビットperlでサポートされなくなったため、Terminal.appを制御するための代替フレームワークを試しています。
ScriptingBridgeを試していますが、 PerlObjCBridgeを使用して列挙型文字列をcloseSaving
メソッドに渡す際に問題が発生しました。
電話したい:
試みられた解決策...
私が試してみました:
ご覧のとおり、列挙型文字列を渡す方法についての私の推測はすべて失敗します。
あなたが私を炎上させる前に...
- これを行うために別の言語(ruby、python、cocoa)を使用できることは知っていますが、それでは残りのコードを翻訳する必要があります。
- CamelBonesを使用できるかもしれませんが、ユーザーがCamelBonesをインストールしているとは思いません。
- NSAppleScriptフレームワークを使用することもできますが(タブIDとウィンドウIDを見つけるのに苦労したと仮定して)、この1回の呼び出しだけでNSAppleScriptフレームワークに頼らなければならないのは奇妙に思えます。
cocoa - Scripting Bridgeは、10.5ではiTunesに新しいプレイリストを作成するとエラーが発生しますが、10.6では発生しません
10.5のScriptingBridgeフレームワークに問題があります。具体的には、このコードを使用して、iTunesで新しいユーザープレイリストを作成します。
このコードは10.6で正常に機能します。プレイリストは正しく作成されており、後で曲を追加できます。
ただし、10.5では、エラーが生成されます。
なんで?
objective-c - ScriptingBridgeにより、iTunesは終了後に再起動します
私はあなたがiTunesで聴いているものを監視するCocoaアプリに取り組んでおり、Mac OS 10.5以降をターゲットにしているので、ScriptingBridgeを使用することにしました。
アプリが現在のトラックをポーリングする時間に近すぎてiTunesを閉じようとすると、iTunesはすぐに再起動します。この動作を確実に防ぐ唯一の方法は、最初にアプリを終了してから、iTunesを終了することです。
EyeTunesに切り替えると問題は解決しますが、それはかなり古いコードベースであり、外部ライブラリなしでこれを達成できることを望んでいました。確かに私は再起動を引き起こしている何か間違ったことをしていますか?
ここにいくつかのサンプルコードがあります。このスニペットは、によってトリガーされ、数秒ごとに実行されますNSTimer
。
これはScriptingBridgeの既知の問題ですか、それとも間違って使用していますか?
cocoa - ScriptingBridgeを介してAppleScriptを使用してターミナルウィンドウのウィンドウIDとタブ番号を取得するにはどうすればよいですか?
次のAppleScriptを使用して[ターミナル]タブを開くことができます。
これにより、次のような文字列が返されますtab 1 of window id 3263 of application "Terminal"
。これは素晴らしいことです。ウィンドウID3263とタブ番号1を確認できます(ただし、 myTabにクエリを実行してこれらの値のみを取得する方法はわかりません)。
Cocoa ScriptingBridgeでは、次のことができます。
タブオブジェクトからウィンドウIDとタブ番号を取得するにはどうすればよいですか?
2009/4/27を編集-なぜですか?
これを実行したい理由に答えて、(上記のように)ターミナルウィンドウでコマンドを開き、タブオブジェクトを取得しています。ただし、このウィンドウを移動/サイズ変更したいので、タブの「ウィンドウ」オブジェクトにアクセスする必要があります。
私はObjective-C(実際にはPerlからブリッジされたObjective-C)を使用しており、標準のOSコンポーネントに固執したいので、NSAppleScriptフレームワークとScriptingBridgeフレームワークしか使用できないと思います(すべてのperlapplescriptモジュールは64ビットで壊れました)炭素除去)。NSAppleScriptを試してみますが、戻り値の処理は非常に難しいようです。
私の現在の解決策は、タブオブジェクトのTTY(一意であることが保証されている)を取得し、タブを含むウィンドウが見つかるまで、すべてのウィンドウのすべてのタブを列挙することです。私はこれが最善の方法ではないと思いました(確かに速くはありません!)。
2009/4/30を編集-解決策
以下の「 has 」の提案に基づいて、 NSAppleEventDescriptorAPIに勇敢に立ち向かいました。executeAndReturnError()
当初、私はNSAppleScriptの呼び出しでのみこれに到達することができました。ただし、NSAppleScriptはScriptingBridgeよりもはるかに遅いことがわかりました。
ClassDumpを使用してさらにいくつかのSBObject呼び出しを抽出した後、文書化されていない呼び出しを見つけましspecifierDescription()
たqualifiedSpecifier()
。前者は私に素敵な「ウィンドウIDYのタブX」文字列を与えてくれます。後者はアップルのイベント記述子を返し、それをデコードできます。
私の最終的なコード(perl)は次のとおりです。
objective-c - CocoaScriptingBridgeを使用したiPhotoアルバムの作成
ココアアプリケーションから新しいアルバムを作成しようとして髪を引き裂いています。applescriptでは、これは簡単な手順です。
しかし、これがスクリプトブリッジを介してCocoaでどのように行われるかを理解することはできません。私はこれを試しました:
しかし、それは効果がありませんでした。
助けてください!
objective-c - Scripting Bridge を使用して iTunes にムービーを追加する
Scripting Bridge を使用してムービーを iTunes に追加したいと考えています。そしてできれば、「ミュージック ビデオ」と「映画」のどちらかを選択させてください。私は Objective-C と AppleScript の両方を知っているので、それほど難しくないと思っていましたが、理解できません。NSAppleScript を使用する方法は知っていますが、10.5 以降をターゲットにしており、Scripting Bridge が NSAppleScript を廃止することを読みました。そうですか?
私が得たのは
ご覧のとおり、それほど多くはありません。