#pragma warning(disable:4996) //不显示控制台 那个改成窗口 系统里面的子系统改成窗口 #pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" ) #include<atlstr.h> #include<stdio.h> #include<algorithm> #include<string> #include<iostream> #include<stdlib.h> #include<windows.h> using namespace std; #define IsHexNum(c) ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f')) //urf8编码字符串处理 WCHAR* Utf8ToStringT(LPSTR str) { _ASSERT(str); USES_CONVERSION; WCHAR* buf; int length = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);//映射一个字符串到一个宽字符 //1.指定执行转换的多字节字符所使用的字符集 2.一组位标记,一般不用为0 3.指向 待转换的字符串的缓冲区 //4.指定由参数 lpMultiByteStr指向的字符串中字节的个数。可以设置为-1,会自动判断lpMultiByteStr指定的字符串的长度 //5.指向 接收被转换字符串的缓冲区 //6.指定由参数 lpWideCharStr指向的缓冲区的宽字节数。若此值为0,函数不会执行转换,而是返回目标缓存lpWideChatStr所需的宽字符数。 buf = new WCHAR[length + 1]; ZeroMemory(buf, (length + 1) * sizeof(WCHAR)); MultiByteToWideChar(CP_UTF8, 0, str, -1, buf, length); return buf; } //url编码字符串解码函数 WCHAR* UrlDecode(LPCTSTR url) //const wchar_t * { _ASSERT(url);//它的条件返回错误,则终止程序执行。 USES_CONVERSION; // USES_CONVERSION它是在堆栈上分配空间的 LPSTR _url = T2A(const_cast<LPTSTR>(url)); //char* C消失了...表示常量... //CString ==> char* int i = 0; int length = (int)strlen(_url); CHAR* buf = new CHAR[length]; ZeroMemory(buf, length); LPSTR p = buf; char tmp[4]; while (i < length) { if (i <= length - 3 && _url[i] == '%' && IsHexNum(_url[i + 1]) && IsHexNum(_url[i + 2])) { memset(tmp, 0, sizeof(tmp)); memcpy(tmp, _url + i + 1, 2); sscanf(tmp, "%x", p++); i += 3; } else { *(p++) = _url[i++]; } } return Utf8ToStringT(buf); } int main(int argc,char *argv[]) { setlocale(LC_ALL, ""); for (int i = 0; i < argc; i++) { //cout << argv[i] << endl << endl; if(i == 1) { WCHAR p[1000]; swprintf(p, 1000, L"%hs", argv[1] + 8); WCHAR *proW = UrlDecode(LPCTSTR(p)); //wprintf(L"%ls ", proW); char callEXE[2000]; sprintf(callEXE, "%ws", proW); //cout << callEXE << endl; WinExec(callEXE, SW_HIDE); } } return 0; }
参考来自:https://blog.csdn.net/kissing7/article/details/76684085?utm_medium=distribute.wap_relevant.none-task-blog-baidujs_baidulandingword-1 这边还有encode