⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 callproc.cpp

📁 在WinCE环境下,不同的AP可能需要共享数据,信息,该例子就是几个不同的AP来读写同一块内存的例子.
💻 CPP
字号:
#include "stdafx.h"
#include "CallProc.h"
#include <tlhelp32.h>
#include <windows.h>

#define	MIOAP_PROC_PATH	_T("\\My Flash Disk\\MioMap\\")
#define	IGOGO_PROC_PATH	_T("\\My Flash Disk\\MioMap\\iGoGo\\")
#define	PARK_PROC_PATH	_T("\\My Flash Disk\\MioMap\\Park\\")

//-------------------------------------------------------
//[Method]	IsRun
//[Desp  ]	
//[Param ]	CString APPName : 
//[Return]	BOOL  : 
//[Create]	2006-7-6    Xiangjun Han
//[Modify]	
//[Remark]	
//-------------------------------------------------------
BOOL IsRun(CString APPName)
{
	BOOL bReturn = FALSE;
	HANDLE g_hProcessSnap;

//    if (NULL != g_hProcessSnap)
//    {
//        VERIFY(CloseToolhelp32Snapshot(g_hProcessSnap));
//    }
    
    g_hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

	if (INVALID_HANDLE_VALUE  == g_hProcessSnap) 
    {
        return bReturn;
    }

    // Take all the module snapshots - if any of them fails, exit...
    // This will make the snapshot operation as a whole seem atomic
    PROCESSENTRY32 pe32 = {0};
	pe32.dwSize = sizeof(PROCESSENTRY32);
	if (TRUE == Process32First(g_hProcessSnap, &pe32)) 
	{
	    do
		{
			if(!wcscmp(APPName,pe32.szExeFile))
			{
				bReturn = TRUE;
				break;
			}
		}while (Process32Next(g_hProcessSnap, &pe32));
	}

//	if(bReturn)
//	{
//		HANDLE mProcID = OpenProcess(0, 0, pe32.th32ProcessID);
//		return TerminateProcess(mProcID,0);
//	}

	return bReturn;
}
//-------------------------------------------------------
//[Method]	ExecProc
//[Desp  ]	
//[Param ]	HWND hWnd : 
//      	LPCTSTR pName : 
//      	LPCTSTR param : 
//[Return]	None : 
//[Create]	2006-7-6    Xiangjun Han
//[Modify]	
//[Remark]	
//-------------------------------------------------------
BOOL	ExecProc(HWND hWnd, LPCTSTR pName, LPCTSTR param)
{

	if(IsRun(pName))
	{
//		Sleep(2000);
	}

	TCHAR	path[64];

	if(!wcscmp(pName , _T("MioMap")))
	{
		wsprintf(path, _T("%s%s"), MIOAP_PROC_PATH, pName);
	}
	else if(!wcscmp(pName , _T("Mio GoGo")))
	{
		wsprintf(path, _T("%s%s"), IGOGO_PROC_PATH, pName);
	}
	else if(!wcscmp(pName, _T("Park")))
	{
		wsprintf(path, _T("%s%s"), PARK_PROC_PATH, pName);
	}
	else
	{
		wsprintf(path, _T("\\%s"), pName);
	}
	BOOL bReturn = CreateProcess(path, param, NULL, NULL,
							 /*FALSE*/0, 0, NULL, NULL, NULL, NULL);
	if(bReturn)
	{
		Sleep(1000);
	}
	return bReturn;
}


//-------------------------------------------------------
//[Method]	WriteMemoryMap
//[Desp  ]	
//[Param ]	HANDLE hShare : 
//      	ShareData *dat : 
//[Return]	None : 
//[Create]	2006-7-6    Xiangjun Han
//[Modify]	
//[Remark]	
//-------------------------------------------------------
void	WriteMemoryMap(HANDLE hShare, ShareData *dat)
{
	ShareData	*mapView;

    hShare = CreateFileMapping((HANDLE)0xFFFFFFFF, NULL,
                                PAGE_READWRITE, 0, sizeof(ShareData), _T("MIOShare"));

	mapView = (ShareData *)MapViewOfFile(hShare, FILE_MAP_WRITE, 0, 0, 0);

	memcpy(mapView, dat, sizeof(ShareData));

}


//-------------------------------------------------------
//[Method]	ReadMemoryMap
//[Desp  ]	
//[Param ]	HANDLE hShare : 
//      	ShareData *dat : 
//[Return]	None : 
//[Create]	2006-7-6    Xiangjun Han
//[Modify]	
//[Remark]	
//-------------------------------------------------------
void	ReadMemoryMap(HANDLE hShare, ShareData *dat)
{
	BOOL	bAlreadyExists;
	ShareData	*mapView;

    hShare = CreateFileMapping((HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 0, sizeof(ShareData), _T("MIOShare"));

	bAlreadyExists = (GetLastError() == ERROR_ALREADY_EXISTS);

	mapView = (ShareData *)MapViewOfFile(hShare, FILE_MAP_READ, 0, 0, 0);

	memcpy(dat, mapView, sizeof(ShareData));

}

void ClearMemory()
{
	HANDLE handle;
	handle = NULL;
	ShareDataSt	PARA;	
	ReadMemoryMap(handle,&PARA);
	wcscpy(PARA.Para_GPS_USE_FLAG,_T(""));
	wcscpy(PARA.Para_Src_APP,_T(""));
	wcscpy(PARA.Para_Src_APP_PATH,_T(""));
	wcscpy(PARA.Para_Src_Title,_T(""));
	wcscpy(PARA.Para_GPS_USE_DATETIME,_T(""));
	wcscpy(PARA.Para_Des_APP,_T(""));
	wcscpy(PARA.Para_Des_APP_PATH,_T(""));
	wcscpy(PARA.Para_Des_Title,_T(""));

	WriteMemoryMap(handle,&PARA);
}
//-------------------------------------------------------
// EOF CallProc.cpp
//-------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -