2017-11-21 4 views
-1

私は.NETでコーディングしていませんが、プレゼンテーションコアアセンブリからSystem.Windows.Clipboardを使用してシステムのクリップボードにアクセスし、Excelにコピーされた情報を貼り付けています。System.Windows.Clipboardに貼り付けたアプリケーションを確認するにはどうすればいいですか?

Excelがクリップボードにコピーされると、System`Windows`Clipboard`GetText[]でテキストとして取得できます。このテキストは、私のコード(Wolfram Language)で解析して使用できるTSVファイル形式に従います。

System.Windows.Clipboardに、Excelが現在のデータを貼り付けるアプリケーションであるかどうかを問い合わせる方法はありますか?

私は、クリップボードのデータがExcelからのものかどうかを評価するために、コード内の貼り付け操作を制限したいと考えています。私はオンラインのMSDNのドキュメントページを見ましたが、この情報を与える方法に気づいていませんでした。

答えて

1

代わりにGetText(TextDataFormat.CommaSeparatedValue)を使用して、クリップボードの内容が実際にCSVであるかどうかを判断できるはずです。そうすれば、Excelがそれをコピーしたのか、Google DocsかOpenOffice Calcをコピーしたのかを気にする必要はありません。

+0

'TabSeparatedValue'列挙体はありますか?私は 'TextDataFormat' MSDNページに気づいていませんでしたが、時にはトリックがあります。私の懸案事項は、貼り付けにテキストセルを含めることができ、これらにカンマが付く可能性があるため、これらが余分な列を作成することが心配です。しかし、迅速なテストは、それがこの大丈夫を処理するかもしれないことを示すようです。しかし、私は懐疑的です。 – Edmund

+0

CSVには引用用の規定があり、セパレータや改行が入っているセルで使用されていなかった場合は驚きます。一般に、Mathematicaはセパレータがコンマかタブかどうかは気にしないでください。クリップボードからCSVを取得するための定義済みでサポートされた方法がありますが、TSVでは使用できないため、ここではCSVを簡単にする必要があります。 – Joey

+0

Excelの異なるタイプのコピーデータと協力しているようです。ありがとう。 – Edmund

1

System.Windows.Clipboardはソースを追跡しません。

この問題を回避するには、Form.ActiveControlを使用してExcelがアクティブかどうかを確認し、Ctrl + Cコマンドまたはコンテキストメニューからコピーをリッスンします。そのため、コピーされたデータのソースを探す代わりに、Excelを見て、データがコピーされているかどうかを確認しています。

ソースを気にせずにTSVを必要とする場合は、コピーしたデータを解析してTSVであるかどうかを確認し、適切に処理できます。

+0

Excelを監視するのは、.NET(Wolfram Languageを使用)でコーディングしていないため、Excelに深入りしたくないためです。私は現在、TSVとしてクリップボードにあるものを解析しようとしますが、それについてもっと訓練を受けようとしています。ご回答有難うございます。 (+1) – Edmund

+0

期待している値の型が分かっている場合は、X文字の後にスキーマと一致しない場合、値の解析を開始して解析を中断することができます。 – JRodge01

関連する問題