区块链技术博客
www.b2bchain.cn

查看window应用程序所需DLL求职学习资料

本文介绍了查看window应用程序所需DLL求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

  • 前言
  • 实现
  • 原型
  • 使用

前言

对于应用程序发布,为了保证在其他电脑上可以运行,我们要将其他电脑上可能没有的通用模块找到,一并打包,这样才不会翻船。否则就像最上面的图片里的提示一样,因为缺少模块而无法运行。

但是有时候一个一个去找也很麻烦,我们还可以加一些规则或者功能,迅速将需要的文件拷到指定路径。下面就开始今天的旅程了!

实现

直接进入主题,对于window系统来说,它提供的API就有相关功能。
第一个用到的就是 CreateToolhelp32Snapshot,该函数通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照。
说到底,可以获取系统中正在运行的进程信息,线程信息,等。

原型

CreateToolhelp32Snapshot 函数原型如下:

tlhelp32.h  // 所要包含的头文件 HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFlags,DWORD th32ProcessID);
  • dwFlags
    指定快照中包含的系统内容,这个参数能够使用下列数值(常量)中的一个或多个。
    TH32CS_INHERIT(0x80000000) – 声明快照句柄是可继承的。
    TH32CS_SNAPALL – 在快照中包含系统中所有的进程和线程。
    TH32CS_SNAPHEAPLIST(0x00000001) – 在快照中包含在th32ProcessID中指定的进程的所有的堆。
    TH32CS_SNAPMODULE(0x00000008) – 在快照中包含在th32ProcessID中指定的进程的所有的模块。
    TH32CS_SNAPPROCESS(0x00000002) – 在快照中包含系统中所有的进程。
    TH32CS_SNAPTHREAD(0x00000004) – 在快照中包含系统中所有的线程。
    H32CS_SNAPALL = (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)

  • th32ProcessID
    指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST或者TH32CS_SNAPMODULE后才有效,在其他情况下该参数被忽略,所有的进程都会被快照。

  • 返回值
    调用成功,返回快照的句柄,调用失败,返回INVALID_HANDLE_VALUE 。

使用

那么这个函数该如何使用的,请看下面的代码

  • 获取所有进程快照

查看window应用程序所需DLL

