小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使用 WM_COPYDATA 在進(jìn)程間共享數(shù)據(jù)

 tianht 2015-06-10
轉(zhuǎn):http://www.cnblogs.com/nbsofer/archive/2012/09/11/2680980.html

消息作用:
    在進(jìn)程間共享數(shù)據(jù)(內(nèi)部通過創(chuàng)建內(nèi)存映射文件)

消息介紹:
需要用到的數(shù)據(jù)結(jié)構(gòu)/類型:
typedef struct tagCOPYDATASTRUCT {
    ULONG_PTR dwData;
    DWORD cbData;
    PVOID lpData;
} COPYDATASTRUCT, *PCOPYDATASTRUCT;

結(jié)構(gòu)體參數(shù)說(shuō)明:
    dwData(ULONG)   保存一個(gè)數(shù)值, 可以用來(lái)作標(biāo)志等
    lpData(void*)   待發(fā)送的數(shù)據(jù)的起始地址(可以為NULL)
    cbData(DWORD)   待發(fā)送的數(shù)據(jù)的長(zhǎng)度
    
消息的參數(shù):
    hWnd:   接收數(shù)據(jù)的窗口的句柄
    wParam: 傳送該數(shù)據(jù)的窗口句柄(NULL也無(wú)所謂)
    lParam: COPYDATASTRUCT類型變量的地址
    
使用示例:
    COPYDATASTRUCT cds;
    char msg[] = "女孩不哭";
    cds.dwData = 0;
    cds.lpData = msg;
    cds.cbData = strlen(msg)+1; //字符串請(qǐng)記得把'\0'加上, 不然就錯(cuò)了, 這里是ANSI字符串
    SendMessage(FindWindow("nbsg_class", NULL), WM_COPYDATA, 0, (LPARAM)&cds);
    
接收端對(duì)該消息的一種可能處理:
    case WM_COPYDATA:
    {
        //這里的消息應(yīng)該是以 '\0' 結(jié)尾的字符串
        COPYDATASTRUCT* pCDS = (COPYDATASTRUCT*)lParam;
        MessageBox(hWnd, pCDS->lpData, "", MB_OK);
        return TRUE;
    }
    
說(shuō)明:  
    發(fā)送的數(shù)據(jù)可以是任意的, 我上面只是為了用MessageBox做測(cè)試, 所以發(fā)送的是以'\0'的字符串.
    如果接收消息的應(yīng)用程序處理了該消息, 它應(yīng)該返回 TRUE , 否則返回 FALSE. lpData 指向的內(nèi)存應(yīng)該是一段"數(shù)據(jù)", 就是說(shuō)里面不應(yīng)該有指向該程序某數(shù)據(jù)的指針. 因?yàn)?SendMessage 在處理 WM_COPYDATA 時(shí), 只是把 lpData 指向的 cbData 個(gè)字節(jié)復(fù)制到共享內(nèi)存中. 當(dāng)前進(jìn)程私有的指針就算是被發(fā)送到接收程序, 其也是無(wú)法訪問的. 當(dāng)該消息正當(dāng)發(fā)送時(shí), 該進(jìn)程的其它線程不能修改其中的數(shù)據(jù). 接收端應(yīng)用程序應(yīng)該把這段共享內(nèi)存作為只讀內(nèi)存來(lái)訪問. 請(qǐng)不要嘗試修改其中的內(nèi)容. lParam 指向的數(shù)據(jù)只有在該消息處理時(shí)有效, 消息返回后無(wú)效(共享內(nèi)存已被釋放). 且接收端也不能釋放該內(nèi)存. 如果要在消息返回后繼續(xù)取得數(shù)據(jù), 可以把它復(fù)制到當(dāng)前進(jìn)程的某個(gè)位置.
復(fù)制代碼

女孩不哭(QQ:191035066) @ 2012-09-11 23:25:31 @ http://www.cnblogs.com/nbsofer


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多