From 614febabf6ee776e6d9d4f0feb48ba4b552e673c Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Tue, 15 Aug 2023 15:38:50 +0200 Subject: [PATCH] allow only 1 instance per game folder --- config/ConfigFormUnit.cpp | 10 ++++++++++ config/ConfigFormUnit.h | 1 + config/cnc-ddraw config.cpp | 17 ++++++++++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/config/ConfigFormUnit.cpp b/config/ConfigFormUnit.cpp index 6bfd98b..0178e22 100644 --- a/config/ConfigFormUnit.cpp +++ b/config/ConfigFormUnit.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include "ConfigFormUnit.h" //--------------------------------------------------------------------------- #pragma package(smart_init) @@ -28,6 +29,15 @@ __fastcall TConfigForm::TConfigForm(TComponent* Owner) { } +void __fastcall TConfigForm::CreateParams(TCreateParams & Params) +{ + TForm::CreateParams(Params); + + StrCopy( + Params.WinClassName, + THashSHA1::GetHashString(Application->ExeName).w_str()); +} + void __fastcall TConfigForm::LanguageImgClick(TObject *Sender) { auto *ini = new TIniFile(".\\ddraw.ini"); diff --git a/config/ConfigFormUnit.h b/config/ConfigFormUnit.h index 1abcb9e..2e16295 100644 --- a/config/ConfigFormUnit.h +++ b/config/ConfigFormUnit.h @@ -115,6 +115,7 @@ __published: // Von der IDE verwaltete Komponenten private: // Benutzer-Deklarationen + virtual void __fastcall CreateParams(TCreateParams & Params); void SaveSettings(); bool GetBool(TIniFile *ini, System::UnicodeString key, bool defValue); void ApplyTranslation(TIniFile *ini); diff --git a/config/cnc-ddraw config.cpp b/config/cnc-ddraw config.cpp index 958693d..df2488f 100644 --- a/config/cnc-ddraw config.cpp +++ b/config/cnc-ddraw config.cpp @@ -1,8 +1,9 @@ //--------------------------------------------------------------------------- #include -#include #pragma hdrstop +#include +#include #include //--------------------------------------------------------------------------- #include @@ -16,6 +17,20 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int) Application->Initialize(); Application->MainFormOnTaskBar = true; + HWND hwnd = + FindWindow( + THashSHA1::GetHashString(Application->ExeName).w_str(), NULL); + + if (hwnd) { + + if (IsIconic(hwnd)) { + ShowWindow(hwnd, SW_RESTORE); + } + + SetForegroundWindow(hwnd); + return 0; + } + auto *ini = new TIniFile(".\\ddraw.ini"); auto theme = ini->ReadString("ddraw", "configtheme", "Windows10");