консоль и буфер обмена

  • Автор темы Автор темы Seva
  • Дата начала Дата начала
S

Seva

вопрос в следующем: нужно, чтобы при открытии консольной программы в неё вставала строка из буфера обмена, затем, при нажатии <enter> строка обрабатывается программой и результат нужно "забить" в буфер обмена, пожалуйста, скажите, как реализовать работу с буфером обмена? большое спасибо!
 
Речь о Windows? Тогда так же, как и в оконном приложении: OpenClipboard и далее по тексту:
 
Спасибо! вроде, так и делал, но при компиляции почему-то ошибок много, мож, библиотеку какую надо включить?
 
Может.
Тонкий намек: текст ошибки позволит надеяться на более точный совет.
Намек потолще: если бы ты все это включил в первую формулировку, сэкономил бы время и себе и окружающим.
 
простите тормоза! вот, написал код, всё по книжке-самоучителю:
#include<iostream>
#include<string>
using namespace std;
int main(void)
{
string fromClipboard;
OpenClipboard();
{
HANDLE; hData=GetClipboardData(CF_TEXT);
char* chBuffer=((char*)GlobalLock(nData));
fromClipboard=chBuffer;
GlobalUnlock(nData);
CloseClipboard();
}
cout<<fromClipboard<<endl;
return 0;
}
при компиляции-9 ошибок:
все undeclared identifier:
1. OpenClipboard
2. HANDLE'
3,4. hData (2 раза-9 и 10 строки)
5. etClipboardData
6. CF_TEXT
7. GlobalLock
8. GlobalUnlock
9. CloseClipboard
почему так происходит? может, библиотеку надо какую включить? спасибо за помощь начинающему программисту!
 
HANDLE; hData=GetClipboardData(CF_TEXT); // точку с запятой надо убрать B)

далее
обязательно включение
#include <windows.h>
спрашиваем MSDN про GetClipboardData (http://msdn2.microsoft.com/en-us/library/ms649039.aspx)
в конце страницы примерно следующее:

unction InformationMinimum DLL Version user32.dll
Header Declared in Winuser.h, include Windows.h
Import library User32.lib
Minimum operating systems Windows 95, Windows NT 3.1
Unicode Implemented as Unicode version.

т.е. необходимо подключить биилиотеку "User32.lib"
делается так
#pragma comment(lib, "user32.lib")
 
ОГРОМНОЕ (и толстое) СПАСИБО!!! помогло! даже как-то стал разбираться в этом сайте (http://msdn.microsoft.com)... обучение продолжается!
 
думал, что дальше сам разберусь, наивный, в общем, написал код, который должен выводить текс в буфер...:
#include<iostream>
#include<string>
#include <windows.h>

#pragma comment(lib, "user32.lib")
#pragma comment(lib, "Framedyn.lib")
using namespace std;
int main(void)
{
string source;

if(OpenClipboard(0))
{
HGLOBAL hgBuffer;
char* chBuffer;
EmptyClipboard();
hgBuffer= GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1);
chBuffer= (char*)GlobalLock(hgBuffer);
strcpy(chBuffer, LPCSTR(source));
GlobalUnlock(hgBuffer);
SetClipboardData(CF_TEXT, hgBuffer);
CloseClipboard();
}
return 0;
}
при компиляции выдаёт 2 ошибки:
error C2039: 'GetLength' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
C:\Program Files\Microsoft Visual Studio\MyProjects\ðåîáìåí\buffer.cpp(19) : error C2440: 'type cast' : cannot convert from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Error executing cl.exe.
уже не один час просидел в мастдае- никак не пойму в чём дело, уже и библиотеки добавил, которые на мастдае и нашёл, а всё равно не пойму- почему компилятор не может обратиться по адресу..., почему не может конвертировать и т. д.? пожалуйста, помогите разобраться, конечно, не жизненно важно, но всё-таки хотелось бы понять. на будущее, так сказать! спасибо! пс. а что означает последняя строка в списке ошибок? а то пишет, что ошибок- 2, а пишет-то, пишет!
 
std::string не реализует метода GetLength. дли строки берется через size();
LPCSTR(source) логично что такое приведение не будет рабоать. эзай source.c_str()
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!