問題タブ [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.

0 投票する
1 に答える
571 参照

macos - Get iTunes'/Finder's default album art image

Part of my application's functionality is that it gets the currently playing iTunes track's album art (using Scripting Bridge). I'm able to do this fine. However, when a track isn't playing, I'd like to get the default album art that both iTunes and Finder have. Is this possible from code? (or if not, how else?)

Dark square with blue-grey music note

0 投票する
1 に答える
1231 参照

python - スクリプティング ブリッジ vs PyObjC vs py2app

Python と Mac OS アプリの統合について学び始めたところです。(Cocoa から Python へのいくつかのメソッドを呼び出したいと考えています。) Scripting Bridge、PyObjC、および py2app という用語に出くわしました。違いは何ですか?PyObjC はスクリプト ブリッジの例ですか? いつpy2appが登場しますか?

0 投票する
1 に答える
706 参照

cocoa - Cocoa: iTunes の曲の変更時にコールバックを受け取る

Skype や同様の他のチャット クライアントと同じように、現在再生中の iTunes の曲でユーザーのステータスを更新するチャット クライアントの機能を作成しています。私は現在、ScriptingBridge のメソッドを使用して iTunes の現在の曲を取得しています。

ただし、現在再生中の曲が iTunes で変更されるたびに呼び出されるコールバックを何らかの形で登録できるかどうかはわかりません。明らかに、たとえば 10 秒ごとに起動し、iTunes が実行されているかどうかを確認し、実行されている場合は、曲の情報を取得して、保存されている情報と比較する NSTimer を連続して起動することができます。これはおそらく最善の方法ではありませんが、他に方法が見つかりませんでした。

誰かがこれで私を助けることができればありがとう. とても有難い。

0 投票する
2 に答える
692 参照

html - Scripting Bridge、Apple Mail、HTMLおよびヘッダーファイル

スクリプトブリッジとアップルメールをハックすることができ、ココアプログラムからメールを送信できるようになりました。今、私はHTMLメールを送信しようとしていますが、問題が発生しました。つまり、openhtmlタグからslash-htmlcloseタグまでのHTMLコード全体を含むNSStringを生成し、その間にすべての機能を追加しました。

ただし、それをスクリプトブリッジを介してコンテンツとして渡すと、HTMLコードを読み取ることができる電子メールだけになります...プレーンテキストと言えますが、リンクはクリック可能なリンクとして表示されるため、完全ではありません。本当。

Safariでコードを開くと、HTMLが正しく表示されます。

電子メールメッセージのヘッダー情報に関係しているのではないかと思いましたが、スクリプトブリッジを介してそれを設定する方法があれば、まだその方法を見つけていません。繰り返しになりますが、リンクはクリック可能であるため、問題ではないと思いますか?

ヘッダー情報を「Content-Type:text / html; charset = ISO-8859-1」および「MIME-Version:1.0」に設定する方法があり、その方法を知っている人がいる場合は、教えてください:)

そうでない場合、誰かが何か提案がありますか?私は何かが欠けているに違いないと確信しています、そして私はそれが単純であることを望んでいます。

* 編集 *

SafariでHTMLファイルを開き、[ファイル]> [メールの内容]を使用して、AppleMailに新しいメールを作成してみました。この新しいメールはHTMLとして表示できます。したがって、私はこれを行うことが可能でなければならないことを知っています。

次に、その電子メールと非HTML電子メールを自分自身に送信します。

両方のファイルのヘッダー情報だけを調べると、コンテンツタイプがこれらの電子メールの両方で同一であり、次のようにリストされていることがわかりました。

もちろん、ID文字列は送信されるメールごとに異なります...

ただし、生のソースを表示する場合、HTMLファイルには実際にはHTMLコードの直前に「text / html」を指定する2番目のコンテンツタイプがあります(これは、multipart /alternativeが単にメールアプリに検索を指示することを意味すると解釈します)追加のコンテンツタイプタグの場合...

0 投票する
1 に答える
332 参照

