C++ panoya metin kopyalama

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 frameworklerden 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;
}

Sağ olun hocam bu kadar iyi C++ yi nasıl öğrendiniz? :D

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?
 
Son düzenleme:
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.
Hocam bunu input alarak nasıl yapabilirim?

Bu şekilde alabilirsin;

C++:
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;
}

Teşekkürler hocam.
 
Son düzenleme:
Yukarıda yazdığım fonksiyonu niye eklemedin, sadece main kısmını değiştireceksin. Ezbere iş yapma.

Ekledim hocam atarım kodları o ilk eklemden çalıştırmıştım hala olmuyor.

#İnclude<iOStream>
#include<windows.h>
#İnclude<string>
#İnclude<clocale>
Using namespace std;
Bool setclipboard( const std: String &data ) {
Auto size = data.size() + 1 ;
Auto pglobal = globalalloc( gmem_moveable, size);

İf (!pglobal) {

Return false;
}

Openclipboard(0);
EmptyClipboard();

Auto plock = globallock(pglobal);

İf (!plock) {
CloseClipboard();
Return false;
}

Copymemory( plock, data.c_str(), size );

Globalunlock( pglobal);

Setclipboarddata( cf_text, pglobal);

CloseClipboard();

Globalfree(pglobal);

Return true;
}
İnt main(){
Setlocale(lc_all,"turkish");
String output;
Cout<<"kopyalama mesajını yazınız:";
Cin>>output;
Getline(cin, output);
Setclipboard(output);

Return 0;
}

Hatalar çok fazla pglobal ile ilgili genelde.

İnt main içine koyuyorum gene hata veriyor.
 
Direk cin kullanma, sadece kelime okur, cümle almak için verdiğim yöntemi kullan.

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() {

    std::string input;

    std::cout << "input: ";
    getline(std::cin, input);
    
    SetClipboard(input);

    return 0;
}
 

Geri
Yukarı