windows api之EnumProcesses (查询系统所有进程ID)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows api之EnumProcesses (查询系统所有进程ID)相关的知识,希望对你有一定的参考价值。
参考技术A #include#include
#include
#include
#pragma once
#pragma message("Psapi.h --> Linking with Psapi.lib")
#pragma comment(lib,"Psapi.lib")
int main()
DWORD proId[500];
DWORD* pProId = proId;
DWORD totlaNum = 1000;
DWORD num = 4;
BOOL ret = EnumProcesses(pProId, totlaNum, &num);
for (int i = 0; i < 500; i++)
printf("%d ", proId[i]);
#获取了系统所有进程ID之后,就可以遍历ID,对进程进行相关处理了。比如杀死进程,退出等
Windows API调用外部程序之图片查看
最近顺手接了一个小活,任务目标是将一组图像依次显示出来。环境就是XP中,代码嵌入到一个MFC工程里,图片是未经处理的可能是JPEG2000格式的j2c,也可能是bitmap。当然还可能没有任何的文件头,这个最后看实际情况再添加吧。
主要就是调用外部程序(j2c可以用网上的ivanview或kakadu,bmp就用Windows的图片查看工具),打开/关闭这两个功能。文件便利可以用CFileFind类,这里用的FindFirstFile和FindNextFile。
打开可以使用system(),还可以用ShellExecuteA();关闭的话可以向窗口发送一个关闭的消息,需要事先获得窗口的句柄,也可以用system("taskkill")。思路就是这样,下面是代码。
1 HWND hDisplay; 2 HANDLE finder; 3 WIN32_FIND_DATA findFileData; 4 BOOL isOK=TRUE; 5 CString path("C:\\vs_p\\testopencv\\testopencv\\Debug\\"); 6 CString title(" - Windows 图片和传真查看器"); 7 finder=FindFirstFile(path+_T("*.bmp"),&findFileData); 8 while((finder!=NULL) && (isOK)) 9 { 10 ShellExecute(NULL,L"open",(path+findFileData.cFileName),NULL,NULL, SW_SHOWNORMAL); //打开文件 11 Sleep(5000); //让子弹飞一会 12 CString fulltitle=findFileData.cFileName+title; 13 hDisplay=::FindWindow(NULL,fulltitle); 14 ::PostMessage(hDisplay ,WM_CLOSE,0,0); //发送关闭窗口的消息 15 isOK=FindNextFile(finder,&findFileData); 16 } 17 //system("C:\\vs_p\\testopencv\\testopencv\\Debug\\a.bmp");//通过默认应用打开某文件 18 //system("\"C:\\Program Files\\IvanView\\ivanview.exe\" C:\\1336.pdf.asan.47.376.jp2");//通过指定应用打开某文件
我的工作不是程序员,写这几行代码就是个兴趣爱好,留个记录。
以上是关于windows api之EnumProcesses (查询系统所有进程ID)的主要内容,如果未能解决你的问题,请参考以下文章