Справочник советов и примеров по C++Builder

       

Программа


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

    // Для чтобы программа не запускалась второй раз надо модифицировать проектный файл (в данном примере это Project1.cpp):

    #include &ltvcl.h&gt

    #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)

    // Для чтобы программа не запускалась второй раз напишите следующий код:

    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);

      }

    Автор:

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

    // Чтобы узнать каталог напишите следющий код:

    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;

    }

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


    // Напишите следющий код:

    ShowWindow(Application->Handle, SW_HIDE);//Скрыть

    ShowWindow(Application->Handle, SW_SHOW);//Показать



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

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

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

    Project->Options->Load Icon

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

    // Напишите следющий код:

    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);


    Содержание раздела