태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Windows IPC - Clipboard

Posted 2009/04/24 01:28


댓글 하나가 운영자에겐 커다란 힘이 됩니다!

------------------ 클립보드로 메모리를 전달하는 code --------------

ctrl + c(복사) 기능

 

#include <stdio.h>

#include <windows.h>

 

void main()

{

        char data[2048] = {0};

 

        gets(data);

 

        //----------------------------------------------------

        // 1. 먼저 클립보드로 전달한 메모리를 생성한다

        //     - 이동가능한 핸들 기반의 메모리

        // 핸들 기반 메모리는 GlobalAlloc으로만 만들 수 있다.

        HANDLE hMem = GlobalAlloc(GMEM_MOVEABLE, 1024);

 

        char *p = (char *)GlobalLock(hMem);  // 핸들 기반 메모리를

                                             // 포인터로 변경

 

        strcpy(p, data);

        GlobalUnlock(hMem);

 

        //----------------------------------------------------

        // 2. 이제 클립 보드를 열고 메모리를 전달한다.

        if(OpenClipboard(0))

        {

                EmptyClipboard();        // 기존 data를 제거한다.

 

                SetClipboardData(CF_TEXT,  // data의 종류

                                           // CF_TEXT : text 형태

                                 hMem);

 

                CloseClipboard();

        }

}

 

// 프로그램을 실행하여 문장을 작성하고 메모장을 띄어서 붙여넣기를

// 하면 된다.

 

 

----------------------- 클립보드에서 data얻기 ------------------------

ctrl + v(붙여넣기) 기능

 

#include <stdio.h>

#include <windows.h>

 

void main()

{

        // 클립 보드에서 data 얻기

        char data[4096] = {0};

 

        if(OpenClipboard(0))       // 0은 클립보드를 Open한 윈도우 핸들

        {

                HANDLE hMem = GetClipboardData(CF_TEXT);

 

                char *p = (char*)GlobalLock(hMem);

                strcpy(data, p);        // 사용자 버퍼에 옮겨 담는다

                GlobalUnlock(hMem);

                CloseClipboard();

        }

        printf("클립보드에서 가져온 data : %s\n", data);

}

위의 정보가 도움이 되셨나요? 그렇다면 댓글 하나만 남겨주세요.
댓글 하나가 운영자에겐 커다란 힘이 됩니다!

Write your message and submit
« PREV : 1 : ... 65 : 66 : 67 : 68 : 69 : 70 : 71 : 72 : 73 : ... 442 : NEXT »