2005年12月30日
實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)共享除了常用的內(nèi)存文件映射外,對(duì)于一些非文件的數(shù)據(jù)共享可以直接使用消息WM_COPYDATA。 如果需要在進(jìn)程A傳遞數(shù)據(jù)到進(jìn)程B,簡(jiǎn)單的實(shí)現(xiàn)如下: 在進(jìn)程A中: CString strDataToSend = _T( "Hello" ); //需要傳遞的數(shù)據(jù) HWND hWndReceived; //進(jìn)程B的接收數(shù)據(jù)窗口對(duì)象 //COPYDATASTRUCT結(jié)構(gòu)是WM_COPYDATA傳遞的數(shù)據(jù)結(jié)構(gòu)對(duì)象 COPYDATASTRUCT cpd; cpd.dwData = 0; cpd.cbData = strDataToSend.GetLength(); //傳遞的數(shù)據(jù)長(zhǎng)度 cpd.lpData = (void*)strDataToSend.GetBuffer(cpd.cbData); //傳遞的數(shù)據(jù)地址 SendMessage( hWndReceived, WM_COPYDATA, 0, (LPARAM) & cpd ); strDataToSend.ReleaseBuffer();
在目標(biāo)進(jìn)程B中,先手動(dòng)建立好函數(shù)聲明和實(shí)現(xiàn) BEGIN_MESSAGE_MAP(CMyWnd, CWnd) //{{AFX_MSG_MAP(CMyWnd) ON_WM_COPYDATA() //}}AFX_MSG_MAP END_MESSAGE_MAP()
映射函數(shù): BOOL CMyWnd::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { CString strRecievedText = (LPCSTR) (pCopyDataStruct->lpData); return CMyWnd::OnCopyData(pWnd, pCopyDataStruct); }
還可以參考MSDN文章Using Data Copy http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/datacopy/usingdatacopy.asp
#include <windows.h> #include <shldisp.h> int main () { CoInitialize (0); IShellDispatch4 *pdisp = NULL; CoCreateInstance(CLSID_Shell, NULL, CLSCTX_ALL, __uuidof (IShellDispatch4), (void**)&pdisp); pdisp->ToggleDesktop (); //這句是用來(lái)切換桌面的 pdisp->Release(); CoUninitialize(); }; 注意這個(gè) IShellDispatch4接口只有WINDOWS XP以上的操作系統(tǒng)才支持。要求shell32.dll 5.0及以上版本
2005年12月30日
實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)共享除了常用的內(nèi)存文件映射外,對(duì)于一些非文件的數(shù)據(jù)共享可以直接使用消息WM_COPYDATA。 如果需要在進(jìn)程A傳遞數(shù)據(jù)到進(jìn)程B,簡(jiǎn)單的實(shí)現(xiàn)如下: 在進(jìn)程A中: CString strDataToSend = _T( "Hello" ); //需要傳遞的數(shù)據(jù) HWND hWndReceived; //進(jìn)程B的接收數(shù)據(jù)窗口對(duì)象 //COPYDATASTRUCT結(jié)構(gòu)是WM_COPYDATA傳遞的數(shù)據(jù)結(jié)構(gòu)對(duì)象 COPYDATASTRUCT cpd; cpd.dwData = 0; cpd.cbData = strDataToSend.GetLength(); //傳遞的數(shù)據(jù)長(zhǎng)度 cpd.lpData = (void*)strDataToSend.GetBuffer(cpd.cbData); //傳遞的數(shù)據(jù)地址 SendMessage( hWndReceived, WM_COPYDATA, 0, (LPARAM) & cpd ); strDataToSend.ReleaseBuffer();
在目標(biāo)進(jìn)程B中,先手動(dòng)建立好函數(shù)聲明和實(shí)現(xiàn) BEGIN_MESSAGE_MAP(CMyWnd, CWnd) //{{AFX_MSG_MAP(CMyWnd) ON_WM_COPYDATA() //}}AFX_MSG_MAP END_MESSAGE_MAP()
映射函數(shù): BOOL CMyWnd::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { CString strRecievedText = (LPCSTR) (pCopyDataStruct->lpData); return CMyWnd::OnCopyData(pWnd, pCopyDataStruct); }
還可以參考MSDN文章Using Data Copy http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/datacopy/usingdatacopy.asp
#include <windows.h> #include <shldisp.h> int main () { CoInitialize (0); IShellDispatch4 *pdisp = NULL; CoCreateInstance(CLSID_Shell, NULL, CLSCTX_ALL, __uuidof (IShellDispatch4), (void**)&pdisp); pdisp->ToggleDesktop (); //這句是用來(lái)切換桌面的 pdisp->Release(); CoUninitialize(); }; 注意這個(gè) IShellDispatch4接口只有WINDOWS XP以上的操作系統(tǒng)才支持。要求shell32.dll 5.0及以上版本
2005年12月30日
實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)共享除了常用的內(nèi)存文件映射外,對(duì)于一些非文件的數(shù)據(jù)共享可以直接使用消息WM_COPYDATA。 如果需要在進(jìn)程A傳遞數(shù)據(jù)到進(jìn)程B,簡(jiǎn)單的實(shí)現(xiàn)如下: 在進(jìn)程A中: CString strDataToSend = _T( "Hello" ); //需要傳遞的數(shù)據(jù) HWND hWndReceived; //進(jìn)程B的接收數(shù)據(jù)窗口對(duì)象 //COPYDATASTRUCT結(jié)構(gòu)是WM_COPYDATA傳遞的數(shù)據(jù)結(jié)構(gòu)對(duì)象 COPYDATASTRUCT cpd; cpd.dwData = 0; cpd.cbData = strDataToSend.GetLength(); //傳遞的數(shù)據(jù)長(zhǎng)度 cpd.lpData = (void*)strDataToSend.GetBuffer(cpd.cbData); //傳遞的數(shù)據(jù)地址 SendMessage( hWndReceived, WM_COPYDATA, 0, (LPARAM) & cpd ); strDataToSend.ReleaseBuffer();
在目標(biāo)進(jìn)程B中,先手動(dòng)建立好函數(shù)聲明和實(shí)現(xiàn) BEGIN_MESSAGE_MAP(CMyWnd, CWnd) //{{AFX_MSG_MAP(CMyWnd) ON_WM_COPYDATA() //}}AFX_MSG_MAP END_MESSAGE_MAP()
映射函數(shù): BOOL CMyWnd::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { CString strRecievedText = (LPCSTR) (pCopyDataStruct->lpData); return CMyWnd::OnCopyData(pWnd, pCopyDataStruct); }
還可以參考MSDN文章Using Data Copy http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/datacopy/usingdatacopy.asp
#include <windows.h> #include <shldisp.h> int main () { CoInitialize (0); IShellDispatch4 *pdisp = NULL; CoCreateInstance(CLSID_Shell, NULL, CLSCTX_ALL, __uuidof (IShellDispatch4), (void**)&pdisp); pdisp->ToggleDesktop (); //這句是用來(lái)切換桌面的 pdisp->Release(); CoUninitialize(); }; 注意這個(gè) IShellDispatch4接口只有WINDOWS XP以上的操作系統(tǒng)才支持。要求shell32.dll 5.0及以上版本
2005年12月30日
實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)共享除了常用的內(nèi)存文件映射外,對(duì)于一些非文件的數(shù)據(jù)共享可以直接使用消息WM_COPYDATA。 如果需要在進(jìn)程A傳遞數(shù)據(jù)到進(jìn)程B,簡(jiǎn)單的實(shí)現(xiàn)如下: 在進(jìn)程A中: CString strDataToSend = _T( "Hello" ); //需要傳遞的數(shù)據(jù) HWND hWndReceived; //進(jìn)程B的接收數(shù)據(jù)窗口對(duì)象 //COPYDATASTRUCT結(jié)構(gòu)是WM_COPYDATA傳遞的數(shù)據(jù)結(jié)構(gòu)對(duì)象 COPYDATASTRUCT cpd; cpd.dwData = 0; cpd.cbData = strDataToSend.GetLength(); //傳遞的數(shù)據(jù)長(zhǎng)度 cpd.lpData = (void*)strDataToSend.GetBuffer(cpd.cbData); //傳遞的數(shù)據(jù)地址 SendMessage( hWndReceived, WM_COPYDATA, 0, (LPARAM) & cpd ); strDataToSend.ReleaseBuffer();
在目標(biāo)進(jìn)程B中,先手動(dòng)建立好函數(shù)聲明和實(shí)現(xiàn) BEGIN_MESSAGE_MAP(CMyWnd, CWnd) //{{AFX_MSG_MAP(CMyWnd) ON_WM_COPYDATA() //}}AFX_MSG_MAP END_MESSAGE_MAP()
映射函數(shù): BOOL CMyWnd::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { CString strRecievedText = (LPCSTR) (pCopyDataStruct->lpData); return CMyWnd::OnCopyData(pWnd, pCopyDataStruct); }
還可以參考MSDN文章Using Data Copy http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/datacopy/usingdatacopy.asp
#include <windows.h> #include <shldisp.h> int main () { CoInitialize (0); IShellDispatch4 *pdisp = NULL; CoCreateInstance(CLSID_Shell, NULL, CLSCTX_ALL, __uuidof (IShellDispatch4), (void**)&pdisp); pdisp->ToggleDesktop (); //這句是用來(lái)切換桌面的 pdisp->Release(); CoUninitialize(); }; 注意這個(gè) IShellDispatch4接口只有WINDOWS XP以上的操作系統(tǒng)才支持。要求shell32.dll 5.0及以上版本
2005年12月30日
實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)共享除了常用的內(nèi)存文件映射外,對(duì)于一些非文件的數(shù)據(jù)共享可以直接使用消息WM_COPYDATA。 如果需要在進(jìn)程A傳遞數(shù)據(jù)到進(jìn)程B,簡(jiǎn)單的實(shí)現(xiàn)如下: 在進(jìn)程A中: CString strDataToSend = _T( "Hello" ); //需要傳遞的數(shù)據(jù) HWND hWndReceived; //進(jìn)程B的接收數(shù)據(jù)窗口對(duì)象 //COPYDATASTRUCT結(jié)構(gòu)是WM_COPYDATA傳遞的數(shù)據(jù)結(jié)構(gòu)對(duì)象 COPYDATASTRUCT cpd; cpd.dwData = 0; cpd.cbData = strDataToSend.GetLength(); //傳遞的數(shù)據(jù)長(zhǎng)度 cpd.lpData = (void*)strDataToSend.GetBuffer(cpd.cbData); //傳遞的數(shù)據(jù)地址 SendMessage( hWndReceived, WM_COPYDATA, 0, (LPARAM) & cpd ); strDataToSend.ReleaseBuffer();
在目標(biāo)進(jìn)程B中,先手動(dòng)建立好函數(shù)聲明和實(shí)現(xiàn) BEGIN_MESSAGE_MAP(CMyWnd, CWnd) //{{AFX_MSG_MAP(CMyWnd) ON_WM_COPYDATA() //}}AFX_MSG_MAP END_MESSAGE_MAP()
映射函數(shù): BOOL CMyWnd::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { CString strRecievedText = (LPCSTR) (pCopyDataStruct->lpData); return CMyWnd::OnCopyData(pWnd, pCopyDataStruct); }
還可以參考MSDN文章Using Data Copy http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/datacopy/usingdatacopy.asp
#include <windows.h> #include <shldisp.h> int main () { CoInitialize (0); IShellDispatch4 *pdisp = NULL; CoCreateInstance(CLSID_Shell, NULL, CLSCTX_ALL, __uuidof (IShellDispatch4), (void**)&pdisp); pdisp->ToggleDesktop (); //這句是用來(lái)切換桌面的 pdisp->Release(); CoUninitialize(); }; 注意這個(gè) IShellDispatch4接口只有WINDOWS XP以上的操作系統(tǒng)才支持。要求shell32.dll 5.0及以上版本
2005年12月30日
實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)共享除了常用的內(nèi)存文件映射外,對(duì)于一些非文件的數(shù)據(jù)共享可以直接使用消息WM_COPYDATA。 如果需要在進(jìn)程A傳遞數(shù)據(jù)到進(jìn)程B,簡(jiǎn)單的實(shí)現(xiàn)如下: 在進(jìn)程A中: CString strDataToSend = _T( "Hello" ); //需要傳遞的數(shù)據(jù) HWND hWndReceived; //進(jìn)程B的接收數(shù)據(jù)窗口對(duì)象 //COPYDATASTRUCT結(jié)構(gòu)是WM_COPYDATA傳遞的數(shù)據(jù)結(jié)構(gòu)對(duì)象 COPYDATASTRUCT cpd; cpd.dwData = 0; cpd.cbData = strDataToSend.GetLength(); //傳遞的數(shù)據(jù)長(zhǎng)度 cpd.lpData = (void*)strDataToSend.GetBuffer(cpd.cbData); //傳遞的數(shù)據(jù)地址 SendMessage( hWndReceived, WM_COPYDATA, 0, (LPARAM) & cpd ); strDataToSend.ReleaseBuffer();
在目標(biāo)進(jìn)程B中,先手動(dòng)建立好函數(shù)聲明和實(shí)現(xiàn) BEGIN_MESSAGE_MAP(CMyWnd, CWnd) //{{AFX_MSG_MAP(CMyWnd) ON_WM_COPYDATA() //}}AFX_MSG_MAP END_MESSAGE_MAP()
映射函數(shù): BOOL CMyWnd::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { CString strRecievedText = (LPCSTR) (pCopyDataStruct->lpData); return CMyWnd::OnCopyData(pWnd, pCopyDataStruct); }
還可以參考MSDN文章Using Data Copy http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/datacopy/usingdatacopy.asp
#include <windows.h> #include <shldisp.h> int main () { CoInitialize (0); IShellDispatch4 *pdisp = NULL; CoCreateInstance(CLSID_Shell, NULL, CLSCTX_ALL, __uuidof (IShellDispatch4), (void**)&pdisp); pdisp->ToggleDesktop (); //這句是用來(lái)切換桌面的 pdisp->Release(); CoUninitialize(); }; 注意這個(gè) IShellDispatch4接口只有WINDOWS XP以上的操作系統(tǒng)才支持。要求shell32.dll 5.0及以上版本
2005年12月30日
實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)共享除了常用的內(nèi)存文件映射外,對(duì)于一些非文件的數(shù)據(jù)共享可以直接使用消息WM_COPYDATA。 如果需要在進(jìn)程A傳遞數(shù)據(jù)到進(jìn)程B,簡(jiǎn)單的實(shí)現(xiàn)如下: 在進(jìn)程A中: CString strDataToSend = _T( "Hello" ); //需要傳遞的數(shù)據(jù) HWND hWndReceived; //進(jìn)程B的接收數(shù)據(jù)窗口對(duì)象 //COPYDATASTRUCT結(jié)構(gòu)是WM_COPYDATA傳遞的數(shù)據(jù)結(jié)構(gòu)對(duì)象 COPYDATASTRUCT cpd; cpd.dwData = 0; cpd.cbData = strDataToSend.GetLength(); //傳遞的數(shù)據(jù)長(zhǎng)度 cpd.lpData = (void*)strDataToSend.GetBuffer(cpd.cbData); //傳遞的數(shù)據(jù)地址 SendMessage( hWndReceived, WM_COPYDATA, 0, (LPARAM) & cpd ); strDataToSend.ReleaseBuffer();
在目標(biāo)進(jìn)程B中,先手動(dòng)建立好函數(shù)聲明和實(shí)現(xiàn) BEGIN_MESSAGE_MAP(CMyWnd, CWnd) //{{AFX_MSG_MAP(CMyWnd) ON_WM_COPYDATA() //}}AFX_MSG_MAP END_MESSAGE_MAP()
映射函數(shù): BOOL CMyWnd::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { CString strRecievedText = (LPCSTR) (pCopyDataStruct->lpData); return CMyWnd::OnCopyData(pWnd, pCopyDataStruct); }
還可以參考MSDN文章Using Data Copy http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/datacopy/usingdatacopy.asp
#include <windows.h> #include <shldisp.h> int main () { CoInitialize (0); IShellDispatch4 *pdisp = NULL; CoCreateInstance(CLSID_Shell, NULL, CLSCTX_ALL, __uuidof (IShellDispatch4), (void**)&pdisp); pdisp->ToggleDesktop (); //這句是用來(lái)切換桌面的 pdisp->Release(); CoUninitialize(); }; 注意這個(gè) IShellDispatch4接口只有WINDOWS XP以上的操作系統(tǒng)才支持。要求shell32.dll 5.0及以上版本
2005年12月30日
實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)共享除了常用的內(nèi)存文件映射外,對(duì)于一些非文件的數(shù)據(jù)共享可以直接使用消息WM_COPYDATA。 如果需要在進(jìn)程A傳遞數(shù)據(jù)到進(jìn)程B,簡(jiǎn)單的實(shí)現(xiàn)如下: 在進(jìn)程A中: CString strDataToSend = _T( "Hello" ); //需要傳遞的數(shù)據(jù) HWND hWndReceived; //進(jìn)程B的接收數(shù)據(jù)窗口對(duì)象 //COPYDATASTRUCT結(jié)構(gòu)是WM_COPYDATA傳遞的數(shù)據(jù)結(jié)構(gòu)對(duì)象 COPYDATASTRUCT cpd; cpd.dwData = 0; cpd.cbData = strDataToSend.GetLength(); //傳遞的數(shù)據(jù)長(zhǎng)度 cpd.lpData = (void*)strDataToSend.GetBuffer(cpd.cbData); //傳遞的數(shù)據(jù)地址 SendMessage( hWndReceived, WM_COPYDATA, 0, (LPARAM) & cpd ); strDataToSend.ReleaseBuffer();
在目標(biāo)進(jìn)程B中,先手動(dòng)建立好函數(shù)聲明和實(shí)現(xiàn) BEGIN_MESSAGE_MAP(CMyWnd, CWnd) //{{AFX_MSG_MAP(CMyWnd) ON_WM_COPYDATA() //}}AFX_MSG_MAP END_MESSAGE_MAP()
映射函數(shù): BOOL CMyWnd::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { CString strRecievedText = (LPCSTR) (pCopyDataStruct->lpData); return CMyWnd::OnCopyData(pWnd, pCopyDataStruct); }
還可以參考MSDN文章Using Data Copy http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/datacopy/usingdatacopy.asp
#include <windows.h> #include <shldisp.h> int main () { CoInitialize (0); IShellDispatch4 *pdisp = NULL; CoCreateInstance(CLSID_Shell, NULL, CLSCTX_ALL, __uuidof (IShellDispatch4), (void**)&pdisp); pdisp->ToggleDesktop (); //這句是用來(lái)切換桌面的 pdisp->Release(); CoUninitialize(); }; 注意這個(gè) IShellDispatch4接口只有WINDOWS XP以上的操作系統(tǒng)才支持。要求shell32.dll 5.0及以上版本
2005年12月30日
實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)共享除了常用的內(nèi)存文件映射外,對(duì)于一些非文件的數(shù)據(jù)共享可以直接使用消息WM_COPYDATA。 如果需要在進(jìn)程A傳遞數(shù)據(jù)到進(jìn)程B,簡(jiǎn)單的實(shí)現(xiàn)如下: 在進(jìn)程A中: CString strDataToSend = _T( "Hello" ); //需要傳遞的數(shù)據(jù) HWND hWndReceived; //進(jìn)程B的接收數(shù)據(jù)窗口對(duì)象 //COPYDATASTRUCT結(jié)構(gòu)是WM_COPYDATA傳遞的數(shù)據(jù)結(jié)構(gòu)對(duì)象 COPYDATASTRUCT cpd; cpd.dwData = 0; cpd.cbData = strDataToSend.GetLength(); //傳遞的數(shù)據(jù)長(zhǎng)度 cpd.lpData = (void*)strDataToSend.GetBuffer(cpd.cbData); //傳遞的數(shù)據(jù)地址 SendMessage( hWndReceived, WM_COPYDATA, 0, (LPARAM) & cpd ); strDataToSend.ReleaseBuffer();
在目標(biāo)進(jìn)程B中,先手動(dòng)建立好函數(shù)聲明和實(shí)現(xiàn) BEGIN_MESSAGE_MAP(CMyWnd, CWnd) //{{AFX_MSG_MAP(CMyWnd) ON_WM_COPYDATA() //}}AFX_MSG_MAP END_MESSAGE_MAP()
映射函數(shù): BOOL CMyWnd::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { CString strRecievedText = (LPCSTR) (pCopyDataStruct->lpData); return CMyWnd::OnCopyData(pWnd, pCopyDataStruct); }
還可以參考MSDN文章Using Data Copy http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/datacopy/usingdatacopy.asp
#include <windows.h> #include <shldisp.h> int main () { CoInitialize (0); IShellDispatch4 *pdisp = NULL; CoCreateInstance(CLSID_Shell, NULL, CLSCTX_ALL, __uuidof (IShellDispatch4), (void**)&pdisp); pdisp->ToggleDesktop (); //這句是用來(lái)切換桌面的 pdisp->Release(); CoUninitialize(); }; 注意這個(gè) IShellDispatch4接口只有WINDOWS XP以上的操作系統(tǒng)才支持。要求shell32.dll 5.0及以上版本
|
|
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
---|
27 | 28 | 29 | 30 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|
常用鏈接
留言簿(2)
隨筆檔案
搜索
最新評(píng)論

閱讀排行榜
評(píng)論排行榜
|
|