Borland C++ FAQ Страница 8. Программа
|
Страница 8 из 17
Программа - Как сделать, чтобы программа не запускалась второй раз
// Для чтобы программа не запускалась второй раз надо модифицировать проектный файл (в данном примере это Project1.cpp): #include <vcl.h> #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);
|