본문 바로가기
컴퓨터/MFC_API

클립보드(clipboard) 내용 가져오기

by adnoctum 2009. 12. 9.
클립보드를 열고, 데이터를 얻어 오고, 클립보드를 닫는 순서로 진행한다.

if(OpenClipboard() == false){

    return false; // 클립보드를 열지 못했다. 더이상 작업을 진행할 수 없다.

}

 

/// 클립 보드 내용을 얻어 가는 부분..

// 클립보드의 메모리 공간을 텍스트로 접근 설정.

HGLOBAL hglobal = GetClipboardData(CF_TEXT);

// 메모리를 잠가 놓고,

LPTSTR lptstr = (LPTSTR)GlobalLock(hglobal);

// CString 형 변수를 메모리로부터 만들고,

CString str(lptstr); 


// begin of program specific jobs

// --- 적당한 작업을 해준다. (여기선 텍스트에 약간의 변형을 줌.

str.Replace(":","..");

str.Replace("\n"," ");

str.Replace("\r"," ");

str.Replace("  "," ");

str.Replace("/","_");

str += "\0";

// end of program specific jobs.

 

// 변형된 내용을 다시 클립보드로 복사해 넣는 부분의 시작.

int length = str.GetLength()+1;
// 메모리 주소를 얻어서,

HGLOBAL hNewTitle = GlobalAlloc(GMEM_MOVEABLE, length );

// string 으로 casting 해서 잡아 놓고,

LPTSTR lptstrNewTitle = (LPTSTR)GlobalLock(hNewTitle);

// 위에서 수정한 것을 복사해 놓고,

CopyMemory(lptstrNewTitle, str.operator LPCTSTR(), length );

// 잡았던 메모리를 풀어 준다.

GlobalUnlock(hNewTitle);


// 클립보드의 기존 데이터를 없애고,

EmptyClipboard();

// 새로 설정해 놓은 메모리를 클립보들에 밀어 넣는다.

SetClipboardData(CF_TEXT, hNewTitle); 

// 변형된 내용을 다시 클립보드로 복사해 넣는 부분의 끝.


 

// 잡아 놓았던 메모리를 풀어 놓고,

GlobalUnlock(hglobal); 

// 클립보드를 닫는다.

CloseClipboard();




* 사용된 프로그램
+ TitleMod