ホームページ バックエンド開発 C#.Net チュートリアル プロセスとプロセス ID をトラバースするための C/C++ 小さなツール

プロセスとプロセス ID をトラバースするための C/C++ 小さなツール

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

いくつかの破壊的なプログラムを作成するときは、プロセスを走査して ID を抽出する必要があります

上記の関数では、まずいくつかの API を導入します


1.CreateToolhelp32Snapshout 関数

プロセス、モジュール、またはスレッドを取得しますsnapshot

の構文は次のとおりです:

HANDLE WINAPI CreateToolhelp32Snapshot(  
  _In_ DWORD dwFlags,  
  _In_ DWORD th32ProcessID  
);
ログイン後にコピー

最初のパラメータ: スナップショットにはシステムの一部が含まれています。パラメータは次のとおりです:

プロセスとプロセス ID をトラバースするための C/C++ 小さなツール


プロセスとプロセス ID をトラバースするための C/C++ 小さなツール

ここではTH32CS_SNAPPROCESSを使用します

スナップショットにはすべてが含まれていますシステムプロセス内で。


2 つ目は 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;
ログイン後にコピー

これは、スナップショットが呼び出されたときにシステム アドレス空間内のプロセスによって読み取られるエントリを記述します。


ここでは szExeFile[MAX_PATH] と

th32ParentProcessID のみを紹介します: これは、プロセス作成後のプロセスの ID (親プロセス) です

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;  
}
ログイン後にコピー

実行結果は次のとおりです


プロセスとプロセス ID をトラバースするための C/C++ 小さなツール

上記はC/C++トラバース用小ツールの内容ですプロセスとプロセス ID、その他の関連情報については、PHP 中国語 Web サイト (www.php.cn) の内容にご注意ください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

phpとc#の違いは何ですか phpとc#の違いは何ですか Jun 02, 2023 pm 01:45 PM

php と c# の違いは次のとおりです: 1. 言語の型システムが異なります。PHP は動的型ですが、C# は静的型です。 2. 使用されるプラットフォームが異なります。PHP はクロスプラットフォームを実現できますが、C# は Windows 専用です。 3. . プログラミングのパラダイムが異なり、PHP はオブジェクト指向、手続き型、関数型プログラミングをサポートし、C# はオブジェクト指向プログラミングに傾いている; 4. 実行速度が異なり、PHP の方が高速で、C# は比較的遅い; 5.アプリケーションのシナリオは異なります。PHP は Web 開発、サーバーなどに使用されます。C# は Windows デスクトップおよび Web アプリケーションに使用されます。

C/C++ では、構造体の sizeof が各メンバーの sizeof の合計と等しくないのはなぜですか? C/C++ では、構造体の sizeof が各メンバーの sizeof の合計と等しくないのはなぜですか? Aug 26, 2023 am 09:29 AM

sizeof() で取得される構造体型の要素のサイズは、個々のメンバーのサイズと必ずしも同じではありません。コンパイラは、アライメントの問題を回避するためにパディングを追加する場合があります。したがって、寸法が変更される可能性があります。パディングは、構造メンバーの後に大きいサイズのメンバーが続く場合、または構造の最後にある場合に追加されます。コンパイラが異なれば、アライメント制約のタイプも異なります。 C 標準では、全体的なアライメント構造は実装に依存します。ケース 1 この場合、double z の長さは 8 バイトであり、x (4 バイト) よりも大きくなります。したがって、さらに 4 バイトのパディングが追加されます。さらに、short 型データ y にはメモリ内に 2 バイトのスペースがあるため、余分な 6 バイトがパディングとして追加されます。サンプルコード #include<stdio.h>structmyS

Clang ツールを使用して C/C++ コード整形ツールを作成する Clang ツールを使用して C/C++ コード整形ツールを作成する Aug 26, 2023 pm 01:09 PM

