1
我將嵌入批處理文件資源項目,我想在控制檯中運行批處理腳本。嵌入批處理腳本文件並運行在C++控制檯項目
如何運行嵌入腳本
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#define WINDOWS_LEAN_AND_MEAN
#include <Windows.h>
std::wstring GetEnvString()
{
wchar_t* env = GetEnvironmentStrings();
if (!env)
abort();
const wchar_t* var = env;
size_t totallen = 0;
size_t len;
while ((len = wcslen(var)) > 0)
{
totallen += len + 1;
var += len + 1;
}
std::wstring result(env, totallen);
FreeEnvironmentStrings(env);
return result;
}
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
std::wstring env = GetEnvString();
env += L"myvar=boo";
env.push_back('\0'); // somewhat awkward way to embed a null-terminator
STARTUPINFO si = { sizeof(STARTUPINFO) };
PROCESS_INFORMATION pi;
wchar_t cmdline[] = L"cmd.exe /C f.bat";
if (!CreateProcess(NULL, cmdline, NULL, NULL, false, CREATE_UNICODE_ENVIRONMENT,
(LPVOID)env.c_str(), NULL, &si, &pi))
{
std::cout << GetLastError();
abort();
}
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
getch();
}
embed batch script file in c++ console
這個位置批處理文件,我想從資源項目運行
wchar_t cmdline[] = L"cmd.exe /C f.bat";
感謝的人,但任何方式嵌入資源執行呢? –
您需要獲取嵌入式資源並將其保存到文件中(到某個臨時位置),然後使用系統或popen執行該bat文件。或者如果你不想使用臨時文件,你需要從你的資源中讀取數據並創建一些'cmd/c param1 param2 ...'字符串,這個字符串可以使用系統來執行。 – Pavel
可以顯示示例代碼 –