UE4 外部打开exe文件和虚拟键盘

这篇博客介绍了如何在UE4中通过C++函数打开和关闭外部应用程序,包括使用CreateProc、ShellExecute和KillProcess方法。此外,还展示了如何展示虚拟键盘,并提到了打包时注意携带第三方库的DLL文件。操作涉及Windows平台的API调用和批处理文件操作。
摘要由CSDN通过智能技术生成

一、外部文件的打开

   主要通过这四个函数来打开外部文件,这里的const FString& AppPath是你们要打开的exe文件的路径。

//打开外部exe文件
UFUNCTION(BlueprintCallable)
	void OpenExternalApp(const FString& AppPath);
//关闭外部exe文件
UFUNCTION(BlueprintCallable)
	void CloseExternalApp();
//打开外部exe文件
UFUNCTION(BlueprintCallable)
	void ExecuteExternalApp(const FString& AppPath);
//关闭外部exe文件
UFUNCTION(BlueprintCallable)
	void KillProcess(const FString& ProcessName);
//打开外部文件
void AMyGameMode::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 AMyGameMode::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"))
}
}
//打开外部exe文件
void AMyGameMode::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);
}
//关闭外部exe文件
void AMyGameMode::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"));
}

二、打开虚拟键盘

UFUNCTION(BlueprintCallable)
   void ShowVirtualKeyboard();
void AMyGameMode::ShowVirtualKeyboard()
{
ShellExecute(NULL, L"open", L"osk.exe", NULL, NULL, SW_SHOWNORMAL);
}

三、注意在使用这些函数的时候需要加上一些头文件,才能够在C++中编译通过,否则无法编译成功

#include"Runtime/Core/Public/HAL/PlatformFilemanager.h"
#include"Runtime/Core/Public/Misc/FileHelper.h"
#include"Runtime/Core/Public/Misc/Paths.h"
#include "Windows/AllowWindowsPlatformTypes.h"
#include "Windows/PreWindowsApi.h"
#include <windows.h>
#include<string>
#include "Windows/PostWindowsApi.h"
#include "Windows/HideWindowsPlatformTypes.h"
#include <ShlDisp.h>
#include <shellapi.h>

四、也可以使用.bat文件操作,这也是打开DS服务器的一种方式

  找到你打包的文件位置,我这里是H:\OpenWorld\WindowsServer\OpenWorld\Binaries\Win64

 

   新建一个文本,输入命令,我这里加的 -log是测试ds服务器时用的,大家可以不加

 

点击运行bat文件即可

实际上UE4在打包之后的exe文件是放在Binaries,我们打开EXE文件时,实际是打开Binaries文件里面的exe文件。

五、注意事项

       我们在引用到第三方库时,尝尝会无法打包成功,原因是我们没有把编译好的第三方库的dll文件放到我们Binaries文件夹中导致我们打包失败,同样,打包成功后也是需要把第三方库的dll文件放到打包后的Binaries文件夹中,才可以打开exe文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞起的猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值