Zwischenablage
-
hi,
wie kann ich etwas in die zwischenablage reinkopieren? z.b.:string bla="hallo du da";
*zwischenablage*<<bla;würd mich über einen bsp code freuen!
mfg kenny
-
Ich denke, darüber kannst du dich im WinAPI-Forum freuen.
-
#include <windows.h> BOOL SetClipboardText(LPCTSTR lpszInputText) { if(OpenClipboard(NULL) == FALSE) { return FALSE; } if(EmptyClipboard() == FALSE) { CloseClipboard(); return FALSE; } HGLOBAL hMemory = GlobalAlloc(GMEM_MOVEABLE, (lstrlen(lpszInputText) + 1) * sizeof(TCHAR)); if(hMemory == NULL) { CloseClipboard(); return FALSE; } LPTSTR lpszText = (LPTSTR) GlobalLock(hMemory); if(lpszText == NULL) { GlobalFree(hMemory); CloseClipboard(); return FALSE; } if(lstrcpy(lpszText, lpszInputText) == NULL) { GlobalUnlock(hMemory); GlobalFree(hMemory); CloseClipboard(); return FALSE; } #ifdef UNICODE if(SetClipboardData(CF_UNICODETEXT, hMemory) == NULL) { #else if(SetClipboardData(CF_TEXT, hMemory) == NULL) { #endif GlobalUnlock(hMemory); GlobalFree(hMemory); CloseClipboard(); return FALSE; } if(GlobalUnlock(hMemory) == FALSE) { if(GetLastError() != NO_ERROR) { GlobalFree(hMemory); CloseClipboard(); return FALSE; } } if(GlobalFree(hMemory) != NULL) { CloseClipboard(); return FALSE; } if(CloseClipboard() == FALSE) { return FALSE; } return TRUE; }
[ Dieser Beitrag wurde am 02.08.2002 um 09:53 Uhr von Netter Troll editiert. ]
-
thx@netter troll
hab mir das irgendwie einfacher vorgestellt
-
@Kenny: Einfacher wird es nur, wenn dein Programm intern eine eigenen Zwischenablage benützt - hier benützt es die Windowszwischenablage. Eine eigene lässt sich leicht in Form eines std::string aus der Header-Datei <string> realisieren - soweit sie keine Bilder enthalten können muss.
MfG SideWinder
-
Hallo! Wie bekomm ich es bei diesem Beispiel zusammen, dass man mitteln "cin" etwas eingibt ( z.b Hallo) und dass dann dies in die Zwischenablage kopiert wird.
danke Shark
-
#include <iostream> #include <string> // ... int main() { std::string text; std::cin >> text; SetClipboardText(text.c_str()); }
-
danke, doch wenn ich etwas eingebe dass aus mehreren wörtern besteht (z.B. hallo ich heisse xy) dann wird nur das erste wort in die Zwischenablage kopiert! MAch ich da was falsch??
mfg Shark
-
Nein, da macht cin etwas "falsch" - es liest nur bis zum ersten Whitespace-Zeichen.
Schau dir die Funktion std::getline() an! (Achtung nicht: cin.getline()!).
MfG SideWinder
-
danke, funktioniert hervorragend
mfg Shark
-
kann ich dieses beispiel auch irgendwie dazu verwenden etwas aus der ZWischenablage in die Konsole einfügen??? Wenn ja, bitte ich um eine Antwort
mfg Shark
-
Sowas findet man um einiges schneller wenn man gleich selbst in der MSDN nachschlägt - gibts ja auch Online :).
GetClipboardText() dürfte es sein - gleich mal ne Anmerkung: Meistens gibts in der WinAPI zu allen SetXXX() auch ein GetXXX() ;).
MfG SideWinder
-
äm danke, doch muss ich jetzt nur statt SetClipboardText() GetClipboardText() nehmen?? blick da irgendwie nicht ganz durch...
mfg Shark
-
Am besten suchst du jetzt mal nach GetClipboardText() in der Online MSDN. Da dürftest du die Syntax finden und dann dürfte es eigentlich kein Problem mehr sein
-
hmmm... es ist kein GetClipboardText() in der MSDN bekannt?!?!
mfg Shark
-
LOL, was es doch für unterschiede bei den Codes gibt - Ich probier's auch mal aus
-
@shark
Aber SetClipboardText() schon, oder? Da dürfte dann normalerweise auch das Gegenstück als Verweis da sein *hoffe*.
-
Die API Funktion heißt SetClipboardData
-
Aahhh darin liegt der Hund begraben
-
??? wer kann mich da mal aufklären??
Weiß jemand zumindest zu welche headerdatei GetClipboardText() gehört??
und gibt es irgendwo auch ein deutsches MSDN??mfg SHark