GetLastError は、「プログラムはコマンドを発行しましたが、コマンドの長さが正しくありません。」Process32First() 呼び出し時のエラー (以下のコードを参照)。参考になる投稿を 1 つ見つけました (http://social.msdn.microsoft.com/Forums/is/vcgeneral/thread/6f43716f-fdd3-4c92-bfba-6a23178c32bf) が、これが私の問題かどうかはわかりません.
"stdafx.h"
、<iostream>
、<Windows.h>
および<TlHelp32.h>
to testのみを含むプログラムを作成しようとしました__alignof(PROCESSENTRY32)
が、それでも値が 4 になります。それが正しいかどうかはわかりません。
失敗しているコードは次のとおりです。
HANDLE hProcess;
PROCESSENTRY32 pe32;
cout << "Size of PROCESSENTRY32 is: " << sizeof(PROCESSENTRY32) << "\r\n"; // 556
cout << "Align of PROCESSENTRY32 is: " << __alignof(PROCESSENTRY32) << "\r\n"; // 4
if ( !(hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)) ) {
cout << "CreateToolhelp32Snapshot() failed: " << GetLastError() << "\r\n";
return (HANDLE)NULL;
} else {
cout << "CreateToolhelp32Snapshot() succeeded.\r\n";
}
if (Process32First(hProcess, &pe32)) {
do {
cout << pe32.th32ModuleID;
} while (Process32Next(hProcess, &pe32));
} else {
cout << "Process32First() failed: " << GetLastError() << "\r\n";
}