青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

記錄一些學習小事

Work hard

統計

留言簿

閱讀排行榜

評論排行榜

進程通信——剪貼板

由于在啟動一個進程后,操作系統會給這個進程分配 4GB 的私有地址空間,至于為何有 4GB 這么大,

那得考慮進程的私有地址空間和實際物理內存地址空間之間的映射以及頁交換等等細節問題了,這里不予討論,

既然操作系統給每一個進程分配的是私有地址空間,自然,這段地址空間也只有這個進程自己才能訪問了,
既然這段私有地址空間只能由進程本身訪問,那也就說明別的進程是不能夠隨意的訪問這個進程的地址空間的,

而上面又說任意兩個進程之間是并能夠互相訪問對方的私有地址空間的,都不能訪問了,那還通信個屁啊 ?

自然上面的訪問對方進程的私有地址空間是行不通了,那應該還有其他辦法的 !?。?/p>

如果我在物理內存中劃分出一塊內存,這一塊內存不為任何的進程所私有,但是任何的進程又都可以訪問這塊內存,

那么 進程 A 就可以往這塊內存中存放數據 Data ,然后 進程 B 也是可以訪問這塊內存的,從而 進程 B 就可以訪問到數據 Data 了,

這樣不就實現了 進程 A 進程 B 之間的通信了 ?。?!

而上面的這種思路就是剪貼板了。

當然解決進程間通信還有好幾種思路,本文暫只介紹利用剪貼板來實現進程間的通信。
前面
這段話是我抄過來的,呵呵,自己寫不了這種書面語。
我寫一下我對剪貼板的使用,我也是新學的,有不對的地方還請大家指點。

向剪貼板中寫入數據
打開剪貼板 OpenClipboard
清空剪貼板 EmptyClipboard
設置剪貼板數據SetClipboardData
關閉剪貼板CloseClipboard

從剪貼板讀取數據
打開剪貼板 OpenClipboard
判斷數據類型IsClipboardFormatAvailable
得到剪貼板數據GetClipboardData
關閉剪貼板CloseClipboard

我在說下具體的函數怎么用
Openclipboard大家在msdn上可以看到 僅有一個參數hWndNewOwner;
這個參數表明那個窗口擁有剪貼板的使用權 已在此窗口中打開,別的窗口中調用openclipboard就會失敗
這個參數可以設置成null。If this parameter is NULL, the open clipboard is associated with the current task
呵呵,這個設成null之后 在后邊的 setclipboarddata 就不能采用延遲發送了。因為……等會說延遲發送就會知道了。(這是我試驗得出的結論,應該沒問題)
這個參數我們暫且設為窗口句柄 m_hWnd(我用的MFC編的)
EmptyClipboard這個函數就沒什么說的了。就是清空剪貼板的數據 還有就是The function then assigns ownership of the clipboard to the window that currently has the clipboard open.
SetClipboardData( UINT uFormat, HANDLE hMem);
有兩個參數第一個參數是數據類型 我們設置成CF_UNICODETEXT。
第二個參數是the hMem parameter identifies a memory object, the object must have been allocated using the function with the GMEM_MOVEABLE flag.
這句話得意思就是 hmem是塊內存對象的句柄 這塊內存要是GMEM_MOVEABLE 型的。這又要引進一個申請內存的函數。平常我們用的malloc new 等都是
在自己的進程中申請空間,如果用他們 我們的通信也就通不成了。所以我們要申請個全局的內存空間
GlobalAlloc(GMEM_MOVEABLE,dwBytes);第一個參數就是可移動的意思(當別人申請一塊大空間的時候 比如我們申請的空間比較散亂占用了一部分空間 別人就申請不了一整塊大的空間了。這樣我們的空間如果是可移動的,就會被移動的凝聚一些,別人就有地方申請大的空間了,紅色是我們申請的凌亂的空間,綠色是又想申請的一大塊)。

這個我不在這里多講,內存管理我懂的也不太多。不懂的可以找找內存管理方面的書。 第二個參數就是空間大小。

這樣我們完成了設置剪貼板數據 ,然后我們關閉剪貼板就行了。
讀取簡單一些。
::OpenClipboard(m_hWnd)
IsClipboardFormatAvailable(CF_UNICODETEXT)//判斷剪貼板內數據類型
HANDLE hClip=::GetClipboardData(CF_UNICODETEXT)//得到剪貼板的句柄
然后就是使用里面的數據了。這里要注意,一定要給數據上鎖 ,就是說我們在使用數據的這個時間內,別人不準移動我們的內存。這個大家能理解吧。
TCHAR * p=(TCHAR *)GlobalLock(hClip);//強制裝換成我們的寬字符  上鎖
MessageBox(p);輸出即可
  GlobalUnlock(hClip);  解鎖
  ::CloseClipboard();
