Scarlet 1
Scarlet
Best Studio 1
Best Studio
mannaxxx 1
mannaxxx
Agora Metin2 1
Agora Metin2
[DEV]AB 1
[DEV]AB
Sevdamsın 1
Sevdamsın
Hikaye Ekle

[C++] Clientlerin (.exe) Üst Üste Binmesini Engellemek

  • Konuyu başlatan Konuyu başlatan MT2Dev
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 4
  • Görüntüleme Görüntüleme 895
  • Etiketler Etiketler
    c++ fix mt2dev
5.00 yıldız(lar) 1 Değerlendirme Değerlendirenler

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

GİRİŞ & PROBLEM

Merhaba, bir üyenin ricası ile clientlerin (.exe) görev çubuğunda üst üste binmesini engelleyip, tüm clientlerin ayrı ayrı açılmasıyla alakalı bir düzenleme yaptım, belki ihtiyacı olan vardır diye paylaşıyorum.

NELERİ DEĞİŞTİRDİK ?

Açılan her .exe için farklı bir ID oluşturarak işletim sisteminin bunları aynı uygulama olarak görmemesini sağlayacağız, bu benzersiz oluşturulan ID'ler sayesinde her .exe farklı olacak ve üst üste binmeyecek.

NASIL YAPILIR ?

Sadece tek bir dosyada değişiklik yapacağız, Client src/UserInterface içinden "UserInterface.cpp" dosyası açılır.


C++:
// In cludeların en sonuna eklenir;

// UNIQUE_CLIENT_ID
#include <shobjidl.h>
#include <sstream>
// END_OF_UNIQUE_CLIENT_ID

C++:
// BULUNUR;

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)


// ÜSTÜNE EKLENİR; (Dikkat, fonksiyonun dışına!)

// UNIQUE_CLIENT_ID
std::wstring GenerateAppUserModelID()
{
    std::wstringstream ss;
    ss << L"Metin2_" << GetCurrentProcessId();
    return ss.str();
}
// END_OF_UNIQUE_CLIENT_ID


// BULUNUR;

#ifdef _DEBUG
    _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_CRT_DF | _CRTDBG_LEAK_CHECK_DF );
#endif


// ALTINA EKLENİR;

    // UNIQUE_CLIENT_ID
    std::wstring appUserModelID = GenerateAppUserModelID();
    SetCurrentProcessExplicitAppUserModelID (appUserModelID.c_str());
    // END_OF_UNIQUE_CLIENT_ID
 
GİRİŞ & PROBLEM

Merhaba, bir üyenin ricası ile clientlerin (.exe) görev çubuğunda üst üste binmesini engelleyip, tüm clientlerin ayrı ayrı açılmasıyla alakalı bir düzenleme yaptım, belki ihtiyacı olan vardır diye paylaşıyorum.

NELERİ DEĞİŞTİRDİK ?

Açılan her .exe için farklı bir ID oluşturarak işletim sisteminin bunları aynı uygulama olarak görmemesini sağlayacağız, bu benzersiz oluşturulan ID'ler sayesinde her .exe farklı olacak ve üst üste binmeyecek.

NASIL YAPILIR ?

Sadece tek bir dosyada değişiklik yapacağız, Client src/UserInterface içinden "UserInterface.cpp" dosyası açılır.


C++:
// In cludeların en sonuna eklenir;

// UNIQUE_CLIENT_ID
#include <shobjidl.h>
#include <sstream>
// END_OF_UNIQUE_CLIENT_ID

C++:
// BULUNUR;

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)


// ÜSTÜNE EKLENİR; (Dikkat, fonksiyonun dışına!)

// UNIQUE_CLIENT_ID
std::wstring GenerateAppUserModelID()
{
    std::wstringstream ss;
    ss << L"Metin2_" << GetCurrentProcessId();
    return ss.str();
}
// END_OF_UNIQUE_CLIENT_ID


// BULUNUR;

#ifdef _DEBUG
    _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_CRT_DF | _CRTDBG_LEAK_CHECK_DF );
#endif


// ALTINA EKLENİR;

    // UNIQUE_CLIENT_ID
    std::wstring appUserModelID = GenerateAppUserModelID();
    SetCurrentProcessExplicitAppUserModelID (appUserModelID.c_str());
    // END_OF_UNIQUE_CLIENT_ID
Paylaşım için teşekkürler.
 
GİRİŞ & PROBLEM

Merhaba, bir üyenin ricası ile clientlerin (.exe) görev çubuğunda üst üste binmesini engelleyip, tüm clientlerin ayrı ayrı açılmasıyla alakalı bir düzenleme yaptım, belki ihtiyacı olan vardır diye paylaşıyorum.

NELERİ DEĞİŞTİRDİK ?

Açılan her .exe için farklı bir ID oluşturarak işletim sisteminin bunları aynı uygulama olarak görmemesini sağlayacağız, bu benzersiz oluşturulan ID'ler sayesinde her .exe farklı olacak ve üst üste binmeyecek.

NASIL YAPILIR ?

Sadece tek bir dosyada değişiklik yapacağız, Client src/UserInterface içinden "UserInterface.cpp" dosyası açılır.


C++:
// In cludeların en sonuna eklenir;

// UNIQUE_CLIENT_ID
#include <shobjidl.h>
#include <sstream>
// END_OF_UNIQUE_CLIENT_ID

C++:
// BULUNUR;

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)


// ÜSTÜNE EKLENİR; (Dikkat, fonksiyonun dışına!)

// UNIQUE_CLIENT_ID
std::wstring GenerateAppUserModelID()
{
    std::wstringstream ss;
    ss << L"Metin2_" << GetCurrentProcessId();
    return ss.str();
}
// END_OF_UNIQUE_CLIENT_ID


// BULUNUR;

#ifdef _DEBUG
    _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_CRT_DF | _CRTDBG_LEAK_CHECK_DF );
#endif


// ALTINA EKLENİR;

    // UNIQUE_CLIENT_ID
    std::wstring appUserModelID = GenerateAppUserModelID();
    SetCurrentProcessExplicitAppUserModelID (appUserModelID.c_str());
    // END_OF_UNIQUE_CLIENT_ID
Paylaşım için teşekkürler.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst