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操作系 ...
随机推荐
- FileUtils类介绍
Java的文件操作太基础,缺乏很多实用工具,比如对目录的操作,支持就非常的差了.如果你经常用Java操作文件或文件夹,你会觉得反复编写这些代码是令人沮丧的问题,而且要大量用到递归. 下面是的一个解决方 ...
- 2D游戏编程2--windows高级编程
windows应用程序布局 编译流程 响应菜单事件消息 菜单消息处理实例: LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wpar ...
- 【Apache Kafka】安装指南
在Ubuntu12.04 server上安装单结点kafka,我的机器上之前已经安装过zookeeper-3.4.5 根据官网的说明:http://kafka.apache.org/07/quicks ...
- PMP考试的过与只是
我在一年多时间里參加了三次PMP考试,前两次都失败,直到第三次才成功.怎样对待失败?这是每个人都会遇到的挑战.假设我们能用正确的态度对待临时的失败,那么终于的成功也就不远了.我希望通过本文与大家分享一 ...
- oracle7
管理初始化参数 管理初始化参数(调优的一个重要知识点,凭什么可以对数据库进行调优呢?是因为它可以对数据库的一些参数进行修改修正) 初始化参数用于设置实例或是数据库的特征.oracle9i提供了200多 ...
- tcpreplay安装使用经验
tcpreplay安装使用经验 #Author: ypguo#Data: 2010.4.23#Version: 1.2 增加了修改VLAN tag内容. 1.1 ...
- apache kafka技术分享系列(目录索引)--转载
原文地址:http://blog.csdn.net/lizhitao/article/details/39499283 kafka开发与管理: 1)apache kafka消息服务 2)kafak安装 ...
- Java获取真实的IP地址--转载
// 获取真实IP的方法() public String getIpAddr() { String ip = request.getHeader("x-forwarded-for" ...
- linux常用的压缩与解压缩命令 分类: 学习笔记 linux ubuntu 2015-07-05 19:38 38人阅读 评论(0) 收藏
1.gzip 压缩 gzip 是压缩文件,压缩之后文件后缀为.gz 用法:gzip 选项 [文件] 2.gunzip 解压 这个命令与gzip的功能刚好相反,这个是解压. 用法 gunzip 选项 [ ...
- Ⅲ.AngularJS的点点滴滴-- 路由
路由ngRoute (需要依赖ngRoute模块) <html> <script src="http://ajax.googleapis.com/ajax/libs/ang ...