c++调用其它程序的方法,以及读取本地txt文件方法。

    xiaoxiao2021-12-14  24

    #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

    最新回复(0)