我有一个正在处理的 C 项目,但遇到了问题。该程序读取由 .php 页面回显的字符串。它使用此代码读取数据并将其指定给一个变量,该变量被发送到 Commands() 函数:
LPSTR szBuffer=(LPSTR)chunk+0x1000;
DWORD dwRead;
if (CWA(_HttpSendRequestA, wininet, hHttpRequest, szHeaders, lpstrlenA(szHeaders), szReq, lpstrlenA(szReq)) != 0)
{
CWA(_InternetReadFileA, wininet, hHttpRequest, szBuffer, 0x400, &dwRead);
if (dwRead)
Commands((LPBYTE)szBuffer, dwRead);
}
如您所见,数据被发送到 Commands() 函数,该函数接收 LPBYTE szBuffer(在函数中命名为“command”)和 DWORD dwRead(在函数中命名为“size”)。
在 Commands() 函数中,它应该读取从 .php 页面读取的字符串。但是,由于数据似乎存储为 LPBYTE,因此我做了很多事情试图将其转换为 char*。然而,当我认为我终于得到它时,我尝试使用 MessageBox 输出它(查看它是否显示它应该读取的字符串)。但是,这会返回我中文字符(而原始字符串应该是这样的:
"TASKci=0C73CCFD206BBD011E7087CE0806E6F6E69630,job=dlex,ti=AD62A5950B76F3812C542C24040EACE9,pr=https,ur=//test.com/test.txt,cl="。
它返回给我的截图:http: //prntscr.com/h0p5iw
Commands() 中的代码看起来如何:
BOOL Commands(LPBYTE command, DWORD size) {
LPTSTR x = (LPTSTR)((char*)command);
{
int msgboxID = MessageBox(
NULL,
x,
(LPCWSTR)L"Woop",
MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2 );
}
CWA(Sleep, kernel32, 100);
return 1; }
我是 C 的新手(我以前只用 C# 写过东西),所以如果我问任何愚蠢的问题,我很抱歉,我真的尽力了,但我自己似乎找不到任何解决方案。
另外,请记住,除了Commands()
函数内部的内容之外的所有内容都不是由我编写的,而是由更有经验的人编写的。该代码应该没问题,我确信它正在从页面读取数据,可能只是我在某处搞砸了转换。