問題タブ [nspasteboard]
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.
cocoa - NSFileContentsPboardTypeではなくUTIを使用してNSPasteboardにファイルのコンテンツを配置しますか?
いくつかの画像とテキストを含むリッチテキスト ファイルがあります。私の Cocoa アプリでは、そのファイルの内容をユーザーが他のアプリケーション (TextEdit、Mail など) にドラッグできるように、そのファイルの内容を配置しようとしていますNSDragPboard
。
1 つの使用例は次のとおりです。リッチテキスト ファイルに電子メール テンプレートが含まれており、ユーザーがコンテンツを新しいメール メッセージにドラッグします。
私は成功せずにこれを試しました:
Apple のドキュメントには次のように書かれています。
ファイル filename の内容をレシーバーに書き込み、データが NSFileContentsPboardType型であり、ファイルの拡張子 (ファイル拡張子が渡されたときに NSCreateFileContentsPboardType 関数によって返される) に適した型であると宣言します。
ClipboardViewer アプリでは、いくつかのデータ型を確認できますNXFileContentsPboardType
。ただし、Mail や TextEdit などのアプリでは、そのデータ型を削除できません。
リッチテキスト コンテンツを手動でクリップボードにコピーすると (Control + C)、必要なさまざまなデータ型がすべて表示されます。
public.rtf
public.utf8-plain-text
NSStringPboardType
- ...
では、どうすればプログラムで自分でそれを行うことができますか? さまざまな UTI タイプをすべて把握し、それに応じたデータを設定する必要がありますか? その為だと思ってい[pboard writeFileContents:path]
たのに…
ありがとう、マーク。
編集:
進行中...これは.rtf
ファイルでは機能しますが、ファイルでは機能しません.txt
:
ファイルの場合.txt
、ペーストボード上のデータ タイプはpublic.text
. ただし、TextEdit と Mail.app では、そのタイプを削除できません。public.rtf
リッチテキストが正常に機能する場合...
cocoa - 最初にペーストボードの内容を保存し、後で復元する方法は?
他のアプリから選択をコピーする必要がある顔のない Mac OS X アプリがあります。CMD+C キーストロークをシミュレートすることでこれを実現します。それは完全に機能します。しかし、重大な副作用があると思います。ユーザーの許可なく、ユーザーのペーストボードを上書きします。そのため、選択範囲をコピーする前に、ペーストボードのコンテンツを保存してから復元する必要があると考えていました。誰かがヒント、サンプルコードを教えてもらえますか?
cocoa - NSPasteboard:ドラッグアンドドロップセッションを開始したアプリケーションの名前を取得する
私のCocoaアプリは、他のアプリケーションからドラッグ操作を受け取ることができます。
他のどのアプリケーションがドラッグを開始したか(つまり、データの送信元)を判別する方法はありますか?
実装しまし- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
たが、ドラッグする情報オブジェクトにこの種の情報が見つかりませんでした。
ユースケース:ユーザーはSafariでテキストを選択し、それをアプリにドロップできます。どのウェブサイトからテキストが貼り付けられたかを教えてください。
ありがとう!
objective-c - nspasteboardから文字列を取得します
長い夜だったかもしれませんが、クリップボードの文字列を確認する方法がわかりません。
NSPasteboardのドキュメントを読んでいます。
誰かが私を助けることができますか?
cocoa - ファイル、rtfd、カスタム タイプを含むペーストボード上の複数のタイプ (Mac OS X 10.6)
10.6 の新しいペーストボード API は、UTI に慣れるとうまく機能するように見えますが、クラックできない状況に遭遇しました: ファイルのドラッグと組み合わせて複数のデータ型を宣言しているとしたら?
新しいペーストボードが機能する方法を確認してください。setString、setData、setPropertyList、または writeObjects を使用してデータを配置します。最初の 3 つは、受信者が必要な表現を選択できるように、事前に UTI を指定する必要があります。
最後の writeObjects には、便利なクラス NSPasteboardItem などの NSPasteboardWriting 準拠オブジェクトの配列が必要です。
問題は、Finder がペーストボードに追加された URL をリテラル URL として解釈するため、ファイルをドラッグするのではなく、ファイルへの URL を作成することです。
URL の NSPasteboardItem を作成する (私が見つけた) 方法はありません。それはこれを残します(ヘッダーから):
ただし、URL と NSPasteboard アイテムを混在させると、結果は機能しません。
誰かがこれらの両方を一緒に達成する何かを書くことができれば、それは素晴らしい例だと思います.
テストは次のとおりです。
ドラッグして TextEdit にテキストを挿入する必要があります
Finder にドラッグすると、ファイルが追加されます。
objective-c - すべての属性コンテンツをNSTextViewからNSPasteboardにコピーする方法
将来、コンテンツをNSTextViewからクリップボードに自動コピーして、エディターに貼り付けるようにしようとしています。NSTextViewには、プレーンで属性のあるテキストと画像があります。
すべてを選択し、CMD + Cを押してコピーし、リッチエディター(Mail.appなど)に貼り付けると、すべて問題ありません。
CocoaDev.comでRTFをコピーするためのこのソリューションを見つけました
しかし、このソリューションを介してコンテンツをコピーしようとしているときに、エディターに貼り付けても何も起こりません。
NSTextView textStorageからNSPasteboardに画像付きの属性付きテキストをコピーするにはどうすればよいですか?
cocoa - NSPasteboard と単純なカスタム データ
NSPasteboard を動作させるのに非常に苦労しているので、理解が不足していることをお許しください。
私が望むのは、アプリケーション専用の NSUInteger 値をペーストボードに書き込んで取得する簡単な方法だけです。私がしているのは、アプリケーション内でアイテムをドラッグ ドロップすることだけなので、ペーストボードで必要なのはアイテムの ID だけです。
私は NSPasteboardItemDataProvider と NSPasteboardItem、および NSData を調べてみましたが、それらはすべて非常に単純なことを行うための複雑な方法です。実際、私はとても単純なことを行う正しい方法が何かわかりません.周りのすべてのサンプルは文字列型、またはもっと複雑なものを扱っているようです. [NSMutable SetData] セレクターも存在しないようですが、コードに警告はありません。
誰かが私を正しい方向に向けることができれば、とても感謝しています. :)
編集: [dragImage ...] を使用して、ドラッグ操作を支援しています。
macos - Mac OSX / cocoa - NSPasteBoard アイテムの生データを含むロケーション パス文字列を取得する
Web ブラウザーからアプリのドック アイコンに項目をドラッグできるアプリがあります。
Web から画像をドラッグして [pBoardItem dataForType:NSPasteboardTypePNG]; で生データを取得すると、必要な生の画像データを取得しますが、画像が取得された場所 (つまり、 http://www.somedomain.com/somedir/someimage.png ) またはそのローカル (/ Users/somedude/photos/myphoto.png)。
パスの位置情報を取得するにはどうすればよいですか?
前もって感謝します。
[編集 ** ここで stringForType に関して行った誤ったコメントを削除しました]
cocoa - NSImage→NSURL→カスタムオブジェクト
私のアプリケーションはNSImageオブジェクト(ペーストボードから来る)からカスタムオブジェクトを作成しようとしていますが、現在のプロセスは画像のURLのみを取り込んでいます。
この時点で大きな変更を避けたいので、NSImageのURLを取得する方法があるかどうか疑問に思いました(URLからNSImageを初期化できるので、それは合理的な期待のようです)
ありがとう。
編集(回答)
少し違うルートに行きました。ペーストボードのコンテンツをNSImageの配列として取得する代わりに、NSURLの配列として取得しました。その後、それらを自分のプロセスにフィードできます。
menu - NSPasteboardを使用してアプリケーション間でデータを転送する方法(コンテキストメニューを使用)
「NSPasteboardオブジェクトは、ペーストボードサーバーとの間でデータを転送します。サーバーは、実行中のすべてのアプリケーションで共有されます。サーバーには、ユーザーが切り取ったりコピーしたりしたデータや、あるアプリケーションが別のアプリケーションに転送したい他のデータが含まれています。NSPasteboardオブジェクトはサーバーおよびすべてのペーストボード操作に対するアプリケーションの唯一のインターフェース。
NSPasteboardオブジェクトは、各アプリケーションの[サービス]メニューにリストされているアプリケーションとサービスプロバイダー間でデータを転送するためにも使用されます。ドラッグペーストボード(NSDragPboard)は、ユーザーがドラッグしているデータを転送するために使用されます。」
私はこれをアップルのNSPasteboardドキュメントで見つけました。これまでのところ、私は単純なコピーと貼り付けの目的でペーストボードを使用する方法しか知りません。私が知りたいのは、ドラッグアンドドロップの代わりにコンテキストメニューを使用して、コピーアンドペースト以外の目的のデータをアプリケーション間でペーストボードサーバーを介して転送する方法です。たとえば、ユーザーが単語を右クリックしてコンテキストメニューの[辞書で検索]をクリックすると、その単語は(おそらく)ペーストボードを介して辞書アプリに送信されます。
ユーザーが「辞書で検索」を使用した単語を保存するペーストボードサーバーのデータにアクセスする方法を示す概念実証アプリを誰かがデモンストレーションできますか?