为什么这是SAMR句柄(CPP句柄)的相同地址

Why this are same adresses for the samr HANDLES (CPP HANDLES.)?

本文关键字:句柄 地址 SAMR 为什么 CPP      更新时间:2023-10-16

我做了接下来的三个例子:

void main()
{
    HANDLE A = ShellExecute(NULL, "open", R"(C:UsersGustaboDesktopnoticed_files.txt)", "", "", SW_SHOW);
    HANDLE B = ShellExecute(NULL, "open", R"(C:UsersGustaboDesktopclientserver.txt)", "", "", SW_SHOW);
    HANDLE C = ShellExecute(NULL, "open", R"(C:UsersGustaboDesktopnoticed_files.txt)", "", "", SW_SHOW);
    std::cout << A << std::endl;
    std::cout << B << std::endl;
    std::cout << C << std::endl;
    system("pause");
    ExitProcess(0);
}

这是三种不同的句柄(模拟)。每个句柄都应该引用另一个进程(但它没有)。

输出:

0000002A

0000002A

0000002A

为什么这三个句柄没有彼此的地址?

ShellExecute 的返回值不是句柄。它只是函数调用成功/失败的指示:实际上,如果它大于 32,则函数调用成功。