启动/关闭外部exe
-
引擎自带
- FPlatformProcess::CreateProc()
- FPlatformProcess::TerminateProc()
-
windows api
-
ShellExecute()
-
system()
virtual void Tick(float DeltaTime) override; FProcHandle pHandle ; UFUNCTION(BlueprintCallable) void OpenExternalApp(const FString& AppPath); UFUNCTION(BlueprintCallable) void CloseExternalApp(); UFUNCTION(BlueprintCallable) void ExecuteExternalApp(const FString& AppPath); UFUNCTION(BlueprintCallable) void KillProcess(const FString& ProcessName);#include <string> #include <windows.h> void ASystemActor::OpenExternalApp(const FString& AppPath) { pHandle= FPlatformProcess::CreateProc(*AppPath, nullptr, true, false, false, nullptr, 0, nullptr, nullptr); UE_LOG(LogTemp,Warning,TEXT(__FUNCTION__"Create App")) } void ASystemActor::CloseExternalApp() { if (pHandle.IsValid()) { FPlatformProcess::TerminateProc(pHandle); pHandle.Reset(); UE_LOG(LogTemp,Warning,TEXT(__FUNCTION__"Close App")) } else { UE_LOG(LogTemp,Warning,TEXT(__FUNCTION__"Close None")) } } void ASystemActor::ExecuteExternalApp(const FString& AppPath) { std::string str_path=TCHAR_TO_UTF8(*AppPath); std::wstring wstr_path; wstr_path.assign(str_path.begin(), str_path.end()); ShellExecute(NULL, L"open", wstr_path.c_str(), NULL, NULL, SW_SHOWDEFAULT); } void ASystemActor::KillProcess(const FString& ProcessName) { std::string process = std::string("TASKKILL /F /IM ") + TCHAR_TO_UTF8(*ProcessName); system(process.c_str()); UE_LOG(LogTemp,Warning,TEXT(__FUNCTION__"Kill App Process")) }
开启虚拟键盘 On-Screen Keyboard
- ShellExecute
void ASystemActor::ShowVirtualKeyboard() { ShellExecute(NULL, L"open", L"osk.exe", NULL, NULL, SW_SHOWNORMAL); //WinExec("TabTip.exe", SW_SHOWNORMAL); }

本文介绍了一种在程序中启动并管理外部应用程序的方法,包括使用不同的API和技术来打开、关闭和执行外部应用,同时提供了具体的代码实现案例。
7679

被折叠的 条评论
为什么被折叠?



