![進(jìn)程通信實(shí)驗(yàn)報(bào)告_第1頁](http://file4.renrendoc.com/view/f999530e2ad78fc7feaae419a8343f8c/f999530e2ad78fc7feaae419a8343f8c1.gif)
![進(jìn)程通信實(shí)驗(yàn)報(bào)告_第2頁](http://file4.renrendoc.com/view/f999530e2ad78fc7feaae419a8343f8c/f999530e2ad78fc7feaae419a8343f8c2.gif)
![進(jìn)程通信實(shí)驗(yàn)報(bào)告_第3頁](http://file4.renrendoc.com/view/f999530e2ad78fc7feaae419a8343f8c/f999530e2ad78fc7feaae419a8343f8c3.gif)
![進(jìn)程通信實(shí)驗(yàn)報(bào)告_第4頁](http://file4.renrendoc.com/view/f999530e2ad78fc7feaae419a8343f8c/f999530e2ad78fc7feaae419a8343f8c4.gif)
![進(jìn)程通信實(shí)驗(yàn)報(bào)告_第5頁](http://file4.renrendoc.com/view/f999530e2ad78fc7feaae419a8343f8c/f999530e2ad78fc7feaae419a8343f8c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)西安電子科技大學(xué)操作系統(tǒng)原理實(shí)驗(yàn)報(bào)告題目: 進(jìn)程通信實(shí)驗(yàn)報(bào)告 班級(jí): 姓名: 王增祥 學(xué)號(hào): 實(shí)驗(yàn)內(nèi)容補(bǔ)充說明:一、分析和設(shè)計(jì)1 理論分析 每個(gè)Windows進(jìn)程都是由一個(gè)執(zhí)行體進(jìn)程塊(EPROCESS)表示。API函數(shù)CreatProcess可以創(chuàng)建進(jìn)程,采用管道技術(shù)可以實(shí)現(xiàn)進(jìn)程間的相互通信。建立pipe,進(jìn)程以及其子進(jìn)程就可以對(duì)該管道進(jìn)程讀寫共享,管道讀寫操作利用,write、read、close進(jìn)行。父進(jìn)程利用pipe發(fā)送消息,子進(jìn)程利用該pipe接收父進(jìn)程發(fā)來的
2、消息;子進(jìn)程利用管道向父進(jìn)程發(fā)送應(yīng)答,父進(jìn)程利用該pipe接受應(yīng)答。2 總體設(shè)計(jì)1、利用CreatProcess函數(shù)創(chuàng)建進(jìn)程。2、創(chuàng)建管道,實(shí)現(xiàn)進(jìn)程間的通信二、詳細(xì)實(shí)現(xiàn)1、創(chuàng)建界面,采用Botton、列表框等控件創(chuàng)建父子界面如下圖:父進(jìn)程界面:子進(jìn)程界面:其中父進(jìn)程各個(gè)空間創(chuàng)建類向?qū)鐖D:子進(jìn)程創(chuàng)建類向?qū)鐖D:2.父進(jìn)程編寫(1)創(chuàng)建管道:(2)創(chuàng)建子進(jìn)程:(3)消息發(fā)送(4)消息接受3.子進(jìn)程編寫(1)發(fā)送消息(2)讀消息三、實(shí)驗(yàn)結(jié)果點(diǎn)擊創(chuàng)建子進(jìn)程按鈕:在創(chuàng)建子進(jìn)程之后進(jìn)行進(jìn)程間的通信如下圖四、心得體會(huì)1、從試驗(yàn)的角度了解了進(jìn)程間是怎樣利用管道進(jìn)行通信的,了解了進(jìn)程間通信的實(shí)際過程2、進(jìn)一步
3、掌握了MFC的初步編程技巧,知道了怎樣調(diào)試程序。3進(jìn)一步了解了,API函數(shù)的應(yīng)用,明白了怎樣進(jìn)行界面編程。4、進(jìn)一步熟悉了在進(jìn)行進(jìn)程通信的編寫過程中的各個(gè)細(xì)節(jié)。六、附錄Process_Father.cpp#include stdafx.h#include Process_Father.h /包含已編寫的Process_Father.h頭文件#include Process_FatherDlg.h /包含已編寫的Process_FatherDlg.h頭文件/進(jìn)行宏定義#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THI
4、S_FILE = _FILE_;#endif/創(chuàng)建父進(jìn)程BEGIN_MESSAGE_MAP(CProcess_FatherApp, CWinApp)/AFX_MSG_MAP(CProcess_FatherApp)/ NOTE - the ClassWizard will add and remove mapping macros here./ DO NOT EDIT what you see in these blocks of generated code!/AFX_MSGON_COMMAND(ID_HELP, CWinApp:OnHelp)END_MESSAGE_MAP()/ CProce
5、ss_FatherApp constructionCProcess_FatherApp:CProcess_FatherApp()/ TODO: add construction code here,/ Place all significant initialization in InitInstance/ The one and only CProcess_FatherApp objectCProcess_FatherApp theApp;/ CProcess_FatherApp initializationBOOL CProcess_FatherApp:InitInstance()AfxE
6、nableControlContainer();#ifdef _AFXDLLEnable3dControls();/ Call this when using MFC in a shared DLL#elseEnable3dControlsStatic();/ Call this when linking to MFC statically#endifCProcess_FatherDlg dlg;m_pMainWnd = &dlg;int nResponse = dlg.DoModal();if (nResponse = IDOK)/ TODO: Place code here to hand
7、le when the dialog is/ dismissed with OKelse if (nResponse = IDCANCEL)/ TODO: Place code here to handle when the dialog is/ dismissed with Cancel/ Since the dialog has been closed, return FALSE so that we exit the/ application, rather than start the applications message pump.return FALSE;Process_Fat
8、herDlg.cpp/ Process_FatherDlg.cpp : implementation file/#include stdafx.h#include Process_Father.h#include Process_FatherDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg()
9、;/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MA
10、P();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_
11、MESSAGE_MAP()/ CProcess_FatherDlg dialogCProcess_FatherDlg:CProcess_FatherDlg(CWnd* pParent /*=NULL*/): CDialog(CProcess_FatherDlg:IDD, pParent)/AFX_DATA_INIT(CProcess_FatherDlg)/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()-LoadIcon(IDR_MA
12、INFRAME);void CProcess_FatherDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CProcess_FatherDlg) DDX_Control(pDX, IDC_BT_CreateChildProcess, m_BT_CreateChildProcess);DDX_Control(pDX, IDC_Send, m_Send);DDX_Control(pDX, IDC_LISTBOX_Record, m_LISTBOX_Record);DDX_Control(
13、pDX, IDC_EDIT_Message, m_EDIT_Message);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CProcess_FatherDlg, CDialog)/AFX_MSG_MAP(CProcess_FatherDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BT_CreateChildProcess, OnBTCreateChildProcess)ON_BN_CLICKED(IDC_Send, OnSend)/AFX_MSG_MAPON_MESSAGE(
14、WM_CHILD_SEND,OnReceiveMsg)END_MESSAGE_MAP()/ CProcess_FatherDlg message handlersBOOL CProcess_FatherDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu. / IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0 xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX A
15、ppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra in
16、itialization herereturn TRUE; / return TRUE unless you set the focus to a controlvoid CProcess_FatherDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0 xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);/ If you add a minimize button to your dialog, y
17、ou will need the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically done for you by the framework.void CProcess_FatherDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHd
18、c(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();
19、/ The system calls this to obtain the cursor to display while the user drags/ the minimized window.HCURSOR CProcess_FatherDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void CProcess_FatherDlg:OnBTCreateChildProcess() /創(chuàng)建管道 SECURITY_ATTRIBUTES sa; sa.nLength=sizeof(SECURITY_ATTRIBUTES); sa.lpSecurity
20、Descriptor=NULL; sa.bInheritHandle=TRUE; :CreatePipe(&hPipeRead,&hPipeWrite,&sa,0);:CreatePipe(&hPipeRead2,&hPipeWrite2,&sa,0); /創(chuàng)建子進(jìn)程 STARTUPINFO StartupInfo; memset(&StartupInfo,0,sizeof(STARTUPINFO) ; StartupInfo.cb=sizeof(STARTUPINFO); StartupInfo.dwFlags=STARTF_USESTDHANDLES; StartupInfo.hStdIn
21、put=hPipeRead; StartupInfo.hStdOutput=hPipeWrite;StartupInfo.hStdError=GetStdHandle(STD_ERROR_HANDLE); PROCESS_INFORMATION ProcessInfo; :CreateProcess(Process_Child.exe,NULL,NULL,NULL,TRUE,0,NULL,NULL,&StartupInfo,&ProcessInfo); m_BT_CreateChildProcess.EnableWindow(FALSE);void CProcess_FatherDlg:OnS
22、end() CString str;char ss20=Father:; m_EDIT_Message.GetWindowText(str); DWORD dwWritten; if(!WriteFile(hPipeWrite,str,40,&dwWritten,NULL)MessageBox(TEXT(寫錯(cuò)誤),警告,MB_OK|MB_ICONWARNING); CString strWinName = Process_Child; CWnd *pWnd=CWnd:FindWindow(NULL,strWinName); if(pWnd) pWnd-SendMessage(WM_FATHER
23、_SEND,0,0); strcat(ss,str); m_LISTBOX_Record.InsertString(-1,ss); m_EDIT_Message.SetWindowText(); else MessageBox(沒有發(fā)現(xiàn)子進(jìn)程,錯(cuò)誤);void CProcess_FatherDlg:OnReceiveMsg(WPARAM wParam,LPARAM lParam)DWORD dwRead;TCHAR s40;HANDLE hPipeRead2;hPipeRead2=GetStdHandle(STD_INPUT_HANDLE);if(!ReadFile(hPipeRead,s,4
24、0,&dwRead,NULL)MessageBox(TEXT(讀錯(cuò)誤!),警告,MB_OK|MB_ICONWARNING);char str60=Child: ;strcat(str,s);m_LISTBOX_Record.InsertString(-1,str);Process_Father.h/ Process_Father.h : main header file for the PROCESS_FATHER application/#if !defined(AFX_PROCESS_FATHER_H_1F9659A2_2B93_4C1E_89C5_5A88971D3DDA_INCLUDE
25、D_)#define AFX_PROCESS_FATHER_H_1F9659A2_2B93_4C1E_89C5_5A88971D3DDA_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000#ifndef _AFXWIN_H_#error include stdafx.h before including this file for PCH#endif#include resource.h/ main symbols/ CProcess_FatherApp:/ See Process_Father.cpp for the im
26、plementation of this class/class CProcess_FatherApp : public CWinApppublic:CProcess_FatherApp();/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CProcess_FatherApp)public:virtual BOOL InitInstance();/AFX_VIRTUAL/ Implementation/AFX_MSG(CProcess_FatherApp)/ NOTE - the ClassWi
27、zard will add and remove member functions here./ DO NOT EDIT what you see in these blocks of generated code !/AFX_MSGDECLARE_MESSAGE_MAP();/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !defined(AFX_PROCESS_FATHER_H_1F9659A
28、2_2B93_4C1E_89C5_5A88971D3DDA_INCLUDED_)Process_FatherDlg.h/ Process_FatherDlg.h : header file/#if !defined(AFX_PROCESS_FATHERDLG_H_69E2942A_7A5F_413F_B4A3_AFB8C1F51DFE_INCLUDED_)#define AFX_PROCESS_FATHERDLG_H_69E2942A_7A5F_413F_B4A3_AFB8C1F51DFE_INCLUDED_#define WM_FATHER_SEND WM_USER+100#define W
29、M_CHILD_SEND WM_USER+101#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000/ CProcess_FatherDlg dialogclass CProcess_FatherDlg : public CDialog/ Constructionpublic:CProcess_FatherDlg(CWnd* pParent = NULL);/ standard constructor/ Dialog Data/AFX_DATA(CProcess_FatherDlg)enum IDD = IDD_PROCESS_FATHER_D
30、IALOG ;CButtonm_BT_CreateChildProcess;CButtonm_Send;CListBoxm_LISTBOX_Record;CEditm_EDIT_Message;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CProcess_FatherDlg)protected:virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDV support/AFX_VIRTUAL/ Implementationprotected
31、:HICON m_hIcon;/ Generated message map functions/AFX_MSG(CProcess_FatherDlg)virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnReceiveMsg(WPARAM wParam, LPARAM lParam);afx_msg void OnBTCreateChildProc
32、ess();afx_msg void OnSend();/AFX_MSGDECLARE_MESSAGE_MAP()private:HANDLE hPipeWrite2;HANDLE hPipeRead2;HANDLE hPipeWrite;HANDLE hPipeRead;/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !defined(AFX_PROCESS_FATHERDLG_H_69E294
33、2A_7A5F_413F_B4A3_AFB8C1F51DFE_INCLUDED_)子進(jìn)程代碼Process_Child.cpp/ Process_Child.cpp : Defines the class behaviors for the application./#include stdafx.h#include Process_Child.h#include Process_ChildDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CProcess_
34、ChildAppBEGIN_MESSAGE_MAP(CProcess_ChildApp, CWinApp)/AFX_MSG_MAP(CProcess_ChildApp)/ NOTE - the ClassWizard will add and remove mapping macros here./ DO NOT EDIT what you see in these blocks of generated code!/AFX_MSGON_COMMAND(ID_HELP, CWinApp:OnHelp)END_MESSAGE_MAP()/ CProcess_ChildApp constructi
35、onCProcess_ChildApp:CProcess_ChildApp()/ TODO: add construction code here,/ Place all significant initialization in InitInstance/ The one and only CProcess_ChildApp objectCProcess_ChildApp theApp;/ CProcess_ChildApp initializationBOOL CProcess_ChildApp:InitInstance()AfxEnableControlContainer();/ Sta
36、ndard initialization/ If you are not using these features and wish to reduce the size/ of your final executable, you should remove from the following/ the specific initialization routines you do not need.#ifdef _AFXDLLEnable3dControls();/ Call this when using MFC in a shared DLL#elseEnable3dControls
37、Static();/ Call this when linking to MFC statically#endifCProcess_ChildDlg dlg;m_pMainWnd = &dlg;int nResponse = dlg.DoModal();if (nResponse = IDOK)/ TODO: Place code here to handle when the dialog is/ dismissed with OKelse if (nResponse = IDCANCEL)/ TODO: Place code here to handle when the dialog i
38、s/ dismissed with Cancel/ Since the dialog has been closed, return FALSE so that we exit the/ application, rather than start the applications message pump.return FALSE;Process_ChildDlg.cpp/ Process_ChildDlg.cpp : implementation file/#include stdafx.h#include Process_Child.h#include Process_ChildDlg.
39、h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VI
40、RTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataE
41、xchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CProcess_ChildDlg dialogCProcess_ChildDlg:CProcess_ChildDlg(CWnd* pParent /*=NULL*/): CDialog(CProcess_ChildDl
42、g:IDD, pParent)/AFX_DATA_INIT(CProcess_ChildDlg)/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CProcess_ChildDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CProcess_ChildDlg)DDX_
43、Control(pDX, IDC_Send, m_Send);DDX_Control(pDX, IDC_LISTBOX_Record, m_LISTBOX_Record);DDX_Control(pDX, IDC_EDIT_Message, m_EDIT_Message);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CProcess_ChildDlg, CDialog)/AFX_MSG_MAP(CProcess_ChildDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_Send
44、, OnSend)/AFX_MSG_MAPON_MESSAGE(WM_FATHER_SEND,OnReceiveMsg)END_MESSAGE_MAP()/ CProcess_ChildDlg message handlersBOOL CProcess_ChildDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0 xFFF0) = IDM_A
45、BOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set
46、small icon/ TODO: Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a controlvoid CProcess_ChildDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0 xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);/ If you add a mini
47、mize button to your dialog, you will need the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically done for you by the framework.void CProcess_ChildDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASE
48、BKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_h
49、Icon);elseCDialog:OnPaint();/ The system calls this to obtain the cursor to display while the user drags/ the minimized window.HCURSOR CProcess_ChildDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void CProcess_ChildDlg:OnSend() char ss20=Child:; CString str; m_EDIT_Message.GetWindowText(str); DWORD d
50、wWritten;hPipeWrite=GetStdHandle(STD_OUTPUT_HANDLE); if(!WriteFile(hPipeWrite,str,40,&dwWritten,NULL)MessageBox(TEXT(寫錯(cuò)誤),警告,MB_OK|MB_ICONWARNING); CString strWinName = Process_Father; CWnd *pWnd=CWnd:FindWindow(NULL,strWinName); if(pWnd) pWnd-SendMessage(WM_CHILD_SEND,0,0); strcat(ss,str); m_LISTBO
51、X_Record.InsertString(-1,ss); m_EDIT_Message.SetWindowText(); else MessageBox(沒有發(fā)現(xiàn)父進(jìn)程,錯(cuò)誤);void CProcess_ChildDlg:OnReceiveMsg(WPARAM wParam,LPARAM lParam)DWORD dwRead;char s40;HANDLE hPipeRead;hPipeRead=GetStdHandle(STD_INPUT_HANDLE);if(!ReadFile(hPipeRead,s,40,&dwRead,NULL)MessageBox(TEXT(讀錯(cuò)誤!),警告,
52、MB_OK|MB_ICONWARNING);char str60=Father: ;strcat(str,s);m_LISTBOX_Record.InsertString(-1,str);Process_Child.h/ Process_Child.h : main header file for the PROCESS_CHILD application/#if !defined(AFX_PROCESS_CHILD_H_7416C60C_DD56_40CC_BD28_3DADE7_INCLUDED_)#define AFX_PROCESS_CHILD_H_7416C60C_DD56_40CC
53、_BD28_3DADE7_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000#ifndef _AFXWIN_H_#error include stdafx.h before including this file for PCH#endif#include resource.h/ main symbols/ CProcess_ChildApp:/ See Process_Child.cpp for the implementation of this class/class CProcess_ChildApp : public CWinApppublic:CProcess_ChildApp();/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CProcess_ChildApp)public:virtual BOOL InitIn
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)加工印花合同范本
- 2025年中國新型動(dòng)力電池行業(yè)市場調(diào)研分析及投資戰(zhàn)略規(guī)劃報(bào)告
- 中國電網(wǎng)合同范例
- 刻字瓷像合同范本
- 買個(gè)合同范例
- 國開電大《幼兒園課程論》形考任務(wù)三參考答案
- 出國勞務(wù)標(biāo)準(zhǔn)合同范本
- 青島市機(jī)動(dòng)車委托銷售合同范本
- 個(gè)人水果訂購合同范本
- 免除責(zé)任合同范本
- 電子線檢驗(yàn)標(biāo)準(zhǔn)
- 建筑施工安全員理論考核試題與答案
- 人教版七年級(jí)歷史下冊教學(xué)計(jì)劃(及進(jìn)度表)
- 建筑工程節(jié)后復(fù)工自查表
- 華萊士標(biāo)準(zhǔn)化體系
- 快捷smt全自動(dòng)物料倉儲(chǔ)方案
- keysight眼圖和抖動(dòng)噪聲基礎(chǔ)知識(shí)與測量方法
- TPU材料項(xiàng)目可行性研究報(bào)告寫作參考范文
- 試用期考核合格證明表
- 鍋爐補(bǔ)給水陰陽混床操作步序表
- 2005年第4季度北京住房租賃指導(dǎo)價(jià)格
評(píng)論
0/150
提交評(píng)論