我使用GetExitCodeProcess(processInfo.hProcess,out returnCode)作为C#中的p / invoke来获取我使用CreateProcess开始的进程的转向代码 - 一切正常......
这是代码:
UInt32 returnCode = 0xFFFFFFFF; // default
GetExitCodeProcess(processInfo.hProcess, out returnCode);
问题是返回代码本身...我正在启动的应用程序返回DWORD中的代码,例如它返回0XB2100000但returnCode有2987393024(这是正确的INT转换)。
现在,我想显示(记录到我的跟踪文件)DWORD中的值(这是我们习惯的) - 无论如何我可以这样做?
谢谢,
答案 0 :(得分:1)
像这样记录returnCode
:
String.Format("0x{0:X8}", returnCode)
或
returnCode.ToString("X8").Insert(0, "0x")
此问题也在此处讨论:
答案 1 :(得分:1)
似乎只需将其转换为十六进制形式,如下所示:
returnCode.ToString("X8");
或者像这样:
Console.WriteLine("The error code was {0:X8}.", returnCode);
答案 2 :(得分:0)
C#中的DWORD将是一个uint(UInt32)。
答案 3 :(得分:0)
DWORD和INT是相同的东西*。您想知道的是,数字是以10-base还是base-16表示。但是,它们仍然是相同的数字。 32 === 0x20,它们是相同的,甚至不会自动转换为彼此。通常当你关心基数时,你真正想要的是按位运算(查找运算符&,|和〜)。
*是的,我知道DWORD是无符号的,INT是签名的。