問題タブ [macos-carbon]
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.
macos - Macintosh C アプリを選択するためのナビゲーション ウィンドウの作成
私は Mac 用の C プログラムを書いています。Apple イベントを送信するアプリケーションをユーザーが選択できるようにする必要があります。を使用してナビゲーション ウィンドウを作成できますが、NavCreateChooseFileDialog()
.app ファイルを有効にすることができません。を使用してタイプを制限するNavDialogSetFilterTypeIdentifiers
と、フォルダー名に .app がない MS Office などのアプリケーションのみを選択できます。他のすべてはグレー表示されます。
何か案は?
c++ - osx でカーボン アプリケーションをプログラムで非表示にする方法はありますか?
Carbon C++ アプリケーションがあり、アプリの [アプリケーション] メニューで利用できる Command-H (アプリケーションを非表示にする) と同等の操作をプログラムで実行したいと考えています。TransitionWindow と HideWindow のカーボン API を調査しました。これらはウィンドウを非表示にできますが、Command-H と同等のことはできません。AppleEvent を作成するために必要なオフハンドで AppleEvent リファレンスを調べましたが、アプリケーションを非表示にするものは見当たりませんでした。何かご意見は?
c++ - CGImageRef をクリップボードに入れる
CGImageRef をクリップボードのペーストボードにコピーしようとしています。(サイズがゼロの)から宛先を作成し、画像を宛先に追加し、ファイナライズしてから、参照をクリップボードにPasteboardPutItemFlavorすることで、これを行う必要があると主張する関数を見つけました。
ただし、機能しないため、2 つの質問:
これは正しい方法ですか?(つまり、小さなバグがあるだけですか、それとも間違っていますか?)
目的地はどのタイプにすればいいですか?ソースにはTIFFがありましたが、それを処理する方法がわからないようです。PICTに変更しました。少なくとも「貼り付け」オプションが表示されましたが、大きすぎると言いました...
コード:
cocoa - システム環境設定で Voice Over がオンになっているかどうかを確認するにはどうすればよいですか?
システム環境設定で「Voice Over」が有効になっているかどうかを確認する方法、理想的には Mac OS X 10.3 との下位互換性がある方法はありますか?
events - イベント タップ: CGEventPost、kCGSessionEventTap、kCGAnnotatedSessionEventTap、CGEventTapPostEvent によるさまざまな結果
イベント タップからイベントを投稿する際に厄介な問題が発生しています。kCGHIDEventTap で NSSystemDefined をタップし、イベントを新しいイベントに置き換えます。私が直面している問題は、イベントの投稿方法によっては、一部のアプリケーションでしか見られないことです。私のテスト アプリケーションは、Opera、Firefox、Quicksilver、および Xcode です。イベント タップ コールバック内で試したさまざまな手法と結果を以下に示します。各アプリからのアクション (「正しい応答」) を期待しています。「システム ビープ」とは、そのキーに何もバインドされていないシステム サウンドを意味します。
新しいイベントを作成し、コールバックから返します。Opera: 無応答/システム ビープ音、Firefox: 無応答/システム ビープ音、Quicksilver: 正しい応答、Xcode: 無応答/システム ビープ音
新しいイベントを作成し、CGEventPost で kCGSessionEventTap にポストし、null を返します。Opera: 無応答/システム ビープ音、Firefox: 無応答/システム ビープ音、Quicksilver: 正しい応答、Xcode: 無応答/システム ビープ音
新しいイベントを作成し、CGEventPost で kCGAnnotatedSessionEventTap に投稿し、null を返します。Opera: 正しい応答、Firefox: 正しい応答、Quicksilver: 無応答/システム ビープ音、Xcode: 無応答/システム ビープ音
新しいイベントを作成し、CGEventTapPostEvent で投稿し、null を返します。Opera: 無応答/システム ビープ音、Firefox: 無応答/システム ビープ音、Quicksilver: 正しい応答、Xcode: 無応答/システム ビープ音
新しいイベントを作成し、CGEventPost で kCGSessionEventTap に投稿し、新しいイベントを返します。Opera: 無応答/システム ビープ音、Firefox: 無応答/システム ビープ音、Quicksilver: 正しい応答、Xcode: 無応答/システム ビープ音
新しいイベントを作成し、CGEventPost で kCGAnnotatedSessionEventTap に投稿し、新しいイベントを返します。Opera: 正しい応答とシステム ビープ音、Firefox: 正しい応答とシステム ビープ音、Quicksilver: 正しい応答とシステム ビープ音、Xcode: 応答なし/2 回のシステム ビープ音
新しいイベントを作成し、CGEventTapPostEvent で投稿し、新しいイベントを返します。Opera: 無応答/システム ビープ音、Firefox: 無応答/システム ビープ音、Quicksilver: 正しい応答、Xcode: 無応答/システム ビープ音
(6) が最適ですが、ユーザーは、正しい応答に対する余分なシステム ビープ音について不満を漏らしています。これは、イベントの二重投稿が原因であると推測しています。他の組み合わせを試してみるか、他にどこを見ればよいかわかりません。誰でもガイダンスを提供できますか?コールバックからイベントを返すことと、注釈付きタップに投稿することの両方を行わずに結果を取得する方法はありますか?
長い質問で申し訳ありません。私はたくさんの実験をしてきました。
前もって感謝します
更新: これは、イベント タップを作成するために使用するコードです。
c++ - OS X の Carbon OpenGL アプリのフォント
OS X 用に開発している Carbon OpenGL アプリにテキスト レンダリングを追加しようとしています。
aglUseFont は非推奨になったため、テキストを追加し、グリフのプロパティ (幅、高さ、間隔など) を照会できる別の方法を探しています。
これまでに CoreText と ATSUI を調査しましたが、どちらもうまくいきませんでした。
私を助けてください!!
ありがとう!
c++ - OSXのCarbonテキストフィールドにテキストを設定するには?
次のようにCarbon APIを使用してテキストフィールドのテキストを設定しようとしています:
XCode の C++ コード テンプレートを使用しているため、GetWindowRef() は定義済みの TWindow クラスへの呼び出しです。OSErr の戻り値には noErr が返されますが、テキスト フィールドにはゴミしか含まれていません。テキストフィールドの属性を Unicode に設定するかどうかは問題ではありません。
ここで何が間違っているのでしょうか?
c - OSX の Carbon C アプリの例外ラッパー
OSX Carbon アプリケーションで C からのセグメンテーション違反を効率的にキャッチして処理するにはどうすればよいですか?
背景: OSX Carbon アプリケーションを作成しています。サードパーティからライブラリ関数を呼び出さなければなりません。スレッド化の問題により、関数がクラッシュすることがあります。これは通常、あるスレッドから自身を更新していて、別のスレッドから照会したときに内部的に古いポインターまたはハンドルを取得しているためです。関数は私にとってブラックボックスです。関数を呼び出すことができるようにしたいのですが、クラッシュした場合は「キャッチ」して別の戻り値を提供できるようにしたいと考えています。Windows では、単純な Visual C および Intel C コンパイラの __try{} と __except を使用できます。
OSX 用の同じ種類のクラッシュ キャッチャーを作成しようとしています。非常に大規模なアプリケーションで純粋な C を使用しています。私は関数を毎秒何百万回も呼び出すので、効率も非常に重要です。(印象的なことに、Windows __try() のオーバーヘッドは計り知れないほど小さいです!)
これが私が実験したものです:
1) C++ 例外。C++ 例外が segfault クラッシュをキャッチするかどうかはわかりません。私のアプリは現在 C です。ラッパーと #ifdefs を試して C++ にすることもできますが、これはアプリにとって大変な作業であり、C++ の例外がクラッシュをキャッチするとは思いません。
2) シグナル + setjump + longjmp. 私はこれがうまくいくと思った...それはそれが設計されているものです. しかし、私は SEGV エラー ハンドラをセットアップしました [実際、すべてのシグナルに対してセットアップしました!] が、クラッシュ中に呼び出されることはありません。raise(SEGV) を呼び出すときに、手動でテスト (および成功) できます。しかし、クラッシュは実際にはそれを呼び出していないようです。私の考えでは、CFM アプリケーションは完全な BSD シグナルにアクセスできず、サブセットのみにアクセスでき、Mach アプリケーションは Real Thing に必要であると考えています。
3) MPSetExceptionHandler。十分に文書化されていません。ハンドラを設定しようとしました。コンパイルして実行しましたが、segfault をキャッチしませんでした。
macos - OSXアプリケーションがすでに起動されているかどうかを検出する方法
通常、OS Xのアプリケーションバンドルは1回しか起動できませんが、バンドルをコピーするだけで、同じアプリケーションを2回起動できます。この可能性を検出して阻止するための最良の戦略は何ですか?
Windowsでは、この効果は、アプリケーションが起動時に名前付きリソースを作成し、名前付きリソースを作成できない場合は終了することで簡単に実現できます。これは、同じリソースをすでに作成している別のプロセスが実行されていることを示します。これらのリソースは、アプリケーションが終了すると、Windows上で信頼できる方法で解放されます。
これを調査したときに私が見た問題は、OS XのAPIがファイルシステムの状態を維持するため、Windowsで使用される戦略の信頼性が低くなることです。つまり、不適切な終了後にファイルが長引くと、アプリケーションがすでに実行されていることを誤って示す可能性があります。
OS Xで同じ効果を達成するために使用できるAPIは、posix、carbon、boostです。
アイデア?
macos - Mac OSX で DXVA を有効にする API はありますか
MAC OSX で Carbon ベースのビデオ再生アプリケーションを作成しましたが、グラフィック カードでサポートされている DXVA 機能を有効にする API はありますか? QuickTime SDK または Carbon API でサポートされていますか?