首页 > 系统相关 >(C++)wchar_t 转 string / TCHAR转为char/判断是否进程运行/获得目标进程的入口

(C++)wchar_t 转 string / TCHAR转为char/判断是否进程运行/获得目标进程的入口

时间:2022-12-29 15:32:25浏览次数:50  
标签:include string lib process TCHAR char 进程 wchar NULL


首先是wchar_t转string

void Wchar_tToString(string& szDst, wchar_t* wchar)
{
wchar_t* wText = wchar;
DWORD dwNum = WideCharToMultiByte(CP_OEMCP, NULL, wText, -1, NULL, 0, NULL, FALSE);
char* psText;
psText = new char[dwNum];
WideCharToMultiByte(CP_OEMCP, NULL, wText, -1, psText, dwNum, NULL, FALSE);
szDst = psText;
delete[]psText;
}

TCHAR转char

//将TCHAR转为char  
void TcharToChar(const TCHAR* tchar, char* _char)
{
int iLength;
//获取字节长度
iLength = WideCharToMultiByte(CP_ACP, 0, tchar, -1, NULL, 0, NULL, NULL);
//将tchar值赋给_char
WideCharToMultiByte(CP_ACP, 0, tchar, -1, _char, iLength, NULL, NULL);
}

//判断是否进程运行

//判断是否进程运行
bool isProcessRun(string process_name)
{
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (INVALID_HANDLE_VALUE == hSnapshot) {
return NULL;
}
PROCESSENTRY32 pe = {sizeof(pe) };
for (BOOL ret = Process32First(hSnapshot, &pe); ret; ret = Process32Next(hSnapshot, &pe)) {
wchar_t* process_str = pe.szExeFile;
string current_process_name;
Wchar_tToString(current_process_name, process_str);
if (current_process_name == process_name) {
g_ProcessRun = true;
break;
}
}
CloseHandle(hSnapshot);
return g_ProcessRun;
}

//获得目标进程的入口

//获得目标进程的入口
LPBYTE GetExeEntryPoint(char* filename)
{
PIMAGE_NT_HEADERS pNTHeader;
DWORD pEntryPoint;
PLOADED_IMAGE pImage;
pImage = ImageLoad(filename, NULL);
if (pImage == NULL)
return NULL;
pNTHeader = pImage->FileHeader;//获得文件头
pEntryPoint = pNTHeader->OptionalHeader.AddressOfEntryPoint + pNTHeader->OptionalHeader.ImageBase; //???看不懂
ImageUnload(pImage);
return (LPBYTE)pEntryPoint;
}

上述方法引用的头文件:

#include <iostream>
#include <stdarg.h>
#include <Windows.h>
#include <Psapi.h>
#include <stdint.h>
#include <tlhelp32.h>
#include <imagehlp.h>
#pragma comment(lib,"Psapi.lib") //编译这个lib文件
#pragma comment(lib,"imagehlp.lib") //编译这个lib文件

直接调用即可,希望C++封装越做越好,争取接近python

标签:include,string,lib,process,TCHAR,char,进程,wchar,NULL
From: https://blog.51cto.com/u_15906863/5977841

相关文章

  • 根据进程名判断该进程是否存在(C++)
    直接调用方法就ok代码如下:boolg_ProcessRun=false;//wchar_t转string;voidWchar_tToString(string&szDst,wchar_t*wchar){wchar_t*wText=wchar;DWORDdwNum......
  • Linux - 进程间通信(IPC)
    常见的通信方式管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。命名管道FIFO:有名管道......
  • (转载)Windows 查找占用串口(COM)的进程
    原文地址:Windows查找占用串口(COM)的进程_weixin_42501466的博客-CSDN博客_如何查看串口被哪个程序占用查找占用串口的进程1、Win+R打开运行窗口2、输入regedi......
  • GDB调试多进程的命令介绍和演示
    命令汇总命令作用infoinferiors查看所有进程inferiors2切换到编号为2的进程detachinferiors2detach掉编号为2的进程killinferiors2kill掉编......
  • JENKINS调用打包工具,编译ISM文件时系统出现多个MSIEXEC.EXE进程的解决方式
    最近一直在搞INSTALLSHIELD打包工具,今天遇到的问题,我的编译脚本中有使用INSTALLSHIELD的编译ISM文件的命令:iscmdbld.exe-pD:\Jenkins-workdirectory\Tools\Setupxxxx......
  • switch 对String类型的支持(jdk-8)
    switch对int型变量的判断是直接比较整数的值。 switch对char类型的判断实际上是ASCII码,编译器会把char型的变量变成对应的int型、遍历 switch对String类型的支持是......
  • Python 多进程下载站点所有小说
    小说,宅男必备,也是当今社会人们打发时间的一种方式。今天给大家分享的,喜欢看小说的同学可以收藏起来了!!目标站点:https://www.zhenhunxiaoshuo.com爬取思路:获取站点分类下的书......
  • Linux进程管理
    ps--静态查看进程ps-elf或psaux-e:显示所有进程,环境变量-l:代表长格式-f:代表完整的格式a:显示所有用户的所有进程u:显示进程的拥有者x:和a一起使用,显示所有进程(包......
  • string 模块
    string模块简单分析字符串常量点击查看代码whitespace='\t\n\r\v\f'#空白字符ascii_lowercase='abcdefghijklmnopqrstuvwxyz'#全英文小写ascii_uppercas......
  • Python之多任务编程进程和线程的对比
    1.进程和线程的对比的三个方向关系对比区别对比优缺点对比2.关系对比线程是依附在进程里面的,没有进程就没有线程。一个进程默认提供一条线程,进程可以创建多个线程。3.区......