实践一下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进程函数试炼的更多相关文章

  1. Windows API 函数列表 附帮助手册

    所有Windows API函数列表,为了方便查询,也为了大家查找,所以整理一下贡献出来了. 帮助手册:700多个Windows API的函数手册 免费下载 API之网络函数 API之消息函数 API之 ...

  2. windows进程/线程创建过程 --- windows操作系统学习

    有了之前的对进程和线程对象的学习的铺垫后,我们现在可以开始学习windows下的进程创建过程了,我将尝试着从源代码的层次来分析在windows下创建一个进程都要涉及到哪些步骤,都要涉及到哪些数据结构. ...

  3. windows进程的创建方法

    1.WinExec(LPCSTR lpCmdLine,UINT uCmdShow) >>参数: lpCmdLine:指定程序的相对路径或绝对路径,命令行参数 uCmdShow:指定窗口的显 ...

  4. Windows进程

    一.Windows进程 1.进程 进程是一种容器,包含了应用程序实例的各种资源. 2.Windows进程的一些特点 2.1.进程中包含了执行代码等资源 2.2.进程都具有私有的地址空间 2.3.每个进 ...

  5. 走进windows编程的世界-----windows进程

    Windows进程  1 Windows进程    进程是一个容器,包括了一个应用程序实例的各种资源.Windows多任务的操作系统,因此能够同一时候运行多个进程.      2 Windows进程的 ...

  6. windows socket函数详解

    windows socket函数详解 近期一直用第三方库写网络编程,反倒是遗忘了网络编程最底层的知识.因而产生了整理Winsock函数库的想法.以下知识点均来源于MSDN,本人只做翻译工作.虽然很多前 ...

  7. Windows进程间的通信

    一.进程与进程通信   进程间通信(Interprocess Communication, IPC)是指不同的进程之间进行数据共享和数据交换. 二.进程间通信方式 1.  文件映射 注:文件映射是在多 ...

  8. Windows进程间共享内存通信实例

    Windows进程间共享内存通信实例 抄抄补补整出来 采用内存映射文件实现WIN32进程间的通讯:Windows中的内存映射文件的机制为我们高效地操作文件提供了一种途径,它允许我们在WIN32进程中保 ...

  9. Windows进程间各种通信方式浅谈

    1 Windows进程间通信的各种方法 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码.数据以及它可利用的系统资源(如文件.管道等)组成. 多进程/多线程是Windows操作系 ...

随机推荐

  1. 2D游戏编程4—Windows事件

    windows消息传来的参数分解: Message: WM_ACTIVATE Parameterization: fActive      = LOWORD(wParam);       // act ...

  2. POI2001 金矿

    问题描述 金矿的老师傅年底要退休了.经理为了奖赏他的尽职尽责的工作,决定在一块包含 n(n ≤ 15000) 个采金点的长方形土地中划出一块长度为 S ,宽度为 W 的区域奖励给他(1 ≤ s , w ...

  3. [置顶] 在Ubuntu下实现一个简单的Web服务器

    要求: 实现一个简单的Web服务器,当服务器启动时要读取配置文件的路径.如果浏览器请求的文件是可执行的则称为CGI程序,服务器并不是将这个文件发给浏览器,而是在服务器端执行这个程序,将它的标准输出发给 ...

  4. 中文乱码问题(使用Servlet3.0新特性实现文件上传——上传文件名中文乱码问题)

    问题描述:就是文件传送过来的文件名等是乱码 解决方法:将传送的JSP页面(即含有表单的页面)的页面编码方式改为: <%@ page contentType="text/html; ch ...

  5. Quartz定时任务学习(四)调度器

    org.quartz.Scheduler 类层次 作为一个 Quartz 用户,你要与实现了 org.quartz.Scheduler 接口的类交互.在你调用它的任何 API 之前,你需要知道如何创建 ...

  6. careercup-数组和字符串1.1

    1.1 实现一个算法,确定一个字符串的所有字符是否全部不同.假设不允许使用额外的数据结构,又该如何处理? C++实现: #include<iostream> #include<str ...

  7. [Labview资料] labview事件结构学习

      编程的主要目的是为了实现用户的某种功能,用户通过用鼠标.键盘.程序内部等触发某种程序动作,从而达到某种结果,这些操作都被称作为事件,LabVIEW中相应这些事件最常用的结构就是“事件结构”.事件结 ...

  8. Regular Expressions in Grep Command with 10 Examples --reference

    Regular expressions are used to search and manipulate the text, based on the patterns. Most of the L ...

  9. 查找字符串(C++实现)

    查找字符串(C++实现),不使用库函数: // SubString.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include < ...

  10. 关于js中伪数组

    伪数组: 具有length属性: 按索引方式存储数据: 不具有数组的push().pop()等方法: 伪数组无法直接调用数组方法或期望length属性有什么特殊的行为,不具有数组的push().pop ...