xcode - 受信者をメールに追加するときに、Scripting Bridge が不要な HTML コードを追加する

わかりました、これは少し奇妙です....

電子メールとして送信したい HTML ページが Safari にあります。ファイル メニューに移動し、「このページのメール コンテンツ」を選択すると、期待どおりに転送され、正しく表示されます。

ただし、Scripting Bridge を使用して送信メッセージに受信者を追加すると、追加された各受信者のメッセージ コンテンツ領域の先頭に次のコードが追加されます。1 つの例では、24 人の受信者が追加され、結果の電子メールには、次のコードの 24 回の連続した繰り返しが含まれます。

div タグがレンダリングされる方法により、メールの先頭に 24 個の改行が作成され、HTML がページのさらに下で開始されるようになります。

このコードが挿入される理由を知っている人はいますか?

Scripting Bridge に使用しているコードは次のとおりです。

受信者を追加するために使用するコードは次のとおりです。

* 編集 *

問題の回避策を見つけましたが、受信者を追加するときにこのコードが本文に挿入される理由を知りたいと思います...回避策は次のとおりです: CSS セクションに以下を挿入しました私のHTMLテンプレートの...

したがって、表示では html テンプレート内のすべての div タグが無視されます。上記のコードのコピーがまだ 24 個ありますが、それらは基本的に無視され、視覚的なレイアウトの問題が解決されます。

誰かがより良い解決策を持っている場合は、私に知らせてください!

0 投票する
1 に答える
298 参照

objective-c - ScriptingBridge を使用して現在のサファリ タブを保存する方法

現在のページを PDF として保存するように Safari に指示するために、スクリプト ブリッジを使用しようとしています。

「Safari.h」ヘッダー ファイルには、SafariItem クラスの保存メソッドが存在します。

だから私はこれを使用しましたが、うまくいきません:

あとでSafari.appの印刷オプションにPDF保存があることに気がついたので、この機能を使ってみました。

ただし、SafariPrintSettings オブジェクトを初期化しようとすると、コンパイル エラーが発生しました。

コンパイラはそのクラスを見つけられないようですが、ヘッダー ファイルをインクルードし、ScriptingBridge フレームワークを追加しました。

誰でも助けることができますか?

前もって感謝します。

0 投票する
1 に答える
175 参照

xcode - プログラムによる送信メール メッセージの選択

ここで私がやろうとしていることは次のとおりです。あなたがメールで新しい空のメールメッセージを作成し、本文コピーなどのデータを入力すると仮定しましょう (私の場合、メッセージはスクリプトブリッジを介して作成されました) safari の「このページのメール コンテンツ」を使用する...私のアプリケーションのこのプロセスの主な目的です。)

私のアプリケーションから、そのメッセージを選択して、次のように割り当てます。

プログラムで受信者を追加できるようにします。これを行ういくつかの方法を試してみましたが、これは論理的であると思われましたが、これまでのところ適切な組み合わせが見つかりませんでした。また、ヘッダー ファイルもあまり明確ではないようです (スクリプト ブリッジは初めてです)。

私の最初の考えはこれを試すことでした:

作成された最後の送信メッセージを取得する必要があります。受信者をmailMessageに追加できるという点でうまくいくようです(受信者を間違ったメッセージに追加するなど、複数の送信メッセージが存在するときに予期しない結果を受け取ったことが何度かありました)が、件名をログに記録しようとしていますメッセージの:

メッセージの件名フィールドに明確に表示できる件名がある場合でも、常に NULL を返します。他のパラメータについても NULL が返されます。

メッセージ プロパティの NULL を受け取る (または予期しない結果を受け取る) のは、mailMessage を既存の送信メッセージに向けようとした場合のみであるため、上記の mailMessage への割り当てに問題があるに違いないと考えています。スクリプト ブリッジでメール メッセージを作成すると、すべてのプロパティを正しく取得できます。

