Программа (C Builder). Программа (C++ Builder). Программа не запускалась второй раз (Вариант 1) Как сделать, чтобы программа не запускалась второй раз (
Скачать 16.79 Kb.
|
Программа (C++ Builder) Как сделать, чтобы программа не запускалась второй раз (Вариант 1) Как сделать, чтобы программа не запускалась второй раз (Вариант 2) Как узнать каталог, где находится запускаемая программа Как убрать иконку приложения с TaskBar-а Как сделать, чтобы программа на C++Builder не требовала .bpl, .dll Как поменять ICON у моей программы [+] Как назначить программе другой приоритет Как сделать, чтобы программа не запускалась второй раз // Для чтобы программа не запускалась второй раз надо модифицировать проектный файл (в данном примере это 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) // Для чтобы программа не запускалась второй раз напишите следующий код: 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 Как узнать каталог, где находится запускаемая программа // Чтобы узнать каталог напишите следющий код: 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); Наверх |