Rumah pembangunan bahagian belakang Tutorial C#.Net C/C++遍历进程和进程ID的小工具

C/C++遍历进程和进程ID的小工具

Jan 22, 2017 pm 02:06 PM
c/c++

当我们写某些具有破坏性的程序时就需要对进程进行遍历和提取ID 

对于上述功能,我们先介绍几个API


1.CreateToolhelp32Snapshout function

得到进程、模块或者线程的快照

语法如下:

HANDLE WINAPI CreateToolhelp32Snapshot(  
  _In_ DWORD dwFlags,  
  _In_ DWORD th32ProcessID  
);
Salin selepas log masuk

第一个参数:快照中包含了系统的一部分,参数如下:

744.png


745.png

我们这里用TH32CS_SNAPPROCESS

快照包含了系统里面的所有进程。


第二个是关于 PROCESSENTRY32结构体

语法如下:

typedef struct tagPROCESSENTRY32 {  
  DWORD     dwSize;  
  DWORD     cntUsage;  
  DWORD     th32ProcessID;  
  ULONG_PTR th32DefaultHeapID;  
  DWORD     th32ModuleID;  
  DWORD     cntThreads;  
  DWORD     th32ParentProcessID;  
  LONG      pcPriClassBase;  
  DWORD     dwFlags;  
  TCHAR     szExeFile[MAX_PATH];  
} PROCESSENTRY32, *PPROCESSENTRY32;
Salin selepas log masuk

这描述了一个入口,这个入口是当快照被调用时系统地址空间里面的进程被读取。


这里只介绍szExeFile[MAX_PATH]和

th32ParentProcessID:这是创建进程后的进程的标识(父进程)

szExeFile:进程里面可执行文件的名字


下面是源代码!部分函数没有讲解,但可以通过注释或者字面意思可以了解

#include <Windows.h>  
#include <stdio.h>  
#include <TlHelp32.h>  
  
int main()  
{  
    HANDLE hProceessnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);  
    if (hProceessnap == INVALID_HANDLE_VALUE)  
    {  
        printf_s("创建进行快照失败\n");  
        return -1;  
    }  
    else  
    {  
        PROCESSENTRY32 pe32;  
        pe32.dwSize = sizeof(pe32);  
        BOOL hProcess = Process32First(hProceessnap, &pe32);  
        char buff[1024];  
        while (hProcess)  
        {  
            wsprintf(buff, "进程名:%s--------------------进程ID:%d", pe32.szExeFile, pe32.th32ParentProcessID);  
            printf_s("%s\n", buff);  
            memset(buff, 0x00, 1024);  
            hProcess = Process32Next(hProceessnap, &pe32);  
        }  
    }  
    CloseHandle(hProceessnap);  
  
    return 0;  
}
Salin selepas log masuk

运行结果如下


746.png

以上就是C/C++遍历进程和进程ID的小工具的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perbezaan antara php dan c# Apakah perbezaan antara php dan c# Jun 02, 2023 pm 01:45 PM

Perbezaan antara php dan c# ialah: 1. Sistem jenis bahasa adalah berbeza, PHP adalah dinamik, manakala C# adalah jenis statik 2. Platform yang digunakan adalah berbeza, PHP boleh mencapai cross-platform, manakala C# adalah eksklusif untuk Windows 3; . Paradigma pengaturcaraan adalah berbeza, PHP Ia menyokong pengaturcaraan berorientasikan objek, prosedural dan berfungsi, dan C# lebih cenderung kepada pengaturcaraan berorientasikan objek 4. Kelajuan pelaksanaan berbeza, PHP lebih cepat, dan C# agak perlahan; Senario aplikasi adalah berbeza, PHP digunakan dalam pembangunan web, pelayan, dll. C# digunakan untuk desktop Windows dan aplikasi web.

Mengapa dalam C/C++, saiz struktur tidak sama dengan jumlah saiz setiap ahli? Mengapa dalam C/C++, saiz struktur tidak sama dengan jumlah saiz setiap ahli? Aug 26, 2023 am 09:29 AM

Saiz elemen jenis struktur yang diperoleh oleh sizeof() tidak selalu sama dengan saiz setiap ahli individu. Kadangkala pengkompil menambah beberapa padding untuk mengelakkan masalah penjajaran. Jadi dimensi mungkin berubah. Padding ditambah apabila anggota struktur diikuti oleh anggota bersaiz lebih besar atau berada di hujung struktur. Penyusun yang berbeza mempunyai jenis kekangan penjajaran yang berbeza. Dalam piawaian C, jumlah struktur penjajaran adalah bergantung kepada pelaksanaan. Kes 1 Dalam kes ini, z berganda ialah 8 bait panjang, yang lebih besar daripada x (4 bait)). Jadi 4 bait lagi padding ditambah. Selain itu, data jenis pendek y mempunyai 2 bait ruang dalam ingatan, jadi 6 bait tambahan ditambah sebagai padding. Contoh kod #include<stdio.h>structmyS

Buat alat pemformatan kod C/C++ menggunakan alat Clang Buat alat pemformatan kod C/C++ menggunakan alat Clang Aug 26, 2023 pm 01:09 PM

