паркинг ебобаный
This commit is contained in:
@@ -8,13 +8,13 @@ public class JPrinter : ModuleRules
|
||||
public JPrinter(ReadOnlyTargetRules Target): base( Target )
|
||||
{
|
||||
|
||||
PublicIncludePaths.AddRange(
|
||||
new string[] {
|
||||
"JPrinter/Public"
|
||||
// PublicIncludePaths.AddRange(
|
||||
// new string[] {
|
||||
// "JPrinter/Public"
|
||||
|
||||
// ... add public include paths required here ...
|
||||
}
|
||||
);
|
||||
// // ... add public include paths required here ...
|
||||
// }
|
||||
// );
|
||||
|
||||
|
||||
PrivateIncludePaths.AddRange(
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"BuildId": "27405482",
|
||||
"Modules":
|
||||
{
|
||||
"antiDublicate": "UnrealEditor-antiDublicate.dll"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,88 @@
|
||||
// Copyright Epic Games, Inc. All Rights Reserved.
|
||||
|
||||
#include "antiDublicate.h"
|
||||
#include "kismet/KismetSystemLibrary.h"
|
||||
#include <windows.h>
|
||||
#include <psapi.h>
|
||||
|
||||
#define LOCTEXT_NAMESPACE "FantiDublicateModule"
|
||||
|
||||
void FantiDublicateModule::StartupModule()
|
||||
{
|
||||
FString pname = FPlatformProcess::ExecutableName(false);
|
||||
if (pname == L"UnrealEditor.exe") return;
|
||||
auto pname1 = []() {
|
||||
TArray<FString> foundFiles;
|
||||
IFileManager& fileManager = IFileManager::Get();
|
||||
|
||||
FString pattern = FPaths::RootDir();
|
||||
|
||||
pattern += TEXT("*.exe");
|
||||
|
||||
fileManager.FindFiles(foundFiles, *pattern, true, false);
|
||||
|
||||
if (foundFiles.Num() > 0) {
|
||||
return foundFiles[0];
|
||||
}
|
||||
|
||||
return FString();
|
||||
}();
|
||||
|
||||
#ifdef GetCommandLine
|
||||
#undef GetCommandLine
|
||||
#endif // GetCommandLine
|
||||
if (UKismetSystemLibrary::GetCommandLine().Contains("-PixelStreamingIP")) return;
|
||||
|
||||
// Get the list of process identifiers.
|
||||
|
||||
DWORD aProcesses[1024], cbNeeded, cProcesses;
|
||||
unsigned int i;
|
||||
TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
|
||||
TArray<FString> fprocesses;
|
||||
|
||||
if (!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded)) return;
|
||||
|
||||
cProcesses = cbNeeded / sizeof(DWORD);
|
||||
int copies = 0;
|
||||
for (i = 0; i < cProcesses; i++)
|
||||
{
|
||||
if (aProcesses[i] != 0)
|
||||
{
|
||||
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION |
|
||||
PROCESS_VM_READ,
|
||||
FALSE, aProcesses[i]);
|
||||
|
||||
// Get the process name.
|
||||
|
||||
if (NULL != hProcess)
|
||||
{
|
||||
HMODULE hMod;
|
||||
if (EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded))
|
||||
{
|
||||
GetModuleBaseName(hProcess, hMod, szProcessName, sizeof(szProcessName) / sizeof(TCHAR));
|
||||
|
||||
if (FString(szProcessName) == pname || (FString(szProcessName)==pname1&& !pname1.IsEmpty())) copies++;
|
||||
}
|
||||
// Release the handle to the process.
|
||||
CloseHandle(hProcess);
|
||||
}
|
||||
if (copies > 2) {
|
||||
FGenericPlatformMisc::RequestExit(false, L"PIDOR DETECTED");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
void FantiDublicateModule::ShutdownModule()
|
||||
{
|
||||
// This function may be called during shutdown to clean up your module. For modules that support dynamic reloading,
|
||||
// we call this function before unloading the module.
|
||||
}
|
||||
|
||||
#undef LOCTEXT_NAMESPACE
|
||||
|
||||
IMPLEMENT_MODULE(FantiDublicateModule, antiDublicate)
|
||||
@@ -0,0 +1,15 @@
|
||||
// Copyright Epic Games, Inc. All Rights Reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CoreMinimal.h"
|
||||
#include "Modules/ModuleManager.h"
|
||||
|
||||
class FantiDublicateModule : public IModuleInterface
|
||||
{
|
||||
public:
|
||||
|
||||
/** IModuleInterface implementation */
|
||||
virtual void StartupModule() override;
|
||||
virtual void ShutdownModule() override;
|
||||
};
|
||||
@@ -0,0 +1,53 @@
|
||||
// Copyright Epic Games, Inc. All Rights Reserved.
|
||||
|
||||
using UnrealBuildTool;
|
||||
|
||||
public class antiDublicate : ModuleRules
|
||||
{
|
||||
public antiDublicate(ReadOnlyTargetRules Target) : base(Target)
|
||||
{
|
||||
PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
|
||||
|
||||
PublicIncludePaths.AddRange(
|
||||
new string[] {
|
||||
// ... add public include paths required here ...
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
PrivateIncludePaths.AddRange(
|
||||
new string[] {
|
||||
// ... add other private include paths required here ...
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
PublicDependencyModuleNames.AddRange(
|
||||
new string[]
|
||||
{
|
||||
"Core",
|
||||
// ... add other public dependencies that you statically link with here ...
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
PrivateDependencyModuleNames.AddRange(
|
||||
new string[]
|
||||
{
|
||||
"CoreUObject",
|
||||
"Engine",
|
||||
"Slate",
|
||||
"SlateCore",
|
||||
// ... add private dependencies that you statically link with here ...
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
DynamicallyLoadedModuleNames.AddRange(
|
||||
new string[]
|
||||
{
|
||||
// ... add any modules that your module loads dynamically here ...
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"FileVersion": 3,
|
||||
"Version": 1,
|
||||
"VersionName": "1.0",
|
||||
"FriendlyName": "antiDublicate",
|
||||
"Description": "if enabled prevent app to be launched many times. Except pixel streaming config and editor",
|
||||
"Category": "Other",
|
||||
"CreatedBy": "Dron",
|
||||
"CreatedByURL": "https://github.com/Andron666",
|
||||
"DocsURL": "",
|
||||
"MarketplaceURL": "",
|
||||
"SupportURL": "",
|
||||
"CanContainContent": false,
|
||||
"IsBetaVersion": false,
|
||||
"IsExperimentalVersion": false,
|
||||
"Installed": false,
|
||||
"Modules": [
|
||||
{
|
||||
"Name": "antiDublicate",
|
||||
"Type": "CookedOnly",
|
||||
"LoadingPhase": "EarliestPossible"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user