web-dev-qa-db-ja.com

クリップボードの内容とそのMIMEタイプを表示できるアプリケーション?

クリップボードの内容の詳細を表示できるアプリケーションを探しています。

一部のデータをクリップボードにコピーすると、データは特定のMIMEタイプに関連付けられます。通常のテキストはtext/plain、バイナリデータはapplication/octet-streamなどとしてコピーできます。バイナリデータをコピーして独自のMIMEタイプとしてタグ付けするアプリケーションがあり、それがどのタイプであるかを確認したいと思います。 、およびそれが持つデータ。

ターゲットはクリップボードオブジェクトのMIMEタイプがtext/plainであることを想定しているため、クリップボードのコンテンツをターゲットのメモ帳のようなアプリケーションに貼り付けることはできません。

クリップボードに現在存在するすべてのMIMEタイプのオブジェクトを列挙するアプリケーションでも十分です。

9
antonone

OK、私は実際に私が必要なことをするいくつかのコードを書きました。 Qtではとても簡単です。

建物情報はこの投稿の下部にあります。

xclipshow.cpp:

#include <QApplication>
#include <QTimer>
#include <QClipboard>
#include <QMimeData>
#include <QDebug>
#include <QStringList>

class App: public QObject {
    Q_OBJECT
private:
    void main();
public:
    App(): QObject() { }
public slots:
    void qtmain() { main(); emit finished(); }
signals:
    void finished();
};

void App::main() {
    QClipboard *clip = QApplication::clipboard();

    for(QString& formatName: clip->mimeData()->formats()) {
        std::string s;
        s = formatName.toStdString();

        QByteArray arr = clip->mimeData()->data(formatName);
        printf("name=%s, size=%d: ", s.c_str(), arr.size());

        for(int i = 0; i < arr.size(); i++) {
            printf("%02x ", (unsigned char) arr.at(i));
        }

        printf("\n");
    }
}

int main(int argc, char **argv) {
    QApplication app(argc, argv);
    App *task = new App();
    QObject::connect(task, SIGNAL(finished()), & app, SLOT(quit()));
    QTimer::singleShot(0, task, SLOT(qtmain()));
    return app.exec();
}

#include "xclipshow.moc"

CMakeLists.txt:

cmake_minimum_required(VERSION 3.0.0)
project(xclipshow)
find_package(Qt5Widgets)
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(SRC
    xclipshow.cpp)

add_definitions(-std=c++11)
add_executable(xclipshow ${SRC})
qt5_use_modules(xclipshow Widgets Core)

@slmのコメントで要求された建物情報:使用しているシステムによって異なります。このコードをコンパイルするには、Qt5とCMakeが必要です。両方がある場合は、実行するだけです。

BUILD_DIR=<path to an empty temporary dir, which will contain the executable file>
SRC_DIR=<path to the directory which contains xclipshow.cpp>

$ cd $BUILD_DIR
$ cmake $SRC_DIR
$ make

または、FreeBSDを使用している場合は「gmake」、Windowsを使用している場合は「mingw32-make」など。

Qt5またはCMakeがない場合は、Qt4と手動コンパイルを使用して回避することができます。

$ moc xclipshow.cpp > xclipshow.moc
$ g++ xclipshow.cpp -o xclipshow `pkg-config --cflags --libs QtGui` -I. --std=c++11

無効な--std=c++11オプションに関する情報を取得している場合は、代わりに--std=c++0xを試して、コンパイラのアップグレードを検討してください;)。

3
antonone

xclipを使用します:

xclip -o -t TARGETS

利用可能なすべてのタイプを表示します。例えば:

  1. あなたのウェブブラウザから何かをコピーする
  2. 利用可能なタイプを調査する
 $ xclip -o -t TARGETS 
 TIMESTAMP 
 TARGETS 
 MULTIPLE 
 text/html 
 text/_moz_htmlcontext 
 text/_moz_htmlinfo 
 UTF8_STRING 
 COMPOUND_TEXT 
 TEXT 
 STRING 
 text/x-moz-url-priv 
  1. 興味のあるもののコンテンツを取得します:xclip -o -t text/html
6
neo