导航:首页 > 文件教程 > getprocessid头文件

getprocessid头文件

发布时间:2023-05-25 13:15:22

❶ VC++ 判断进程是否存在 问题

那段代码就高贺是一戚销派个现成的函数,你斗闹直接用就行了,例如:if(GetProcessidFromName("qq.exe")) AfxMessageBox("存在");

❷ C++怎么编写一个强制关闭程序的程序

ring3级的都是调用 OpenProcess TerminateProcess 等相关的API函数,你自己找下这方面的代码 。 如果只是为了结束它,你可以使用 sysinternals工具包中的 procexp.exe 这个功能强大。另外,有悔者时候吧,没必要非得结束掉进程,你可以通过调用 suspendprocess等API函数把进程挂起,原来的时候,我在网吧上锋谈网,老是碰到一些管理软件,用procexp直接右键”挂银前碰起“ 就好了,因为这样的管理程序,往往都是互相创建和防结束的,挂起是最委婉且有效的作法。

❸ 怎么获取进程 C++

DWORD GetProcessIdFromName(LPCTSTR name) //通过执行文件名获得进程ID的方法
{
PROCESSENTRY32 pe;
DWORD id = 0;

HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize = sizeof(PROCESSENTRY32);
if( !Process32First(hSnapshot,&pe) )
return 0;

do
{
pe.dwSize = sizeof(PROCESSENTRY32);
if( Process32Next(hSnapshot,&pe)==FALSE )
break;
if(strcmp(pe.szExeFile,name) == 0)
{
id = pe.th32ProcessID;
break;
}

} while(1);

CloseHandle(hSnapshot);

return id;
}

上面的函掘敏数通过程序获取ID
有这个ID就可以操作这个进程了
比如,关蔽散和闭一宏盯个进程:QQ.exe

DWORD dwQQID = GetProcessIdFromName("QQ.exe");
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwQQID); //打开进程
if(!hProcess)
{
TerminateProcess(hProecss, 0); //关闭进程
}
CloseHandle(hProcess);

❹ PsGetProcessJob需要包含什么头文件

头文件是

Ntddk.h

❺ 无法定位程序输入点GetProcessId 于动态链接库 KERNEL32.dll 怎么办啊

无法定位程序输入点的修复方案:
软件修复:
下载安装金山卫士,进入主界面进入【查杀木马】
然后点击【快速扫描】即可
手动修复无法定位程序输入点
于动态链接库上方法
1.通过互联网上搜索下载下载你所需dll,把你所想要的dll输入到搜索框里去,注意搜索时一定要开启金山卫士的上网安全浏览功能,以免因无法定位程序输入点的问题导致进入挂马或者钓鱼站点引起电脑中毒。
2.重启电脑快捷键f2或者f8进入安全模式
3.将缺少的dll放到C:\windows\system32\
即可

❻ VC++ 判断进程是否存在的问题

CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //创建系统进程列表快照,返回一个快照的句柄。不懂快照、句柄是什么意思的话自己网络,简单的理解的话快照类似于数据库中的视图,而句柄就是一个无符号整数,相当于一个ID。

pe.dwSize=sizeof(PROCESSENTRY32); //这一句就是显式地指明PROCESSENTRY32结构体的大小,看似有些多余,但是MSDN上说不能省略,我自己测试的时候省略也会出错。

if(!Process32First(hSnapshot,&pe)) return 0; //这一句调用Process32First开始遍历快照中的进程列表,把进程的信息拷贝到pe这个数据结构中。如果失败返回FALSE,也就不需要执行后续的Process32Next遍历整个列表了。这个函数跟Process32Next配合可以逐个遍历进程列表,Process32Next参数跟Process32First一样,也同样失败返回FALSE,成功就会一个接一个逐个地把进程列表中快照中的进程的信息拷贝到pe这个数据结构中纯闹。值得一提的是,正是由于采用的是进程快照的方式获取进程的信息,所以如果在这个过程中某个或某些进程被其他程序关闭或者自己结束,或者进程队列中加入了新的进程,hSnapShot指向的快照中不会反映这个变化。SnapShot就好比给人拍张照,记录的只是一个人瞬间的样貌,但是从哲学上讲事物都是运动的,无法代表这个人的现状,同样这里的进程快照能够反映的也只是创建快照时系统的进程队列中全部进程的状况。使用快照的好处是什么呢?就是不需要在后面的获取进程的信息时每次都重新反复地获取系统中的进程的列表,而是以快照的方式存储起来,所以速度比较快,也利于保护数据。缺点就是没有实时性。但是一般情况下快照就够用了。

if(strcmp(pe.szExeFile,name)==0) //这个很好理解,就是比较pe.szExeFile和name是否一样,具体的比较方法是比较两者的ASCII码的差值,不懂ASCII码和strcmp的话自己网络,不解释。

id=pe.th32ProcessID;

return id;

这两句放在一起看作用就是返回进程的PID,就是CMD TASKLIST中看到的那个PID,是用来唯一标识进程的ID。后续的察皮OpenProcess访问进程的操作需要的就是这个ID。你用OpenProcess可以得到进程的句柄hProcess,然后调用TerminateProcess hProcess,0就能够强制结束一般的进程了。

中间的CloseHandle(hSnapshot); //这一句可以理解为垃圾回收,作用就是释放掉用败裤差CreateToolhelp32Snapshot创建的快照句柄标识的内存空间。

另外,楼下那位朋友说的很对,你的代码无法做到不区分大小写的比较进程名称。所以最好自己添加个处理过程统一下大小写。我给个不用CString的实现方法,仅供参考:

其实就是自己先编写个全部转换为大写的函数然后再比较。

//内联函数,用来返回空字符串。
inline char* DefReturn()
{
char *ret = new char[1];
ret[0] = '\0';
return ret;
}

char* UCase(char *chOri)
{

if(chOri == NULL) return DefReturn();
size_t nLen = strlen(chOri);
if(nLen)
{
char *chRet = new char[nLen+1];
for(size_t index = 0; index<nLen; index++)
{
chRet[index] = toupper(chOri[index]);
}
chRet[index] = '\0';
return chRet;
}
else
{
return chOri;
}
}
//全部转化内大写后开始比较
if(strcmp(UCase(pe.szExeFile),UCase(name))==0)
{
id=pe.th32ProcessID;

break;
}

阅读全文

与getprocessid头文件相关的资料

热点内容
dede工具 浏览:507
5g网盟app怎么下载 浏览:486
微信备份老是连接中断 浏览:886
出台多少份文件 浏览:380
鞋子怎么搭配衣服的app 浏览:755
文件名使用的通配符的符号是什么 浏览:916
lol分卷文件损坏怎么办 浏览:276
6分管车螺纹怎么编程 浏览:732
海口农商银行信用卡app是什么 浏览:770
win10任务栏文件夹我的电脑 浏览:14
安卓nba2k18 浏览:776
文件夹密码怎么修改密码 浏览:271
苹果数据中心用什么服务器 浏览:769
省内圆通快递寄文件夹需要多少钱 浏览:740
iphone程序加密 浏览:884
win10文件夹调整文件行高 浏览:681
创意手绘教程 浏览:754
微信删除帐号信息 浏览:596
mysql操作类文件 浏览:649
绕过xp密码 浏览:158

友情链接