苏州大学操作系统实验二进程间通信李培峰班


父进程创建子进程并通信
资源截图
代码片段和文件信息
#include 
#include “resource.h“

wchar_t data[1000];
HWND faHwnd;
HANDLE hmap = NULL;
LPVOID lpdata = NULL;
HWND win = NULL;

LRESULT CALLBACK WinMainProc(HWND hwnd UINT msg WPARAM wParam LPARAM LParam);
INT_PTR CALLBACK DlgProc(HWND hdlg UINT msg WPARAM wParam LPARAM lParam);

HINSTANCE hgapp; //当前应用程序句柄
int WINAPI WinMain(HINSTANCE hThisApp HINSTANCE hPrevApp LPSTR lpCmd int nShow)
{
LPCWSTR title = L“Child_Process“;
WNDCLASS wc = { sizeof(WNDCLASS) };

wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
wc.hInstance = hThisApp;
wc.lpfnWndProc = WinMainProc;
wc.lpszClassName = title;
wc.style = CS_HREDRAW | CS_VREDRAW;

RegisterClass(&wc);

HWND hwnd = CreateWindow(title L“Child_Process“ WS_OVERLAPPEDWINDOW50 100 50 240 NULL NULL hThisApp NULL);
if (!hwnd)
return 0;
hgapp = hThisApp;

ShowWindow(hwnd nShow);

UpdateWindow(hwnd);

MSG msg;
while (GetMessage(&msg NULL 0 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}

LRESULT CALLBACK WinMainProc(HWND hwnd UINT msg WPARAM wParam LPARAM LParam)
{
HWND hdlg = NULL;

switch (msg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;

case WM_CREATE:
hdlg = CreateDialog(hgapp MAKEINTRESOURCE(WIN) hwnd (DLGPROC)DlgProc);
if (hdlg)
{
win = hdlg;
ShowWindow(hdlg SW_NORMAL);
}
return 0;

case LB_ADDSTRING:
{
SendMessage(GetDlgItem(win SHOWCHAT) msg wParam LParam);
return 0;
}

case WM_SETTEXT:
{
hmap = OpenFileMappingA(FILE_MAP_READ FALSE “share“);
lpdata = MapViewOfFile(hmap FILE_MAP_READ 0 0 0);
SendMessage(GetDlgItem(win SHOWFILE) msg NULL (LPARAM)lpdata);
UnmapViewOfFile(lpdata);
CloseHandle(hmap);
return 0;
}

default:
return DefWindowProc(hwnd msg wParam LParam);
}
return 0;
}

// 处理对话框中的数据
INT_PTR CALLBACK DlgProc(HWND hdlg UINT msg WPARAM wParam LPARAM lParam)
{
int dwLen = 0;
int nwLen = 0;
LPWSTR lpszPath = NULL;

switch (msg)
{
case WM_SYSCOMMAND:
if (wParam == SC_CLOSE)
{
DestroyWindow(hdlg);
}
return 0;

case WM_COMMAND:
{
switch (LOWORD(wParam))
{
case COM_CHAT:

faHwnd = FindWindow(L“Father_Process“ L“Father_Process“);
SendMessage(GetDlgItem(win CHATBOX) WM_GETTEXT 1000 (LPARAM)data);
SendMessage(faHwnd LB_ADDSTRING NULL (LPARAM)data);
break;

case FIND_FILE:
OPENFILENAME opfn;
WCHAR strFilename[MAX_PATH];
ZeroMemory(&opfn sizeof(OPENFILENAME));
opfn.lStructSize = sizeof(OPENFILENAME);
opfn.lpstrFilter = L“*.**.**.txt*.txt“;
opfn.nFilterIndex = 1;
opfn.lpstrFile = strFilename;
opfn.lpstrFile[0] = ‘‘;
opfn.nMaxFile = sizeof(strFilename);
opfn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST;
if (GetOpenFileName(&opfn))
{
SendMessage(GetDlgItem(hdlg FILE) WM_SETTEXT NULL (LPARAM)strFilename);
}
HANDLE hFile;
hFile = Create

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-10-28 09:29  .vs
     目录           0  2016-10-28 09:29  .vsfatherprocess
     目录           0  2016-10-28 09:29  .vsfatherprocessv14
     文件       34816  2016-11-06 15:31  .vsfatherprocessv14.suo
     目录           0  2016-10-28 13:41  childprocess
     文件        2728  2016-10-28 13:15  childprocesschildprocess.aps
     文件        5220  2016-10-28 13:15  childprocesschildprocess.rc
     文件        7401  2016-10-28 13:18  childprocesschildprocess.vcxproj
     文件        1205  2016-10-28 13:18  childprocesschildprocess.vcxproj.filters
     文件        4044  2016-10-28 13:41  childprocesscp.cpp
     目录           0  2016-10-28 13:41  childprocessDebug
     文件          96  2016-10-28 13:41  childprocessDebugchildprocess.log
     文件         496  2016-10-28 13:18  childprocessDebugchildprocess.res
     目录           0  2016-10-28 13:41  childprocessDebugchildprocess.tlog
     文件         199  2016-10-28 13:41  childprocessDebugchildprocess.tlogchildprocess.lastbuildstate
     文件         644  2016-10-28 13:41  childprocessDebugchildprocess.tlogCL.command.1.tlog
     文件       20642  2016-10-28 13:41  childprocessDebugchildprocess.tlogCL.read.1.tlog
     文件         484  2016-10-28 13:41  childprocessDebugchildprocess.tlogCL.write.1.tlog
     文件        1336  2016-10-28 13:41  childprocessDebugchildprocess.tloglink.command.1.tlog
     文件        2998  2016-10-28 13:41  childprocessDebugchildprocess.tloglink.read.1.tlog
     文件         604  2016-10-28 13:41  childprocessDebugchildprocess.tloglink.write.1.tlog
     文件         400  2016-10-28 13:18  childprocessDebugchildprocess.tlog
c.command.1.tlog
     文件        2224  2016-10-28 13:18  childprocessDebugchildprocess.tlog
c.read.1.tlog
     文件         270  2016-10-28 13:18  childprocessDebugchildprocess.tlog
c.write.1.tlog
     文件       31813  2016-10-28 13:41  childprocessDebugcp.obj
     文件      535552  2016-10-28 13:41  childprocessDebugvc140.idb
     文件      167936  2016-10-28 13:41  childprocessDebugvc140.pdb
     文件         911  2016-10-28 13:18  childprocess
esource.h
     目录           0  2016-10-28 13:36  Debug
     文件       44544  2016-10-28 13:41  Debugchildprocess.exe
     文件      377244  2016-10-28 13:41  Debugchildprocess.ilk
............此处省略30个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)