FPlatformProcess::CreateProc(TEXT("C:\\Users\\Cero\\Desktop\\Test.exe"), nullptr, true, false, false, nullptr, 0, nullptr, nullptr);
Widget에서 버튼으로 외부 파일을 실행시키겠습니다.
GM, GI, Save파일
C++ 부모 클래스 선택
Object
이름과 저장위치 정하고 퍼블릭으로 생성합니다.
.cpp나 .h 을 생성하거나 수정하면 뭔갈 하기 전에 꼭 프로젝트 컴파일 하세요.
Visual Studio에서 실행버튼을 눌러 빌드하세요
위젯
// Ob_test1.h
#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "Ob_test1.generated.h"
UCLASS()
class TEST_2_API UOb_test1 : public UObject
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category = "File Execution")
static FString ExecuteFileAtPath(const FString& FilePath, const FString& Params = TEXT(""));
//static FString ExecuteFileAtPath(const FString& FilePath);
};
// Ob_test1.cpp
#include "Ob_test1.h"
#include "Runtime/Core/Public/HAL/PlatformProcess.h"
// 파일을 실행하고 결과를 반환하는 함수
FString UOb_test1::ExecuteFileAtPath(const FString& FilePath, const FString& Params)
{
UE_LOG(LogTemp, Warning, TEXT("Is File Exists: %s"), *FilePath);
if (FPaths::FileExists(FilePath))
{
UE_LOG(LogTemp, Warning, TEXT("File Exists: %s"), *FilePath);
}
else
{
UE_LOG(LogTemp, Error, TEXT("File Isn't Exists: %s"), *FilePath);
return TEXT("File not found");
}
// Run File with Parameters
FProcHandle ProcHandle = FPlatformProcess::CreateProc(*FilePath, *Params, true, false, false, nullptr, 0, nullptr, nullptr);
if (ProcHandle.IsValid())
{
UE_LOG(LogTemp, Warning, TEXT("File Run: %s"), *FilePath);
}
else
{
UE_LOG(LogTemp, Error, TEXT("File Run Failed: %s. Please check if the file requires administrative privileges."), *FilePath);
}
return FilePath;
}
??? 프로그램이 실행되지 않아요
출력로그를 보니 CreateProcess 함수 호출 시 잘못된 매개변수를 전달했다네요
LogTemp: Warning: ½ °Ʒ: "C:/Program Files (x86)/Polaris Office/Office8/Binary/POTypeWriter.exe"
LogTemp: Error:
LogWindows: Warning: CreateProc failed: 매개 변수가 틀립니다. (0x00000057)
LogWindows: Warning: URL: "C:/Program Files (x86)/Polaris Office/Office8/Binary/POTypeWriter.exe" (null)
LogTemp: Error:
LogBlueprintUserMessages: [W_OpenTest_C_0] "C:/Program Files (x86)/Polaris Office/Office8/Binary/POTypeWriter.exe"
[2024.02.13-07.54.42:375][925]LogWindows: LaunchFileInExternalEditor S:/ELECCOM/Vision/OPENCV/Test/Test_2/Saved/Logs/Test_2.log
[2024.02.13-07.54.43:109][925]LogWindows: Launch application code for S:/ELECCOM/Vision/OPENCV/Test/Test_2/Saved/Logs/Test_2.log : 42
[2024.02.13-07.55.46:301][143]LogTemp: Warning: ½ °Ʒ: "C:/Program Files (x86)/Polaris Office/Office8/Binary/POTypeWriter.exe"
[2024.02.13-07.55.46:301][143]LogTemp: Error:
[2024.02.13-07.55.46:301][143]LogWindows: Warning: CreateProc failed: 매개 변수가 틀립니다. (0x00000057)
[2024.02.13-07.55.46:301][143]LogWindows: Warning: URL: "C:/Program Files (x86)/Polaris Office/Office8/Binary/POTypeWriter.exe" (null)
[2024.02.13-07.55.46:301][143]LogTemp: Error:
[2024.02.13-07.55.46:301][143]LogBlueprintUserMessages: [W_OpenTest_C_0] "C:/Program Files (x86)/Polaris Office/Office8/Binary/POTypeWriter.exe"
검색해 보니
일반적으로 오류 코드 42는 - 시스템에서 이미 실행 중인 중복 장치가 있기 때문에 Windows에서 이 하드웨어에 대한 장치 드라이버를 로드할 수 없음을 나타냅니다.
중복된 장치가 감지되었다고 나옵니다. 이 오류는 버스 드라이버가 이름이 동일한 두 개의 하위 프로세스를 잘못 생성하거나(버스 드라이버 오류라고 함) 일련 번호가 있는 장치가 이전 위치에서 제거되기 전에 새 위치에서 발견된 경우에 발생합니다. 컴퓨터를 다시 시작하면 이 문제를 해결할 수 있습니다.
리디렉션 중
login.microsoftonline.com
라네요
일단 오류문에 문자가 이상하게 나오는 것 부터 수정할게요.
오류 메시지가 문자 인코딩 문제로 인해 제대로 표시되지 않는 것 같아요.
쳇gpt한테 물어볼게요
1단계: 인코딩 설정 확인
2단계: 텍스트 에디터 사용
3단계: 로그 파일 직접 확인
4단계: 언리얼 엔진 설정 확인
5단계: 시스템 로케일 변경 검토
1단계: 인코딩 설정 확인
언리얼 엔진을 사용할 때, 시스템의 로케일 설정이 영어가 아닌 경우 때때로 인코딩 문제가 발생할 수 있습니다. 시스템의 로케일을 영어(미국)으로 설정해 보세요. 이는 윈도우 설정에서 변경할 수 있습니다.
2단계: 텍스트 에디터 사용
오류 메시지를 복사하여 지원하는 인코딩을 변경할 수 있는 텍스트 에디터(예: Notepad++, Sublime Text)에 붙여넣어 보세요. 이러한 에디터들은 다양한 인코딩을 지원하며, UTF-8 등 다른 인코딩으로 변환하여 문자가 올바르게 표시되는지 확인할 수 있습니다.
3단계: 로그 파일 직접 확인
언리얼 엔진은 실행 중 발생한 로그를 디스크에 저장합니다. 프로젝트 폴더 내의 Saved/Logs 폴더를 확인하여 직접 로그 파일을 열어보세요. 파일을 열 때 올바른 인코딩을 사용하도록 텍스트 에디터의 설정을 조정할 수 있습니다.
4단계: 언리얼 엔진 설정 확인
언리얼 엔진 자체에서 로그의 인코딩 방식을 설정할 수 있는지 확인하세요. 엔진의 설정이나 문서에서 이와 관련된 정보를 찾아볼 수 있습니다.
5단계: 시스템 로케일 변경 검토
만약 위의 방법으로 해결되지 않는다면, 시스템의 로케일을 변경하는 것을 고려해 볼 수 있습니다. 이는 윈도우의 제어판에서 변경할 수 있으며, 어떤 애플리케이션이 특정 로케일에 맞춰 작동하는 경우 유용할 수 있습니다.
이러한 단계를 통해 오류 메시지의 문자 변형 문제를 해결할 수 있기를 바랍니다. 만약 문제가 계속된다면, 언리얼 커뮤니티 포럼이나 공식 문서에서 추가적인 도움을 찾는 것도 좋은 방법입니다.
1언어설정은 마지막으로 두고
2. 메모장에서도 이상하게 뜨네요
LogTemp: Warning: ½ °Ʒ: "C:/Program Files (x86)/Polaris Office/Office8/Binary/POTypeWriter.exe"
3. 아까 열어본 파일이 Log 파일이었죠. 여전히 문자가 이상하고
4단계: 언리얼 엔진 설정 확인
https://docs.unrealengine.com/5.3/ko/logging-in-unreal-engine/
언리얼 엔진에서의 로깅
언리얼 엔진에서의 로깅과 관련된 정보를 살펴봅니다.
docs.unrealengine.com
방법을 못찾겠으니 언어랑 지역 설정 변경할게요.
먼저 프로젝트의 에디터 설정에서 영어로 바꿨어요.
같은 오류가 뜨네요
이번에는 제어판에서
영어가 너무 많네요... 미국으로 해야겠죠
잘 되네요
환경변수에 경로를 추가했지만 여전히 같은 오류가 생겨요
문제가 생긴 부분은 권한쪽인것 같네요
마켓 플레이스에 이미 만들어 놓은게 있네요
이미 만들어져 있는건 구매해서 사용합시다
https://www.unrealengine.com/marketplace/en-US/product/exe-extension?sessionInvalidated=true
.exe Extension & Process Management in Code Plugins - UE Marketplace
This plugin offers a range of features for executing and terminating .exe files as well as managing/handling processes.
www.unrealengine.com
'UNREAL > Unreal Study' 카테고리의 다른 글
.txt 읽기 쓰기, Texture 2D(.png) (0) | 2024.02.19 |
---|---|
UE4.27 외부파일 실행 (0) | 2024.02.19 |
On Paint (0) | 2024.02.08 |
TCP (0) | 2024.02.01 |
UDP (0) | 2024.01.27 |