클립 보드 내용 및 MIME 유형을 표시 할 수있는 응용 프로그램?


9

클립 보드의 내용에 대한 세부 정보를 보여줄 수있는 응용 프로그램을 찾고 있습니다.

일부 데이터를 클립 보드에 복사하면 데이터가 특정 MIME 유형과 연결됩니다. 일반 텍스트는 text/plain, 이진 데이터를 다른 이름으로 복사 할 수 있습니다. 이진 데이터를 복사 application/octet-stream하여 자체 MIME 유형으로 태그 지정하는 응용 프로그램이 있으며 그 유형과 유형을 확인하고 싶습니다.

대상은 클립 보드 객체의 MIME 유형이 예상되기 때문에 클립 보드 내용을 대상 메모장과 같은 응용 프로그램에 붙여 넣을 수는 없습니다 text/plain.

클립 보드에 현재 존재하는 모든 MIME 유형의 객체를 열거하는 응용 프로그램으로도 충분합니다.

답변:


6

사용 xclip:

xclip -o -t TARGETS

사용 가능한 모든 유형을 확인하십시오. 예를 들면 다음과 같습니다.

  1. 당신의 웹 브라우저에서 무언가를 복사
  2. 사용 가능한 유형 조사
$ xclip -o -t 대상
타임 스탬프
대상
배수
텍스트 / html
text / _moz_html 문맥
text / _moz_htmlinfo
UTF8_STRING
COMPOUND_TEXT
본문
끈
텍스트 / x-moz-url-priv
  1. 관심있는 콘텐츠를 얻으십시오. xclip -o -t text/html

3

좋아, 실제로 필요한 것을 수행하는 코드를 작성했습니다. 좋은 점은 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대신 시도 하고 컴파일러 업그레이드를 고려하십시오.;).


1
이 솔루션을 게시 해 주셔서 감사합니다. 향후 방문자를 위해 컴파일하는 방법에 대해 조금 더 자세히 설명해 주시겠습니까?
slm

2
: @slm, antonone는, 내가 / 간단하게 코드를 단축 한, 또한 그런 식으로 컴파일하는 것이 더 쉬울 수 있어야 gist.github.com/gsauthof/c955f727606f4a5b0cc2
maxschlepzig
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.