“`
// 刷新当前系统中所有进程信息,在左侧列表框显示
void MainWindow::flush()
{
ui->lwProName->clear(); // ui->lwProName 是界面上的 QListWidget 控件,即上图左边控件
PROCESSENTRY32 pe32;
// 在使用这个结构前,先设置它的大小
pe32.dwSize = sizeof(pe32);
// 系统内所有的进程快照
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
return;
// 遍历进程快照,显示每个进程的信息
BOOL bMore = ::Process32First(hProcessSnap,&pe32);
while (bMore)
{
// 进程名称

  • 前言
  • 实现
  • 原型
  • 使用

前言

对于应用程序发布,为了保证在其他电脑上可以运行,我们要将其他电脑上可能没有的通用模块找到,一并打包,这样才不会翻船。否则就像最上面的图片里的提示一样,因为缺少模块而无法运行。

但是有时候一个一个去找也很麻烦,我们还可以加一些规则或者功能,迅速将需要的文件拷到指定路径。下面就开始今天的旅程了!

实现

直接进入主题,对于window系统来说,它提供的API就有相关功能。
第一个用到的就是 CreateToolhelp32Snapshot,该函数通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照。
说到底,可以获取系统中正在运行的进程信息,线程信息,等。

原型

CreateToolhelp32Snapshot 函数原型如下:

tlhelp32.h  // 所要包含的头文件 HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFlags,DWORD th32ProcessID);
  • dwFlags
    指定快照中包含的系统内容,这个参数能够使用下列数值(常量)中的一个或多个。
    TH32CS_INHERIT(0x80000000) – 声明快照句柄是可继承的。
    TH32CS_SNAPALL – 在快照中包含系统中所有的进程和线程。
    TH32CS_SNAPHEAPLIST(0x00000001) – 在快照中包含在th32ProcessID中指定的进程的所有的堆。
    TH32CS_SNAPMODULE(0x00000008) – 在快照中包含在th32ProcessID中指定的进程的所有的模块。
    TH32CS_SNAPPROCESS(0x00000002) – 在快照中包含系统中所有的进程。
    TH32CS_SNAPTHREAD(0x00000004) – 在快照中包含系统中所有的线程。
    H32CS_SNAPALL = (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)

  • th32ProcessID
    指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST或者TH32CS_SNAPMODULE后才有效,在其他情况下该参数被忽略,所有的进程都会被快照。

  • 返回值
    调用成功,返回快照的句柄,调用失败,返回INVALID_HANDLE_VALUE 。

使用

那么这个函数该如何使用的,请看下面的代码

  • 获取所有进程快照

查看window应用程序所需DLL

“`
// 刷新当前系统中所有进程信息,在左侧列表框显示
void MainWindow::flush()
{
ui->lwProName->clear(); // ui->lwProName 是界面上的 QListWidget 控件,即上图左边控件
PROCESSENTRY32 pe32;
// 在使用这个结构前,先设置它的大小
pe32.dwSize = sizeof(pe32);
// 系统内所有的进程快照
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
return;
// 遍历进程快照,显示每个进程的信息
BOOL bMore = ::Process32First(hProcessSnap,&pe32);
while (bMore)
{
// 进程名称

  • 前言
  • 实现
  • 原型
  • 使用

前言

对于应用程序发布,为了保证在其他电脑上可以运行,我们要将其他电脑上可能没有的通用模块找到,一并打包,这样才不会翻船。否则就像最上面的图片里的提示一样,因为缺少模块而无法运行。

但是有时候一个一个去找也很麻烦,我们还可以加一些规则或者功能,迅速将需要的文件拷到指定路径。下面就开始今天的旅程了!

实现

直接进入主题,对于window系统来说,它提供的API就有相关功能。
第一个用到的就是 CreateToolhelp32Snapshot,该函数通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照。
说到底,可以获取系统中正在运行的进程信息,线程信息,等。

原型

CreateToolhelp32Snapshot 函数原型如下:

tlhelp32.h  // 所要包含的头文件 HANDLE WINAPI CreateToolhelp32Snapshot(DWORD dwFlags,DWORD th32ProcessID);
  • dwFlags
    指定快照中包含的系统内容,这个参数能够使用下列数值(常量)中的一个或多个。
    TH32CS_INHERIT(0x80000000) – 声明快照句柄是可继承的。
    TH32CS_SNAPALL – 在快照中包含系统中所有的进程和线程。
    TH32CS_SNAPHEAPLIST(0x00000001) – 在快照中包含在th32ProcessID中指定的进程的所有的堆。
    TH32CS_SNAPMODULE(0x00000008) – 在快照中包含在th32ProcessID中指定的进程的所有的模块。
    TH32CS_SNAPPROCESS(0x00000002) – 在快照中包含系统中所有的进程。
    TH32CS_SNAPTHREAD(0x00000004) – 在快照中包含系统中所有的线程。
    H32CS_SNAPALL = (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)

  • th32ProcessID
    指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST或者TH32CS_SNAPMODULE后才有效,在其他情况下该参数被忽略,所有的进程都会被快照。

  • 返回值
    调用成功,返回快照的句柄,调用失败,返回INVALID_HANDLE_VALUE 。

使用

那么这个函数该如何使用的,请看下面的代码

  • 获取所有进程快照

查看window应用程序所需DLL

“`
// 刷新当前系统中所有进程信息,在左侧列表框显示
void MainWindow::flush()
{
ui->lwProName->clear(); // ui->lwProName 是界面上的 QListWidget 控件,即上图左边控件
PROCESSENTRY32 pe32;
// 在使用这个结构前,先设置它的大小
pe32.dwSize = sizeof(pe32);
// 系统内所有的进程快照
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
return;
// 遍历进程快照,显示每个进程的信息
BOOL bMore = ::Process32First(hProcessSnap,&pe32);
while (bMore)
{
// 进程名称

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 查看window应用程序所需DLL求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们