애플리케이션이 클립보드 콘텐츠와 해당 MIME 유형을 표시하도록 허용하시겠습니까?

애플리케이션이 클립보드 콘텐츠와 해당 MIME 유형을 표시하도록 허용하시겠습니까?

클립보드 내용의 세부정보를 표시할 수 있는 애플리케이션을 찾고 있습니다.

일부 데이터가 클립보드에 복사되면 해당 데이터는 특정 MIME 유형과 연결됩니다. 일반 텍스트는 text/plain, 바이너리 데이터 application/octet-stream등을 복사할 수 있습니다. 바이너리 데이터를 복사하여 자체 MIME 유형으로 표시하는 애플리케이션이 있는데, 그 유형이 무엇인지, 어떤 데이터가 있는지 확인하고 싶습니다.

대상에서는 클립보드 개체의 MIME 유형이 text/plain.

또한 애플리케이션이 현재 클립보드에 있는 모든 MIME 유형 객체를 열거하는 것만으로도 충분합니다.

답변1

사용 xclip:

xclip -o -t TARGETS

사용 가능한 모든 유형을 확인하세요. 예를 들어:

  1. 웹 브라우저에서 일부 콘텐츠 복사
  2. 사용 가능한 유형 조사
$ xclip -o -t 대상
타임스탬프
표적
많은 종류의
텍스트/html
text/_moz_html컨텍스트
text/_moz_html정보
UTF8_STRING
복합 텍스트
텍스트
텍스트/x-moz-url-priv
  1. 관심 있는 콘텐츠를 얻으세요:xclip -o -t text/html

답변2

좋습니다. 실제로 필요한 작업을 수행하는 일부 코드를 작성했습니다. 좋은 소식은 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대신 시도해 보고 컴파일러 업그레이드를 고려하세요.

관련 정보