這就完成了,我貼一段代碼上來哦

//這個是寫入剪貼板
    if(!::OpenClipboard(m_hWnd))
    
{
        MessageBox(_T(
"打開剪切板失敗"));
    }

    ::EmptyClipboard();
      CString str
=_T("hahaaha");
      HGLOBAL  hG
=GlobalAlloc(GMEM_MOVEABLE,sizeof(_T("hahaaha"))+2);
      _tcscpy_s((wchar_t 
*)GlobalLock(hG),sizeof(_T("hahaaha"))/2+1,str);
      GlobalUnlock(hG);
    ::SetClipboardData(CF_UNICODETEXT,hG);
    ::C
//這個是從剪貼板中讀出數據
if(!::OpenClipboard(m_hWnd))
         
{
             MessageBox(_T(
"打開剪切板失敗"));
            
return ;
         }

        
if (::IsClipboardFormatAvailable(CF_UNICODETEXT))
    
{

        HANDLE hClip
=::GetClipboardData(CF_UNICODETEXT);
        TCHAR 
* p=(TCHAR *)GlobalLock(hClip);
        MessageBox(p);
        GlobalUnlock(hClip);
        ::CloseClipboard();
    }

    
else
    
{
        MessageBox(_T(
"剪貼板的內容不是unicode"));
    }


然后最后我在說說延遲發送setclipboarddata 的第二個參數傳為null 就為延遲發送
延遲發送就是一開始點寫入剪貼板的時候不寫入,然后另一個進程想要得到剪貼板里的信息的時候也就是在getclipboarddata時
系統會發個消息給我們以前的那個窗口 還記得openclipboard傳的那個m_hWnd了吧,就是給這個窗口發個消息WM_RENDERFORMAT
然后你在這個消息響應函數中進行把數據寫入剪貼板。
還有一種情況就是你在想粘貼的時候  你的原先寫入的那個程序已經關閉了,這樣的話你就帖不了了。 這樣 還有一個消息
如果你選擇了延遲發送 然后關閉應用程序的話,就會響應一個WM_RENDERALLFORMATS消息 那么你在這個響應函數中把你要寫入剪貼板得數據
寫入 就可以避免這種情況了。
啊 累死我了,可下寫完了。。。。