上記の mailMessage の割り当てを使用して、パラメーターに NULL を取得する理由を教えてくれるほど、メール スクリプトの階層を理解している人はいますか? 最も簡単な方法は、受信者を追加して後で呼び出すことができるように、メッセージを取得することです。

方法?どんな洞察も役に立ちます。私は 1 週間かけて mail.h ヘッダー ファイルを調べましたが、この時点で他に何を試せばよいか文字通り途方に暮れています。

0 投票する
1 に答える
659 参照

objective-c - Scripting Bridge で実行時に Objective-C クラスを生成するにはどうすればよいですか?

今日、Scripting Bridge グルー ファイル (Mail.app 用) を更新していたところ、sdp(1) のマニュアル ページに次のように書かれていることに気付きました。

対応する実装ファイルを作成する必要はありません。Scripting Bridge は実行時にクラスの実装を作成します。

それはクールに聞こえますが、生成されたクラスの実装がなければ(予想どおり):

正当な問題を簡単に覆い隠す可能性があるため、未定義のシンボルをすべて抑制したくないので、以下を使用しました ( ld(1) man ページ-Uに従って):

symbol_name が定義されていなくても問題ないことを指定しました。-two_levelnamespace を使用すると、結果のシンボルは dynamic_lookup とマークされます。これは、dyld がロードされたすべてのイメージを検索することを意味します。

(-Xlinker -U -Xlinker _OBJC_CLASS_$_MailApplicationこれらのフラグを使用して ld に到達する必要がありました。それ以外の場合、clang はそれらの引数を保持します。)

起動時にダイナミック リンク エラーが発生するため、これらを作成するのは明らかdynamic_lookupに間違っています。

-force_flat_namespace -undefined suppressこれは、(上記のように、使用したくない)を使用した場合にも発生します。Scripting Bridge プログラミング ガイドは、私が正しく作業していることを暗示しているようですが (「コードの準備」セクション)、この問題については触れていません。

0 投票する
1 に答える
304 参照

xcode - スクリプトブリッジヘッダーファイルが見つかりません:Xcodeをアップグレードした後のmail.h iCal.h

これは簡単なはずです。

私は最近、Xcode3.6から10.7の最新バージョンのXcodeにアップグレードしたと思います。

私はAppleMailとiCalの両方のスクリプトブリッジを使用しています。

以前は、[ファイル]> [すばやく開く...]を使用して、mail.hまたはiCal.hヘッダーファイルのいずれかを表示できました。ファイル名を入力すると、1つのファイルのみが表示されました...正しいファイルです。

ここで、Open Quicklyを使用してmail.hまたはiCal.hのいずれかを入力すると、数十のファイルがリストに表示されますが、正しいScriptingBridgeヘッダーファイルはありません。

誰かがこれらのヘッダーファイルをもう一度表示する場所や方法を教えてもらえますか?それは私をここで少し狂わせています。

ありがとう!

0 投票する
1 に答える
1170 参照

objective-c - Objective-C: 外部アプリケーションからメニュー情報を取得

ユーザーがホットキーを押したときに、現在アクティブなアプリケーションのメニュー バー項目を含むコンテキスト メニューを表示する Mac OS メニュー エクストラ アプリケーションを作成しようとしています。コンテキスト メニューの表示は問題なく実行できますが、現在アクティブなアプリケーションのメニュー バー項目を取得できないようです。現時点では[[[NSWorkspace sharedWorkspace] runningApplications] filteredArrayUsingPredicate:]、アクティブなアプリケーションの名前を取得するために使用していますが、NSRunningApplication には他の貴重な情報がほとんど含まれていないようです。外部アプリケーションからアプリケーション メニューに関する情報を取得する方法はありますか?

アップデート:

AppleScript の使用に満足している場合は、 ScriptingBridgeフレームワークを使用するとかなりうまくいくようです。

アプリケーションのメニューバーから利用可能なメニューのリストを出力します。コンテキスト メニューを取得する方法が見つからないので、まだ回答済みとは言いません...

これも役に立ちました: http://robnapier.net/blog/scripting-bridge-265