Hirdetés

Új hozzászólás Aktív témák

  • Fire/SOUL/CD

    félisten

    válasz pmonitor #15485 üzenetére

    Windows 10 alatt vannak az ún. Desktop mode app-ok, meg a Tablet mode app-ok. A számológép az utóbb csoporthoz tartozik, ezért nem tudod beolvasni a PID-t a korábbi módszerrel. Legegyszerűbb megoldás az, ha futtatod a calc-ot (ami egy Calculator.exe process-ként jelenik meg a Feladatkezelőben), majd végigszaladsz az összes futó folyamaton és megkeresed ezt a bizonyos Calculator.exe-t. Abból már ki lehet olvasni a PID-t (meg sok mást is)

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include <tlhelp32.h>
    #include <stdbool.h>

    int main()
    {
    STARTUPINFO SI;
    PROCESS_INFORMATION PI;

    ZeroMemory(&SI, sizeof(SI));
    SI.cb = sizeof(SI);
    ZeroMemory(&PI, sizeof(PI));

    if(!CreateProcess(NULL, "calc.exe", NULL, NULL, FALSE, 0, NULL, NULL, &SI, &PI))
    {
    printf( "CreateProcess failed... Program terminated.");
    return -1;
    }

    WaitForSingleObject(PI.hProcess, INFINITE);

    wchar_t * ProcessName = "Calculator.exe";
    bool FoundProcess = false;

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

    HANDLE PS = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);

    if (PS != INVALID_HANDLE_VALUE)
    {
    Process32First(PS, &PE32);

    while (Process32Next(PS, &PE32))
    {
    if (strstr(PE32.szExeFile, ProcessName)!=NULL)
    {
    FoundProcess=true;
    break;
    }
    }
    if (FoundProcess)
    {
    printf( "Process Name = %s\nProcessID = %d", ProcessName, PE32.th32ProcessID);
    CloseHandle(PS);
    }
    else
    printf( "%s process not found.", ProcessName);
    }

    CloseHandle(PI.hProcess);
    CloseHandle(PI.hThread);

    getch();
    }

Új hozzászólás Aktív témák