來執行帶參數的exe文件。在Visual Studio C++中,我很難與ShellExecuteEx()
試圖在exe中運行帶有參數的exe文件。它發生的方式是我在Visual Studio中運行調試程序(甚至在外面)。該程序將啓動另一個程序併成功運行,但不會生成.txt文件輸出。我不確定我是否正確使用了參數。 這是我想實現的步驟:C++ ShellExecuteEx不會通過在最近幾天或幾周內不從該exe文件生成輸出
- 開始MainTest.exe (中,將打開ScreenCapture.exe EXE)
- 命令屏幕 - MainTest.exe開始,並準備使用啓動ScreenCapture.exe的ShellExecuteEx
- UAC彈出,以管理員身份運行
- 新命令屏幕 - ScreenCapture.exe開始參數和目錄
- ScreenCapture.exe完成命令並關閉
- 由ScreenCapture.exe生成的CaptureText.txt與ScreenCapture.exe放置在同一個目錄中。
問題是我沒有在我的目錄中獲取CaptureText.txt或任何參數在此程序中工作的證據。
現在,如果我運行ScreenCapture.exe而不使用帶有參數的Test.exe,它將起作用並生成.txt文件。
下面的代碼:
#include "stdafx.h"
#include <isostream>
#include <fstream>
#include <string>
#include <Windows.h>
int main()
{
auto str = _T("C:\\Users\Engrsky\Pictures\Screenshot.png ScreenCapture -l eng")
SHELLEXECUTEINFO shExInfo = {0};
shExInfo.cbSize = sizeof(shExInfo);
shExInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
shExInfo.hwnd = 0;
shExInfo.lpVerb = _T("runas");
shExInfo.lpFile = _T("C:/Program File (x86)/Test/ScreenCapture.exe");
shExInfo.lpParameters = str;
shExInfo.lpDirectory = 0;
shExInfo.nShow = SW_SHOW;
shExInfo.hInstApp = 0;
}
例:只使用命令提示符下,ScreenCapture.exe完美的作品與參數。我進入這樣的:
管理員聯繫:命令提示符
C:\Program File (x86)\Test> ScreenCapture "C:\\Users\Engrsky\Pictures\Screenshot.png ScreenCapture -l eng"
然後,它成功地運行,並寫所謂ScreenCapture.txt
然而一個輸出文件,當我試圖做使用我製作的exe(此文件)運行它。我無法獲得輸出。
你可能有.txt文件,你找不到它。這種問題首先不使用文件的完整路徑(如baz.txt而不是c:\ foo \ bar \ baz.txt),並且由於未設置程序的工作目錄而變得更糟。確保將lpDirectory設置爲C:/ Program File(x86)/ Test。 –
感謝您的評論,我添加了lpDirectory,可悲的是沒有發生任何變化。程序是否可以阻止它被寫入目錄?有沒有一種方法可以將整個程序設置爲以管理員身份運行,以確保所有內容都具有UAC權限。 – Engrsky
我看到一串正斜槓沒有在字符串文字中正確轉義。這是否至少會產生編譯器警告? – MrEricSir