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"))
}
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