📄 ceprocesssitterdlg.cpp
字号:
// CEProcessSitterDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "CEProcessSitter.h"
#include "CEProcessSitterDlg.h"
#include "windows.h"
#include <TlHelp32.h>
#include <C:\WINCE500\PBWorkspaces\WinceStandard\WINCE500\DeviceEmulator_ARMV4I\cesysgen\oak\inc\pwinuser.h>
#pragma comment (lib,"toolhelp.lib")
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CCEProcessSitterDlg 对话框
CCEProcessSitterDlg::CCEProcessSitterDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCEProcessSitterDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CCEProcessSitterDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_ProcessShow, m_showlist);
DDX_Control(pDX, IDC_DllShow, m_showlistdLL);
}
BEGIN_MESSAGE_MAP(CCEProcessSitterDlg, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
ON_WM_SIZE()
#endif
//}}AFX_MSG_MAP
ON_NOTIFY(LVN_ITEMCHANGED, IDC_ProcessShow, &CCEProcessSitterDlg::OnLvnItemchangedProcessshow)
ON_BN_CLICKED(IDC_BUTTON1, &CCEProcessSitterDlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON2, &CCEProcessSitterDlg::OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON3, &CCEProcessSitterDlg::OnBnClickedButton3)
ON_BN_CLICKED(IDC_BUTTON4, &CCEProcessSitterDlg::OnBnClickedButton4)
ON_BN_CLICKED(IDC_BUTTON5, &CCEProcessSitterDlg::OnBnClickedButton5)
END_MESSAGE_MAP()
// CCEProcessSitterDlg 消息处理程序
BOOL CCEProcessSitterDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_showlist.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_showlist.InsertColumn(0,_T("Process Name"));
m_showlist.InsertColumn(1,_T("Process Num"));
m_showlist.InsertColumn(2,_T("PID"));
m_showlist.InsertColumn(3,_T("Advance"));
for(int i=0;i<4;i++)
m_showlist.SetColumnWidth(i,120);
m_showlistdLL.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_showlistdLL.InsertColumn(0,_T("Dll Name"));
m_showlistdLL.SetColumnWidth(0,120);
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
void CCEProcessSitterDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
{
if (AfxIsDRAEnabled())
{
DRA::RelayoutDialog(
AfxGetResourceHandle(),
this->m_hWnd,
DRA::GetDisplayMode() != DRA::Portrait ?
MAKEINTRESOURCE(IDD_CEPROCESSSITTER_DIALOG_WIDE) :
MAKEINTRESOURCE(IDD_CEPROCESSSITTER_DIALOG));
}
}
#endif
void CCEProcessSitterDlg::OnLvnItemchangedProcessshow(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
}
/////////////////////////////////////////////////////////////////////
//TITLE:OnGetProcess
//Description: This function for control reflash the process
//INPUT:VOID
//OUTPUT:VOID
//AUTHOR:Mercury Xu
//Data: 2008-08-07
//////////////////////////////////////////////////////////////////////
void CCEProcessSitterDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
HANDLE Snapshot;
Snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
//获得某一时刻系统的进程、堆(heap)、模块(module)或线程的快照信息
PROCESSENTRY32 processListStr;
processListStr.dwSize = sizeof(PROCESSENTRY32);
BOOL return_value;
return_value=Process32First(Snapshot,&processListStr);
//获得系统进程链表中第一个进程的信息
m_showlist.DeleteAllItems();
int i = 0;
while(return_value)
{
m_showlist.InsertItem(i,processListStr.szExeFile,0);
CString s;
s.Format(_T("%d"),processListStr.cntThreads);
m_showlist.SetItemText(i,1,s);
s.Format(_T("%d"),processListStr.th32ParentProcessID);
m_showlist.SetItemText(i,2,s);
s.Format(_T("%d"),processListStr.pcPriClassBase);
m_showlist.SetItemText(i,3,s);
int memory=processListStr.cntThreads;
//把代表进程的ID号,存入数组中,便于中止
m_ProcessIndex[i]=processListStr.th32ProcessID;
//获得系统进程链表中下一个进程的信息
return_value=Process32Next(Snapshot,&processListStr);
i++;
}
}
/////////////////////////////////////////////////////////////////////
//TITLE:OnHitPipi
//Description: This function for control reflash the process
//INPUT:VOID
//OUTPUT:VOID
//AUTHOR:Mercury Xu
//Data: 2008-08-07
//////////////////////////////////////////////////////////////////////
void CCEProcessSitterDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
POSITION pos = m_showlist.GetFirstSelectedItemPosition();
int currentSelect=m_showlist.GetNextSelectedItem(pos);
if(currentSelect>0)
{
//选择某项
CString FileBuffer;
//获得进程的可执行文件的文件名
FileBuffer=CString(TEXT("Do you want Hit the ")+m_showlist.GetItemText(currentSelect,0)+TEXT("'s Pipi?"));
if(AfxMessageBox(FileBuffer,MB_OKCANCEL,0)==IDOK)
{ //先获得该进程句柄,通过进程标识
HANDLE ProcessHandle;
ProcessHandle=OpenProcess(PROCESS_ALL_ACCESS,FALSE,m_ProcessIndex[currentSelect]);
//利用数组ID指定的获得存在的一个进程的句柄
if(ProcessHandle)
{
//中止进程
TerminateProcess(ProcessHandle,0);
AfxMessageBox(_T("Stop Now!"));
//刷新显示
OnBnClickedButton1();
}
else
{
AfxMessageBox(_T("System could stop it!"));
}
}
}
else
{
AfxMessageBox(_T("Please choice one press!"),MB_OK);
}
}
/////////////////////////////////////////////////////////////////////
//TITLE:OnBnClickedButton3
//Description: This function for Call TouchCalibrate Function
//INPUT:VOID
//OUTPUT:VOID
//AUTHOR:Mercury Xu
//Data: 2008-08-07
//////////////////////////////////////////////////////////////////////
void CCEProcessSitterDlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
TouchCalibrate();
}
/////////////////////////////////////////////////////////////////////
//TITLE:OnBnClickedButton4
//Description: This function for Call SetTime Function
//INPUT:VOID
//OUTPUT:VOID
//AUTHOR:Mercury Xu
//Data: 2008-08-07
//////////////////////////////////////////////////////////////////////
void CCEProcessSitterDlg::OnBnClickedButton4()
{
// TODO: 在此添加控件通知处理程序代码
CString m_temp_1;
m_temp_1 = _T("\\DataStorage\\SetTime.exe");
LPTSTR pStr_1 = m_temp_1.GetBuffer(0);
m_temp_1.ReleaseBuffer();
LPTSTR szMapPath = _wcsdup(pStr_1);
if( !CreateProcess( szMapPath,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
)
)
{
::AfxMessageBox( _T("CreateProcess failed."));
}
}
/////////////////////////////////////////////////////////////////////
//TITLE:OnBnClickedButton5
//Description: This function for Call Set Other Function
//INPUT:VOID
//OUTPUT:VOID
//AUTHOR:Mercury Xu
//Data: 2008-08-07
//////////////////////////////////////////////////////////////////////
void CCEProcessSitterDlg::OnBnClickedButton5()
{
// TODO: 在此添加控件通知处理程序代码
CString m_temp_1;
m_temp_1 = _T("\\DataStorage\\SetVolum.exe");
LPTSTR pStr_1 = m_temp_1.GetBuffer(0);
m_temp_1.ReleaseBuffer();
LPTSTR szMapPath = _wcsdup(pStr_1);
if( !CreateProcess( szMapPath,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
)
)
{
::AfxMessageBox( _T("CreateProcess failed."));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -