Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Saya Boleh Mendapatkan Pengendalian Proses mengikut Nama dalam C?

Bagaimana Saya Boleh Mendapatkan Pengendalian Proses mengikut Nama dalam C?

Barbara Streisand
Barbara Streisandasal
2024-11-21 16:01:10562semak imbas

How Can I Get a Process Handle by Name in C  ?

Mendapatkan Pengendalian Proses mengikut Nama dalam C

Untuk mendapatkan pemegang proses berdasarkan nama prosesnya, seperti "example.exe ," kita boleh menggunakan pendekatan berikut dalam C .

Langkah pertama ialah mencipta gambaran semua proses yang sedang berjalan menggunakan Fungsi CreateToolhelp32Snapshot:

HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

Seterusnya, kita perlu mengulangi proses dalam petikan untuk mencari yang mempunyai nama yang ditentukan:

PROCESSENTRY32 entry;
entry.dwSize = sizeof(PROCESSENTRY32);

if (Process32First(snapshot, &entry) == TRUE) {
  while (Process32Next(snapshot, &entry) == TRUE) {
    if (stricmp(entry.szExeFile, "target.exe") == 0) {
      // Found the process

Dengan maklumat proses di tangan, kami boleh menggunakan fungsi OpenProcess untuk mendapatkannya pemegang:

HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID);

Nota: Untuk menggunakan keistimewaan PROCESS_ALL_ACCESS, anda mungkin perlu mendayakan keistimewaan nyahpepijat, seperti yang ditunjukkan dalam coretan kod alternatif yang disediakan dalam jawapan soalan.

EnableDebugPriv();

Sebaik sahaja anda mempunyai pemegang proses, anda boleh melakukan pelbagai operasi padanya, termasuk menamatkan proses menggunakan TerminateProcess.

TerminateProcess(hProcess, 0);

Atas ialah kandungan terperinci Bagaimana Saya Boleh Mendapatkan Pengendalian Proses mengikut Nama dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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