このチュートリアルでは、helpofclangtools を使用して C/C++ コード形式設定ツールを作成するプログラムについて説明します。SETUPsudoaptinstallpythonsudoaptinstallclang-format-3.5 次に、現在のユーザーが読み取りおよび書き込み権限を持つ場所に Python ファイルを作成します。例 importoscpp_extensions=(".cxx",".cpp&

C/C++ には、前置インクリメントと後置インクリメントの 2 つの操作があります。 C/C++ には、前置インクリメントと後置インクリメントの 2 つの操作があります。 Aug 25, 2023 pm 02:25 PM

ここでは、C または C++ におけるプリインクリメントとポストインクリメントとは何かを見てみましょう。前置インクリメントと後置インクリメントは両方ともインクリメント演算子です。しかし、それらの間にはほとんど違いはありません。前置インクリメント演算子は、まず変数の値をインクリメントしてから、それを他の変数に代入しますが、後置インクリメント演算子の場合は、まず変数に代入してから、値を増分します。例 #include<iostream>usingnamespacestd;main(){ intx,y,z; x=10; y=10;&nb

vscode 構成 C/C++ 実行環境について詳しく説明した記事 [乳母レベルの指導] vscode 構成 C/C++ 実行環境について詳しく説明した記事 [乳母レベルの指導] Feb 27, 2023 pm 07:33 PM

VScode で C/C++ を開発するにはどうすればよいですか? C/C++環境を構成するにはどうすればよいですか?次の記事では、VScode 構成 C/C++ 実行環境のチュートリアル (乳母レベルの指導) を紹介します。

C/C++ では、strcpy() 関数は、ある文字列を別の文字列にコピーするために使用される関数です。 C/C++ では、strcpy() 関数は、ある文字列を別の文字列にコピーするために使用される関数です。 Sep 09, 2023 am 08:49 AM

関数 strcpy() は標準ライブラリ関数です。ある文字列を別の文字列にコピーするために使用されます。 C 言語では "string.h" ヘッダー ファイルで宣言され、C++ 言語では cstring ヘッダー ファイルで宣言されます。宛先へのポインタを返します。これは、C 言語の strcpy() の構文、char*strcpy(char*dest,constchar*src); strcpy() のいくつかの重要なポイントです。文字列全体をターゲット文字列にコピーします。文字列を追加するのではなく、文字列全体を置き換えます。ソース文字列は変更されません。以下は、C 言語での strcpy() の例です。 Example Online Demo#in

数値の階乗内の末尾のゼロの数を計算する C/C++ プログラム 数値の階乗内の末尾のゼロの数を計算する C/C++ プログラム Aug 29, 2023 pm 12:29 PM

ここでは、任意の数値の階乗結果の末尾のゼロの数を計算する方法を見ていきます。したがって、n=5 の場合は 5! =120。末尾の 0 は 1 つだけです。 20! の場合、20!=2432902008176640000 のように 4 つのゼロになります。最も簡単な方法は、階乗を計算して 0 をカウントすることです。ただし、n の値が大きい場合、このアプローチは失敗します。そこで、別のアプローチをとってみます。素因数が 2 と 5 の場合、末尾にゼロが表示されます。 2と5を計算すると結果が得られます。これを行うには、このルールに従います。 Trailing 0 = 階乗 (n) 素因数の 5 のカウント アルゴリズム countTrailingZeros(n)begin&

C/C++ では、putwchar() 関数はワイド文字を出力するために使用される関数です。 C/C++ では、putwchar() 関数はワイド文字を出力するために使用される関数です。 Sep 11, 2023 pm 05:57 PM

この記事では、C++STL の putwchar() 関数の動作原理、構文、例について説明します。 putwchar()とは何ですか? putwchar() 関数は C++STL の組み込み関数であり、<cwchar> ヘッダー ファイルで定義されます。 putwchar() 関数は、標準出力デバイスにワイド文字を書き込むために使用されます。この関数は引数からワイド文字を取得し、それをシステムの stdout または標準出力に書き込みます。この関数は putchar() のワイド文字バージョンであり、<cstdio> ヘッダー ファイルで定義されています。構文 putwchar(wchar_twidec); パラメータ この関数は次のパラメータを受け入れます。

See all articles