我正在写入具有 uint32 的存储格式,最大允许值为“4294967295”。
当然,Java 中的整数仅不到“2147483647”的一半。所以在内部,我必须使用 Long 或 Guava 的 UnsignedInteger。
要写入这种格式,字节数组长度需要为 4,这正好适合 Integer,但将 Long 转换为字节数组需要长度为 8 的数组。
如何将表示最大值“4294967295”的 Long 或 UnsignedInteger 转换为 4 字节数组?
我正在使用 CreateProcess 打开一个窗口,但在理解 SetWinEventHook 时遇到了很多麻烦。
在调用函数中,我有:
HWINEVENTHOOK hook = SetWinEventHook(EVENT_OBJECT_CREATE, EVENT_OBJECT_CREATE, NULL, WinEventProc, 0, 0, WINEVENT_OUTOFCONTEXT );
BOOL result = CreateProcess(0, arguments,
NULL, NULL, FALSE, 0, NULL,
NULL, &StartupInfo, &ProcessInfo)
if (hook) {
UnhookWinEvent(hook);
}
Run Code Online (Sandbox Code Playgroud)
create Process 顺利启动,但没有调用链接到 SetWinEventHook 的 WinEventProc 函数。为了让 WinEventProc 被调用,我尝试过这样的事情:
MSG msg;
while (GetMessage(&msg, NULL, 0, 0) > 0);
Run Code Online (Sandbox Code Playgroud)
在 createProcess 调用之后,但我不知道如何结束 while 循环,以便它持续运行。
我已经做了很多阅读,但我不明白如何使用 SetWinEventHook 来捕获由 CreateProcess 启动的进程。任何帮助表示赞赏!