Главная страница
Навигация по странице:

  • ShowMessage

  • Как узнать каталог, где находится запускаемая программа

  • Как сделать, чтобы программа на C++Builder не требовала .bpl, .dll Для начала надо зайти Project->Options

  • Как поменять ICON у моей программы Project->Options->Load Icon Как назначить программе другой приоритет

  • Программа (C Builder). Программа (C++ Builder). Программа не запускалась второй раз (Вариант 1) Как сделать, чтобы программа не запускалась второй раз (


    Скачать 16.79 Kb.
    НазваниеПрограмма не запускалась второй раз (Вариант 1) Как сделать, чтобы программа не запускалась второй раз (
    АнкорПрограмма (C Builder
    Дата12.09.2022
    Размер16.79 Kb.
    Формат файлаdocx
    Имя файлаПрограмма (C++ Builder).docx
    ТипПрограмма
    #673121

    Программа (C++ Builder)

    1. Как сделать, чтобы программа не запускалась второй раз (Вариант 1)

    2. Как сделать, чтобы программа не запускалась второй раз (Вариант 2)

    3. Как узнать каталог, где находится запускаемая программа

    4. Как убрать иконку приложения с TaskBar-а

    5. Как сделать, чтобы программа на C++Builder не требовала .bpl, .dll

    6. Как поменять ICON у моей программы

    7. [+] Как назначить программе другой приоритет

    1. Как сделать, чтобы программа не запускалась второй раз

      // Для чтобы программа не запускалась второй раз надо модифицировать проектный файл (в данном примере это Project1.cpp):
      #include
      #pragma hdrstop
      USERES("Project1.res");
      USEFORM("Unit1.cpp", Form1);
      const char *NamedMutex= "OneOnly";
      HANDLE CheckInstance(const char *Name)
      {
      HANDLE Mutex = CreateMutex(NULL, true,Name);
      int er = GetLastError();
      if (er) return 0;
      return Mutex;
      }
      WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
      {
      HANDLE Mutex = CheckInstance(NamedMutex);
      if (!Mutex)
      {
      ShowMessage("Уже работает");
      ReleaseMutex(Mutex);
      return 1;
      }
      try
      {
      Application->Initialize();
      Application->CreateForm(__classid(TForm1), &Form1);
      Application->Run();
      }
      catch (Exception &exception)
      {
      Application->ShowException(&exception);
      }
      return 0;
      }

    2. Как сделать, чтобы программа не запускалась второй раз (Вариант 2)

      // Для чтобы программа не запускалась второй раз напишите следующий код:
      BOOL WeAreAlone(LPSTR szName)
      {
      HANDLE hMutex=CreateMutex(NULL,TRUE,szName);
      if (GetLastError()==ERROR_ALREADY_EXISTS)
      {
      CloseHandle(hMutex);
      return false;
      }
      return true;
      }

    //В CreatForm пишишь проверку:
    if (WeAreAlone("Some_Unique_Name_Or_Other"));
    else
    {
    ShowMessage("Такая программа уже работает!");
    exit(0);
    }
    Автор: ant47

    1. Как узнать каталог, где находится запускаемая программа

      // Чтобы узнать каталог напишите следющий код:
      void __fastcall TForm1::Button4Click(TObject *Sender)
      {
      Label1->Caption = Application->ExeName;
      Label2->Caption = ParamStr(0);
      Label3->Caption = GetCurrentDir();// текущая папка (может измениться!)
      char ExeName[MAX_PATH];
      GetModuleFileName(HInstance, ExeName, sizeof(ExeName));
      Label4->Caption=ExeName;
      }

    2. Как убрать иконку приложения с TaskBar-a

      // Напишите следющий код:
      ShowWindow(Application->Handle, SW_HIDE);//Скрыть
      ShowWindow(Application->Handle, SW_SHOW);//Показать

    3. Как сделать, чтобы программа на C++Builder не требовала .bpl, .dll

    Для начала надо зайти Project->Options затем: На вкладке Compiler нажать "Release", на вкладке Packages снять галку с "Build with runtime packages" и на вкладке Linker снять галку с "Use dynamic RTL"

    1. Как поменять ICON у моей программы

    Project->Options->Load Icon

    1. Как назначить программе другой приоритет

    // Напишите следющий код:
    HANDLE ProcessHandle, ThreadHandle;
    DWORD ProcessID = GetCurrentProcessId();
    ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS,false,ProcessID);
    SetPriorityClass(ProcessHandle,HIGH_PRIORITY_CLASS);
    ThreadHandle = GetCurrentThread();
    SetThreadPriority(ThreadHandle,THREAD_PRIORITY_TIME_CRITICAL);

    Наверх


    написать администратору сайта