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操作系 ...
随机推荐
- NodeJS with Express 4.x
Express 4.x 静态资源目录设置: //静态文件目录 app.use('/public', express.static(__dirname+'/public')); app.use('/da ...
- UVA 10652 Board Wrapping(凸包)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=32286 [思路] 凸包 根据角度与中心点求出长方形所有点来,然后就 ...
- 安卓开发无法识别手机原因之一:手机SDK比工程要求的最小SDK低
创建工程时,设置限制的最小SDK: 如果你手机的内核版本比你工程的设置的最小SDK低,则不显示 来自为知笔记(Wiz)
- 探讨Web组件化的实现
CMS组件化,简单架构示意图: Web组件使用WebPage+WebAPI的好处: Ø 组件复用(组件条件管理页面复用+获取组件数据API复用). Ø 组件是分布式的第三方应用,本身高内聚.组件之 ...
- linux下安装php的swoole扩展模块(安装后php加载不出来?)
应开发同事要求,需要安装php的扩展模块swoole.swoole是一种PHP高级Web开发框架,框架不是为了提升网站的性能,而是为了提升网站的开发效率,以最少的性能损耗,换取最大的开发效率. 假设服 ...
- sublime中安装sublimelinter php 语法检查
打开控制台,install package 搜 sublimelinter 先安装sublimelinter本体 安装完以后再搜索一下,安装sublimelinter-php 接下来,打开prefer ...
- C++ 让控制台运行到最后按下回车键才结束的3种方法
初学C++,弄懂了3种在控制台最后需要按回车键才退出返回编辑框的方法 1.最简单的编译生成后,通过Ctrl+F5运行即可(推荐自己调试的时候用,因为程序在别人那里是一闪而过的) 2.先添加头文件“#i ...
- HTML5 简单画图,切片,变形
本人是在校学生,由于这段时间不知道怎么回事,心情比较无聊没有事干,所以利用这段时间学一下HTML5,发博客的目的是为了以后可以查询,也希望各位大神能够指导像我们这样的菜鸟,告别菜鸟的时段 我学东西时候 ...
- Day 3 @ RSA Conference Asia Pacific & Japan 2016 (morning)
09.00 – 09.45 hrs Tracks Cloud, Mobile, & IoT Security A New Security Paradigm for IoT (Inter ...
- 晕,hibernate 的 merge和cascade="all-delete-orphan"要慎重合在一起使用
遇到一个比较后悔莫及事情,使用了hibernate 的 merge和cascade="all-delete-orphan" ,子表数据被删除了. 1.使用cascade=" ...