windows进程函数试炼
实践一下windows进程相关函数:
代码如下:
// test__getinformation.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <windows.h>
#include <TlHelp32.h> #ifndef CONST
#define CONST const
#endif #ifndef IN
#define IN
#endif #ifndef OUT
#define OUT
#endif #ifndef INOUT
#define INOUT
#endif #ifndef OPTIONAL
#define OPTIONAL
#endif namespace TEST__GETINFORMATION
{ //获取当前进程id
DWORD GetCurrentProcessId()
{
return ::GetCurrentProcessId();
} //获取当前进行名称
BOOL GetCurrentProcessName(INOUT LPTSTR szCurrentProcessName, IN DWORD cchCurrentProcessNameSize)
{
if ( != ::GetModuleFileName(NULL, szCurrentProcessName, cchCurrentProcessNameSize))
{
return TRUE;
}
return FALSE;
} //根据进程名称获取进程id(根据进程id可以用OpenProcess函数获取进程句柄,有了句柄就可以做任何事情了)
BOOL GetProcessIdByName(IN LPTSTR szProcessName, IN DWORD cchProcessNameSize, OUT LPDWORD lpdwProcessId)
{
HANDLE hSnapshot = NULL;
PROCESSENTRY32 stProcessInfor; hSnapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, );
if (INVALID_HANDLE_VALUE == hSnapshot) return FALSE;
stProcessInfor.dwSize = sizeof(PROCESSENTRY32);
if (FALSE == ::Process32First(hSnapshot, &stProcessInfor)) return FALSE;
if ( == ::lstrcmp(szProcessName, stProcessInfor.szExeFile))
{
*lpdwProcessId = stProcessInfor.th32ProcessID;
return TRUE;
}
while (TRUE == ::Process32Next(hSnapshot, &stProcessInfor))
{
if ( == ::lstrcmp(szProcessName, stProcessInfor.szExeFile))
{
*lpdwProcessId = stProcessInfor.th32ProcessID;
return TRUE;
}
}
return FALSE;
} //根据进程id获取进程句柄
HANDLE GetProcessHandleById(IN DWORD dwProcessId, IN DWORD dwDesiredAccess)
{
return ::OpenProcess(dwDesiredAccess, TRUE, dwProcessId);
} }
int _tmain(int argc, _TCHAR* argv[])
{
//获取当前进程id
DWORD dwCurrentProcessId = TEST__GETINFORMATION::GetCurrentProcessId(); //获取当前进行名称
LPTSTR szCurrentProcessName = (LPTSTR)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, MAX_PATH*sizeof(TCHAR));
if (NULL == szCurrentProcessName) return ;
BOOL bSuccess = TEST__GETINFORMATION::GetCurrentProcessName(szCurrentProcessName, MAX_PATH);
::HeapFree(::GetProcessHeap(), , szCurrentProcessName);
szCurrentProcessName = NULL; //根据进程名称获取进程id(根据进程id可以用OpenProcess函数获取进程句柄,有了句柄就可以做任何事情了)
LPTSTR szGoComProcessName = (LPTSTR)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, MAX_PATH*sizeof(TCHAR));
LPTSTR szGoComFileName = TEXT("GoCom.exe");
DWORD dwGoGcomProcessId = ;
::wsprintf(szGoComProcessName, TEXT("%s"), szGoComFileName);
bSuccess = TEST__GETINFORMATION::GetProcessIdByName(szGoComProcessName, MAX_PATH, &dwGoGcomProcessId);
::HeapFree(::GetProcessHeap(), , szGoComProcessName);
szGoComProcessName = NULL; //根据进程id获取进程句柄
HANDLE hProcessHandle = TEST__GETINFORMATION::GetProcessHandleById(dwGoGcomProcessId, PROCESS_ALL_ACCESS);
if (FALSE == hProcessHandle) return ;
::CloseHandle(hProcessHandle); return ;
}
windows进程函数试炼的更多相关文章
- Windows API 函数列表 附帮助手册
所有Windows API函数列表,为了方便查询,也为了大家查找,所以整理一下贡献出来了. 帮助手册:700多个Windows API的函数手册 免费下载 API之网络函数 API之消息函数 API之 ...
- windows进程/线程创建过程 --- windows操作系统学习
有了之前的对进程和线程对象的学习的铺垫后,我们现在可以开始学习windows下的进程创建过程了,我将尝试着从源代码的层次来分析在windows下创建一个进程都要涉及到哪些步骤,都要涉及到哪些数据结构. ...
- windows进程的创建方法
1.WinExec(LPCSTR lpCmdLine,UINT uCmdShow) >>参数: lpCmdLine:指定程序的相对路径或绝对路径,命令行参数 uCmdShow:指定窗口的显 ...
- Windows进程
一.Windows进程 1.进程 进程是一种容器,包含了应用程序实例的各种资源. 2.Windows进程的一些特点 2.1.进程中包含了执行代码等资源 2.2.进程都具有私有的地址空间 2.3.每个进 ...
- 走进windows编程的世界-----windows进程
Windows进程 1 Windows进程 进程是一个容器,包括了一个应用程序实例的各种资源.Windows多任务的操作系统,因此能够同一时候运行多个进程. 2 Windows进程的 ...
- windows socket函数详解
windows socket函数详解 近期一直用第三方库写网络编程,反倒是遗忘了网络编程最底层的知识.因而产生了整理Winsock函数库的想法.以下知识点均来源于MSDN,本人只做翻译工作.虽然很多前 ...
- Windows进程间的通信
一.进程与进程通信 进程间通信(Interprocess Communication, IPC)是指不同的进程之间进行数据共享和数据交换. 二.进程间通信方式 1. 文件映射 注:文件映射是在多 ...
- Windows进程间共享内存通信实例
Windows进程间共享内存通信实例 抄抄补补整出来 采用内存映射文件实现WIN32进程间的通讯:Windows中的内存映射文件的机制为我们高效地操作文件提供了一种途径,它允许我们在WIN32进程中保 ...
- Windows进程间各种通信方式浅谈
1 Windows进程间通信的各种方法 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码.数据以及它可利用的系统资源(如文件.管道等)组成. 多进程/多线程是Windows操作系 ...
随机推荐
- 去掉有序数组中重复数字 原地 leetcode java (最简单的方法)
1.利用荷兰国旗的思路,每次记住最后一个位置,遇到一个不重复的数,放在它后面,代码很简单. Given a sorted array, remove the duplicates in place s ...
- 2010 A B 2011 A B
湖南人文科技学院公共课 2010---2011学年第1学期<中国近代史纲要>课程考核试卷(A) 考核方式: (闭卷) ...
- window7电脑设置好了,却无法远程?
设置远程连接: 步骤:右键[我的电脑]-->[属性] 点击[远程设置],然后设置如下: 在 cmd 中 通过 [ipconfig]命令查看IP: 以上设置好了,发现仍无法远程?解决办法如下: 电 ...
- python中类的继承
python中类的继承 在python中面向对象编程中实现继承,以下面一个实例进行说明. class SchoolMenber(): # __init__类似于c++中的构造函数 # __init__ ...
- Yii框架tips(转)
yii的一些小的技巧 http://www.yiichina.com/topic/151 db组件 'schemaCachingDuration'=>3600, 为什么不起做用?需要开缓存 如何 ...
- 记录:Ubuntu下配置java
使用的Ubuntu版本为:Ubunyu Kylin 14.04 >>下载JDK 网页链接:http://www.oracle.com/technetwork/java/javase/dow ...
- 泛型类、Map集合
————泛型: JDK1.5之后出现的新特性:用于解决安全问题,是一个类型安全机制. 好处: 1.将运行时期出现的问题ClassCastException ,转移到了编译时期,方便于程序员解决问题,让 ...
- 关于wordpress在修改固定链接后,总显示Not Found的问题
参考来源: http://chinablog.blog.51cto.com/276793/280278 一.问题背景 使用wordpress搭建网站,为了让文章URL看起来漂亮一点,wordpress ...
- (转)解决png图片在IE6下不透明的方法
来源于:http://xzl52199.blog.163.com/blog/static/95206446201142174540220/ 一.传统的JavaScript方法 思路: 1.一个专门解决 ...
- angularjs ngrepeat filter
angularjs ng-repeat filter演示样例 地址