windowsHangi işletim sistemi için istiyorsun?
#include <iostream>
#include <string>
#include <windows.h>
bool SetClipboard( const std::string &data ) {
auto size = data.size() + 1 ;
auto pGlobal = GlobalAlloc( GMEM_MOVEABLE, size);
if (!pGlobal) {
return false;
}
OpenClipboard(0);
EmptyClipboard();
auto pLock = GlobalLock(pGlobal);
if (!pLock) {
CloseClipboard();
return false;
}
CopyMemory( pLock, data.c_str(), size );
GlobalUnlock( pGlobal);
SetClipboardData( CF_TEXT, pGlobal);
CloseClipboard();
GlobalFree(pGlobal);
return true;
}
int main() {
SetClipboard("test message!");
return 0;
}
Bu tarz işler işletim sistemi tarafından yürütüldüğünden sistemin kendi API'lerini kullanmalısın ya da uygun çapraz platform Framework'lerden de yararlanabilirsin.
Windows API için şöyle bir örnek karaladım. API detayları için link; Clipboard Reference - Win32 apps
C++:#include <iostream> #include <string> #include <windows.h> bool SetClipboard( const std::string &data ) { auto size = data.size() + 1 ; auto pGlobal = GlobalAlloc( GMEM_MOVEABLE, size); if (!pGlobal) { return false; } OpenClipboard(0); EmptyClipboard(); auto pLock = GlobalLock(pGlobal); if (!pLock) { CloseClipboard(); return false; } CopyMemory( pLock, data.c_str(), size ); GlobalUnlock( pGlobal); SetClipboardData( CF_TEXT, pGlobal); CloseClipboard(); GlobalFree(pGlobal); return true; } int main() { SetClipboard("test message!"); return 0; }
Bu tarz işler işletim sistemi tarafından yürütüldüğünden sistemin kendi API'lerini kullanmalısın ya da uygun çapraz platform Framework'lerden de yararlanabilirsin.
Windows API için şöyle bir örnek karaladım. API detayları için link; Clipboard Reference - Win32 apps
C++:#include <iostream> #include <string> #include <windows.h> bool SetClipboard( const std::string &data ) { auto size = data.size() + 1 ; auto pGlobal = GlobalAlloc( GMEM_MOVEABLE, size); if (!pGlobal) { return false; } OpenClipboard(0); EmptyClipboard(); auto pLock = GlobalLock(pGlobal); if (!pLock) { CloseClipboard(); return false; } CopyMemory( pLock, data.c_str(), size ); GlobalUnlock( pGlobal); SetClipboardData( CF_TEXT, pGlobal); CloseClipboard(); GlobalFree(pGlobal); return true; } int main() { SetClipboard("test message!"); return 0; }
Hocam bunu input alarak nasıl yapabilirim?
int main() {
std::string input;
std::cout << "input: ";
getline(std::cin, input);
SetClipboard(input);
return 0;
}
Yazdıklarım C++'dan ziyade işletim sisteminin API'lerini kullanmak yoksa afili bir C++ özelliği kullanmadım. Üzerinde program geliştirdiğin sistemi iyi tanıman gerek, mimari bilmeden bu tarz ıvır zıvır şeyleri herhangi bir dil bilgisiyle yazamazsın.
Bu şekilde alabilirsin;
C++:int main() { std::string input; std::cout << "input: "; getline(std::cin, input); SetClipboard(input); return 0; }
Yukarıda yazdığım fonksiyonu niye eklemedin, sadece main kısmını değiştireceksin. Ezbere iş yapma.
#include <iostream>
#include <string>
#include <windows.h>
bool SetClipboard( const std::string &data ) {
auto size = data.size() + 1 ;
auto pGlobal = GlobalAlloc( GMEM_MOVEABLE, size);
if (!pGlobal) {
return false;
}
OpenClipboard(0);
EmptyClipboard();
auto pLock = GlobalLock(pGlobal);
if (!pLock) {
CloseClipboard();
return false;
}
CopyMemory( pLock, data.c_str(), size );
GlobalUnlock( pGlobal);
SetClipboardData( CF_TEXT, pGlobal);
CloseClipboard();
GlobalFree(pGlobal);
return true;
}
int main() {
std::string input;
std::cout << "input: ";
getline(std::cin, input);
SetClipboard(input);
return 0;
}
Bu sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.