【UE4 C++】 启动 / 关闭外部exe、开启虚拟键盘
时间:2021-05-02 22:04:08
收藏:0
阅读:137
启动/关闭外部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
void ASystemActor::ShowVirtualKeyboard()
{
ShellExecute(NULL, L"open", L"osk.exe", NULL, NULL, SW_SHOWNORMAL);
//WinExec("TabTip.exe", SW_SHOWNORMAL);
}
原文:https://www.cnblogs.com/shiroe/p/14726037.html
评论(0)