posted on 2011-07-31 17:11 陳曉 閱讀(2083) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久精品国产免费观看同学| 99精品国产在热久久下载| 亚洲经典一区| 欧美高清日韩| 欧美xart系列高清| 国产精品99久久久久久久女警| 亚洲午夜精品在线| 一区二区三区产品免费精品久久75 | 欧美日韩午夜| 中国av一区| 亚洲男女自偷自拍图片另类| 国产日本亚洲高清| 久久蜜桃精品| 欧美福利电影网| 亚洲一区三区视频在线观看| 亚洲欧美日本另类| 在线观看亚洲| 99精品欧美一区二区三区综合在线| 亚洲愉拍自拍另类高清精品| 国产日韩高清一区二区三区在线| 在线观看不卡| 亚洲精品视频一区| 国产精品草草| 久久综合给合久久狠狠狠97色69| 一区二区动漫| 国内一区二区三区| 亚洲品质自拍| 国产一区二区你懂的| 欧美国产日韩在线| 国产精品福利久久久| 久久久www| 欧美日韩亚洲一区二区三区在线观看 | 欧美高清日韩| 国产欧美日本一区二区三区| 美日韩在线观看| 欧美午夜精品久久久久久久| 嫩草伊人久久精品少妇av杨幂| 亚洲欧美日韩一区在线观看| 亚洲美女少妇无套啪啪呻吟| 午夜精品婷婷| 亚洲专区国产精品| 欧美激情视频一区二区三区在线播放 | 国产亚洲二区| 亚洲免费福利视频| 亚洲电影av在线| 亚洲在线观看视频| 亚洲少妇最新在线视频| 久久网站热最新地址| 久久精品国产亚洲一区二区三区 | 久久蜜桃资源一区二区老牛 | 久久成人综合视频| 亚洲一区在线直播| 免费精品99久久国产综合精品| 激情久久综合| 亚洲一区二区在线免费观看视频| 欧美视频中文一区二区三区在线观看| 亚洲精品无人区| 久久久久久噜噜噜久久久精品| 黑人巨大精品欧美一区二区小视频 | 亚洲深夜福利| 欧美另类一区二区三区| 久久五月天婷婷| 国产色产综合色产在线视频| 亚洲视频精品在线| 午夜亚洲性色视频| 国产精品女主播| 亚洲一本视频| 午夜视频在线观看一区| 国产精品欧美激情| 亚洲性av在线| 久久riav二区三区| 国产午夜精品理论片a级大结局 | 亚洲精选一区| 一本色道久久综合亚洲精品不卡| 99re8这里有精品热视频免费| 国产精品99免视看9| 99在线精品视频在线观看| 一区二区三区黄色| 国产精品r级在线| 亚洲一区二区高清| 亚洲欧美综合精品久久成人| 国产精品视频| 久久精品人人| 欧美高清影院| 中国成人黄色视屏| 国产欧美一区在线| 久久久人成影片一区二区三区观看 | 国内外成人在线视频| 久久精品一区二区三区四区| 另类春色校园亚洲| 91久久久在线| 欧美日韩精品久久久| 亚洲综合日韩| 欧美成人午夜| 亚洲神马久久| 狠狠色综合色综合网络| 久久综合九色综合欧美狠狠| 亚洲第一区在线观看| 亚洲无亚洲人成网站77777| 国产精品极品美女粉嫩高清在线| 欧美sm重口味系列视频在线观看| 欧美视频专区一二在线观看| 午夜精品久久久久久久白皮肤| 亚洲精品久久嫩草网站秘色| 国产精品www| 久久躁狠狠躁夜夜爽| 一区二区欧美日韩| 久久国产精品电影| 日韩视频专区| 国产综合久久久久影院| 欧美精品一区三区在线观看| 午夜精品久久久久久久99水蜜桃 | 国产一区二区三区四区| 欧美成人精品h版在线观看| 亚洲一区国产| 亚洲日本va午夜在线电影| 久久精品免费看| 在线视频你懂得一区| 激情六月综合| 国产精品久久久久久超碰 | 亚洲高清精品中出| 久久久亚洲国产天美传媒修理工 | 永久免费精品影视网站| 欧美精品在欧美一区二区少妇| 亚洲国产精品久久久| 久久精品国产欧美激情| 亚洲欧美日本在线| 日韩视频在线一区二区| 亚洲国产电影| 国外视频精品毛片| 国产精品永久免费在线| 欧美日韩高清免费| 欧美jizz19性欧美| 久久综合色8888| 久久全国免费视频| 欧美在线免费一级片| 亚洲影院色无极综合| 99re在线精品| 亚洲毛片播放| 亚洲日本中文字幕| 亚洲国产精品视频一区| 免费在线成人| 欧美大胆a视频| 欧美电影免费观看| 欧美国产一区二区在线观看 | 禁断一区二区三区在线| 国产午夜精品麻豆| 国产伦精品一区二区三区免费 | 久久丁香综合五月国产三级网站| 久久亚洲综合色| 久久免费的精品国产v∧| 久久免费少妇高潮久久精品99| 国产一区二区福利| 国产精品视频免费观看| 国产美女精品一区二区三区| 国产精品五区| 国内免费精品永久在线视频| 在线观看三级视频欧美| 亚洲人成77777在线观看网| 亚洲乱码精品一二三四区日韩在线| 国产精品久久久一区麻豆最新章节| 亚久久调教视频| 久久青草欧美一区二区三区| 久久久美女艺术照精彩视频福利播放| 亚洲激情专区| 中文久久乱码一区二区| 亚洲欧美日产图| 麻豆精品传媒视频| 欧美日韩视频在线一区二区观看视频| 欧美一二区视频| 你懂的亚洲视频| 欧美丝袜一区二区| 国内精品免费在线观看| 玉米视频成人免费看| 亚洲免费av电影| 久久成年人视频| 亚洲国产精品久久久久| 亚洲一区二区黄| 免费在线欧美视频| 国产精品自拍视频| 亚洲欧洲一区二区三区在线观看 | 国产精品视频网| 亚洲第一区中文99精品| 亚洲美女电影在线| 欧美中文在线字幕| 欧美国产日韩一区| 国产精品99久久久久久有的能看| 亚洲人成啪啪网站| 欧美在线关看| 欧美新色视频| 亚洲精品欧美一区二区三区| 欧美在线播放高清精品| 亚洲三级免费| 久久精品一区二区国产| 国产精品九九| 亚洲激情视频在线观看| 久久精品亚洲精品| 亚洲一级黄色av| 欧美伦理a级免费电影| 在线成人欧美|