📄 callproc.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 FALSE;
}
// 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(""));
wcscmp(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(""));
wcscmp(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 + -