#include <Windows.h>
#include <fstream>
#include <string>
using namespace std;
string GetExePath(void)
{
char szFilePath[MAX_PATH + 1]={0};
GetModuleFileNameA(NULL, szFilePath, MAX_PATH);
(strrchr(szFilePath, '\\'))[0] = 0; // 删除文件名,只获得路径字串
string path = szFilePath;
return path;
}
string readTxtFromFile(string filepath){
char str1[1024];
ifstream fin (filepath);
//fin >>str1; //按空格读取
fin.getline(str1, sizeof(str1)); //读取一行
fin.close();
return str1;
}
wchar_t *ctow(char *sText)
{
DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, sText, -1, NULL, 0);//把第五个参数设成NULL的到宽字符串的长度包括结尾符
wchar_t *pwText = NULL;
pwText = new wchar_t[dwNum];
if(!pwText)
{
delete []pwText;
pwText = NULL;
}
unsigned nLen = MultiByteToWideChar (CP_ACP, 0, sText, -1, pwText, dwNum+10);
if (nLen >= 0)
{pwText[nLen] = 0;}
return pwText;
}
char *wtoc(wchar_t *wText)
{
DWORD dwNum = WideCharToMultiByte(CP_ACP, NULL, wText, -1,NULL, 0, NULL, FALSE);//把第五个参数设成NULL的到宽字符串的长度包括结尾符
char *psText = NULL;
psText = new char[dwNum];
if(!psText)
{
delete []psText;
psText = NULL;
}
WideCharToMultiByte (CP_ACP, NULL, wText, -1,psText, dwNum, NULL, FALSE);
return psText;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevInstance, LPSTR lpCmdLine, int nShowCmd)
{
LPWSTR *szArgList;
int argCount;
szArgList = CommandLineToArgvW(GetCommandLineW(), &argCount);
for(int i = 0; i < argCount; i++)
{
//MessageBoxW(NULL, szArgList[i], L"", MB_OK);
}
if (argCount > 1){
string exe = readTxtFromFile(GetExePath() + "\\exe.txt") + " ";
exe += wtoc(szArgList[1]);
//MessageBoxW(NULL, ctow((char *)exe.c_str()), L"", MB_OK);
WinExec(exe.c_str(), SW_SHOW);
}else{
MessageBoxW(NULL, L"把文件拉到我图标上", L"", MB_OK);
}
LocalFree(szArgList);
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-962548.html