Clipboard

Liest und schreibt Text aus der und in die Windows-Zwischenablage.

Archivierter Inhalt: Dieser Quelltext ist derzeit inaktiv und möglicherweise veraltet, nicht mehr gewartet oder funktioniert nicht mehr.

Mit diesen Funktionen kann man einfach Text aus der Windows-Zwischenablage auslesen oder darin speichern. Der Text wird dafür in einem einfach handhabbaren CString-Objekt gespeichert und man muss sich nicht mit den komplizierten Funktionsaufrufen und der Speicherverwaltung beschäftigen.

Eine CString-Implementierung ist ebenfalls verfügbar.

Hinweis zur Codequalität: Der Inhalt auf dieser Seite ist möglicherweise etwas angestaubt. Ich nutze C++ seit längerer Zeit nicht mehr, möchte aber die vorhandenen und früher einmal nützlichen Funktionen weiterhin anbieten.

Download

Clipboard.cpp1,5 KiBQuelltext der Clipboard-Funktionen

Inhalt der Datei Clipboard.cpp:

// Reads and writes text from or to the Windows clipboard.
//
// Clear the clipboard with the EmptyClipboard() function.
//
// Dependencies: CString
//
// Web: http://unclassified.software/source/clipboard

// Gets the current clipboard text contents.
//
CString GetClipboardText()
{
    HANDLE string;
    char ret_text[4096];

    // open clipboard for task
    if (OpenClipboard(0))
    {
        // try reading if successful
        if ((string = GetClipboardData(CF_TEXT)) != 0)
        {
            strncpy(ret_text, (char *) string, 4096);
            ret_text[4095] = '\0';
            CloseClipboard();
            return ret_text;
        }
        else
        {
            CloseClipboard();
            return "";
        }
    }
    return "";
}

// Sets the clipboard contents to the specified text.
//
// Returns true on success, otherwise false.
//
bool CopyToClipboard(CString strText)
{
    bool bRet = true;

    if (strText.GetLength() > 0)
    {
        HGLOBAL hGlobalMemory;
        LPVOID lpGlobalMemory;

        // allocate global memory
        hGlobalMemory = GlobalAlloc(GHND, strText.GetLength() + 1);
        if (hGlobalMemory)
        {
            // lock block to get a pointer to it
            lpGlobalMemory = GlobalLock(hGlobalMemory);
            // copy string to the block
            lpGlobalMemory = lstrcpy((char *) lpGlobalMemory,
                                     strText.GetBuffer(strText.GetLength()));
            // free memory
            GlobalUnlock(hGlobalMemory);

            // open clipboard for task
            if (OpenClipboard(0))
            {
                EmptyClipboard();
                // try writing if successful
                if (!SetClipboardData(CF_TEXT, hGlobalMemory))
                {
                    // error writing to clipboard
                    bRet = false;
                }
                CloseClipboard();
            }
        }
    }
    return bRet;
}

Lizenz und Nutzungsbedingungen

Diese Software ist als kompilierte Version und im Quelltext frei und uneingeschränkt verfügbar („Public Domain“). Ich gebe keine Garantie, auch nicht auf Lauffähigkeit oder Benutzbarkeit. Die Nutzung erfolgt auf eigene Gefahr, ich hafte nicht für Schäden, die durch sachgemäßen oder unsachgemäßen Gebrauch dieses Programms entstehen.

Statistische Daten

  • Erstellt am 2007-04-02.