Dalam tutorial ini, kami akan membincangkan program untuk mencipta alat pemformatan kodC/C++dengan alat bantuanhelpofclang.SETUPsudoaptinstallpythonsudoaptinstallclang-format-3.5 Kami kemudiannya akan mencipta fail Python di lokasi yang pengguna semasa mempunyai kebenaran membaca dan menulis. Contoh importoscpp_extensions=(".cxx",".cpp&

Dalam C/C++, terdapat dua operasi: pra-kenaikan dan pasca-kenaikan. Dalam C/C++, terdapat dua operasi: pra-kenaikan dan pasca-kenaikan. Aug 25, 2023 pm 02:25 PM

Di sini kita lihat apa itu pra-kenaikan dan pasca-kenaikan dalam C atau C++. Kedua-dua pra-kenaikan dan pasca-kenaikan adalah pengendali kenaikan. Tetapi terdapat sedikit perbezaan antara mereka. Operator pra-kenaikan mula-mula menambah nilai pembolehubah dan kemudian memberikannya kepada pembolehubah lain, tetapi dalam kes pengendali selepas kenaikan, ia mula-mula memberikan kepada pembolehubah dan kemudian menambah nilai. Contoh #include<iostream>usingnamespacestd;main(){ intx,y,z x=10;&nb;

Satu artikel menerangkan secara terperinci konfigurasi vscode C/C++ menjalankan persekitaran [pengajaran peringkat pengasuh] Satu artikel menerangkan secara terperinci konfigurasi vscode C/C++ menjalankan persekitaran [pengajaran peringkat pengasuh] Feb 27, 2023 pm 07:33 PM

Bagaimana untuk membangunkan C/C++ dalam VScode? Bagaimana untuk mengkonfigurasi persekitaran C/C++? Artikel berikut akan berkongsi dengan anda tutorial persekitaran berjalan C/C++ konfigurasi VScode (pengajaran peringkat pengasuh).

Dalam C/C++, fungsi strcpy() ialah fungsi yang digunakan untuk menyalin satu rentetan ke rentetan lain Dalam C/C++, fungsi strcpy() ialah fungsi yang digunakan untuk menyalin satu rentetan ke rentetan lain Sep 09, 2023 am 08:49 AM

Fungsi strcpy() ialah fungsi perpustakaan standard. Ia digunakan untuk menyalin satu rentetan ke rentetan yang lain. Dalam bahasa C, ia diisytiharkan dalam fail pengepala "string.h", manakala dalam bahasa C++, ia diisytiharkan dalam fail pengepala cstring. Ia mengembalikan penunjuk ke destinasi. Ini ialah sintaks strcpy() dalam bahasa C, char*strcpy(char*dest,constchar*src); Ia menyalin keseluruhan rentetan ke dalam rentetan sasaran. Ia menggantikan keseluruhan rentetan dan bukannya menambahkannya. Ia tidak mengubah rentetan sumber. Berikut ialah contoh strcpy() dalam bahasa C: Contoh Demo Dalam Talian#in

Program C/C++ untuk mengira bilangan sifar mengekor dalam pemfaktoran nombor Program C/C++ untuk mengira bilangan sifar mengekor dalam pemfaktoran nombor Aug 29, 2023 pm 12:29 PM

Di sini kita akan melihat cara mengira bilangan sifar mengekor dalam hasil pemfaktoran sebarang nombor. Oleh itu, jika n=5, maka 5! =120. Hanya ada satu di belakang 0. Untuk 20!, ia akan menjadi 4 sifar sebagai 20!=2432902008176640000. Cara paling mudah ialah mengira faktorial dan mengira 0. Tetapi untuk nilai n yang lebih besar, pendekatan ini gagal. Jadi kita akan mengambil pendekatan lain. Jika faktor perdana ialah 2 dan 5, maka sifar tertinggal akan muncul. Jika kita mengira 2 dan 5, kita boleh mendapatkan hasilnya. Untuk melakukan ini, kami akan mengikuti peraturan ini. Mengekori 0 = Mengira algoritma untuk 5 dalam faktorial (n) kiraan faktor perdanaTrailingZeros(n)mula &

Dalam C/C++, fungsi putwchar() ialah fungsi yang digunakan untuk mengeluarkan aksara yang luas Dalam C/C++, fungsi putwchar() ialah fungsi yang digunakan untuk mengeluarkan aksara yang luas Sep 11, 2023 pm 05:57 PM

Dalam artikel ini, kita akan membincangkan prinsip kerja, sintaks dan contoh fungsi putwchar() dalam C++STL. Apakah putwchar()? Fungsi putwchar() ialah fungsi terbina dalam dalam C++STL, yang ditakrifkan dalam fail pengepala <cwchar>. Fungsi putwchar() digunakan untuk menulis aksara lebar pada peranti output standard. Fungsi ini mengambil aksara lebar daripada hujah dan menulisnya ke output stdout atau standard sistem. Fungsi ini ialah versi aksara lebar putchar(), yang ditakrifkan dalam fail pengepala <cstdio>. Syntax putwchar(wchar_twidec) Fungsi ini menerima parameter berikut

See all articles