Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ Builder

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 63, средняя оценка - 4.86
Rapsod
Волшебник
63 / 62 / 4
Регистрация: 21.11.2009
Сообщений: 319
#1

Запрет запуска второй копии приложения - C++ Builder

19.01.2010, 22:11. Просмотров 8699. Ответов 33
Метки нет (Все метки)

Всем огромный привет!!!!
Помогите пожалуйста! Как запретить запуск второй копии приложения?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2010, 22:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запрет запуска второй копии приложения (C++ Builder):

Запрет запуска второй копии и перезапуск - C++ Builder
Всем привет! Пытаюсь реализовать запрет на запуск второй копии приложения. Вот мой код: int WINAPI _tWinMain(HINSTANCE, HINSTANCE,...

Запрет запуска копии процесса - C++ Builder
HWND hWnd; hWnd=::FindWindow(name,NULL); if (hWnd) { if (IsIconic(hWnd)) ShowWindow(hWnd,SW_RESTORE); ...

Запрет запуска приложения - C++ Builder
Люди помогите пожалуйста,нужно запретить запуск определенного приложения допустим *.exe(программно на с++\builder) Заранее блогодарен.

Передача имени файла другой копии приложения. - C++ Builder
Суть такова программа регистрирует свое расширение файлов (.form1) И при открытии нового файла копия приложения должно передать сообщение...

Порядок запуска приложения - C++ Builder
Уважаемые форумчане, объясните пожалуйста почему конструкторы форм приложения выполняются по порядку: Application->Initialize(); ...

Отслеживание запуска полноэкранного приложения - C++ Builder
Требуется отследить запуск полноэкранного приложения. Т.е. при запуске полноэкранного приложения моя программа должна отменять свойство...

33
kzru_hunter
1098 / 767 / 58
Регистрация: 01.02.2011
Сообщений: 1,779
Записей в блоге: 1
22.04.2011, 06:00 #16
C++
1
2
3
4
5
6
7
8
9
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    CreateMutex( NULL, true, "MySuperProgram" );
        if ( GetLastError() == ERROR_ALREADY_EXISTS )
        {
            exit(0);
        }
}
2
Samrisbe
1351 / 721 / 33
Регистрация: 28.01.2011
Сообщений: 1,958
22.04.2011, 08:46 #17
Все работает! Спасибо всем учасникам темы!
0
LK
Заблокирован
22.04.2011, 15:24 #18
вот это - 4FC5BAAF-BB97-4540-8BB5-19BC9CCDB00B - у тебя должно быть свое - оно как-то там генерируется, не помню, как, может, кто подскажет ?
1
kzru_hunter
1098 / 767 / 58
Регистрация: 01.02.2011
Сообщений: 1,779
Записей в блоге: 1
22.04.2011, 15:30 #19
Цитата Сообщение от LK Посмотреть сообщение
вот это - 4FC5BAAF-BB97-4540-8BB5-19BC9CCDB00B - у тебя должно быть свое - оно как-то там генерируется, не помню, как, может, кто подскажет ?
вместо 4FC5BAAF-BB97-4540-8BB5-19BC9CCDB00B может быть что угодно, например, "1"
это просто какое-то название. обычно оно совпадает с названием программы.
1
LK
Заблокирован
19.10.2011, 02:53 #20
возвращаясь к теме с легкой руки уважаемого Samrisbe......
Цитата Сообщение от kzru_hunter Посмотреть сообщение
вместо 4FC5BAAF-BB97-4540-8BB5-19BC9CCDB00B может быть что угодно, например, "1"
это просто какое-то название. обычно оно совпадает с названием программы.
- не все так просто:
GUID (Globally Unique Identifier)

а про "забыл" я просто пошутил , а потом - забыл ...

генерируется оно просто - достаточно в Билдере нажать комбинацию из трех пальцев: Ctrl+Shift+G
0
Samrisbe
1351 / 721 / 33
Регистрация: 28.01.2011
Сообщений: 1,958
19.10.2011, 03:59 #21
Ну раз тема ожила не могу удержаться от вопроса
Как по клику на Button1 сгенерировать GUID в Label1
0
LK
Заблокирован
19.10.2011, 12:12 #22
1. Стандартными средствами - никак, это фича редактора кода Билдера.
Хотя можно при установке программы на комп пользователя заодно установить ему Билдер, рекомендуется - несколько версий, при нажатии на Button1 запустить один или все установленные билдеры, найти окно Билдера, програмно нажать сочетание клавиш Ctrl+Shift+G, сгенерировать GUID, найти эту строку в поле редактирования Билдера , скопировать , обратно же, программными средствами , в буфер обмена, загрузить из буфера в невидимый Эдит в своей программе и присвоить свойство Текст Эдита свойству Заголовок Label1 .
Вот и все,

2. Сделать самому с нуля , не такое оно у ж и большое, это общее количество уникальных ключей - 2 в 128-й степени или 3,4028×10 в 38-й степени .

Рекомендую способ, изложенный в п. 1.
1
Samrisbe
1351 / 721 / 33
Регистрация: 28.01.2011
Сообщений: 1,958
19.10.2011, 15:17 #23
Вопрос на засыпку,
Этот код генерирует Мак адрес пк, мне это нужно для программы извлеч любой номер лижбо он был оригинальный, как думаеш он будет на всех пк работать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    DWORD dwSize = MAX_COMPUTERNAME_LENGTH + 1;
    char szBuf[MAX_COMPUTERNAME_LENGTH + 1];
    szBuf[0] = '\0';
    GetComputerName(szBuf, &dwSize);
    Label1->Caption = szBuf;
 
typedef DWORD (CALLBACK* GetadAptInfo)(PIP_ADAPTER_INFO, PULONG);
 HINSTANCE iphlpapi;
 iphlpapi=LoadLibrary("iphlpapi.dll");
 if (!iphlpapi)
    {
     ShowMessage( "Error of upload iphlpapi.dll!");
     Abort();
    }
 GetadAptInfo GetAdaptersInfo;
 GetAdaptersInfo = ( GetadAptInfo)
 GetProcAddress( iphlpapi, "GetAdaptersInfo");
 ULONG adapter_info_size = 0;
 PIP_ADAPTER_INFO pip_a_i = NULL;
 GetAdaptersInfo( pip_a_i, &adapter_info_size );
 pip_a_i = (PIP_ADAPTER_INFO)
                      malloc( sizeof(char) * adapter_info_size);
    if ( GetAdaptersInfo( pip_a_i, &adapter_info_size ))
       {
        ShowMessage("Error in GetAdaptersInfo!");
        free(pip_a_i);
        Abort();
       }
    while (pip_a_i)
          {
           Memo1->Lines->Add("Adapter's CLSID: " + (String)pip_a_i->AdapterName);
           Memo1->Lines->Text =  Memo1->Lines->Text + "MAC address: ";
           for (int i = 0; i < pip_a_i->AddressLength; i++)
               {
                     Memo1->Lines->Text =  Memo1->Lines->Text + ((unsigned char)pip_a_i->Address[i]) + ".";
               }
              Memo1->Lines->Add("");
              pip_a_i = pip_a_i->Next;
          }
    free(pip_a_i);
    FreeLibrary(iphlpapi);
}
0
LK
Заблокирован
19.10.2011, 16:20 #24
делаешь тестовый проектик, даёшь пробовать, реальный мак-адресс тебе, наверное, не скажут , а вот работает или нет - вполне
0
Samrisbe
1351 / 721 / 33
Регистрация: 28.01.2011
Сообщений: 1,958
19.10.2011, 16:32 #25
Цитата Сообщение от LK Посмотреть сообщение
делаешь тестовый проектик, даёшь пробовать, реальный мак-адресс тебе, наверное, не скажут , а вот работает или нет - вполне
В архиве exe отображающий имя пк и мак адрес, просьба протестировать у кого есть возможность работоспособность функции.
Спасибо.
0
Вложения
Тип файла: rar GetMacAdres.rar (9.4 Кб, 14 просмотров)
LK
Заблокирован
19.10.2011, 16:36 #26
почитай здесь: Компиляция программы под С++ Builder, чтобы работала на других компьютерах
0
Миниатюры
Запрет запуска второй копии приложения  
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
19.10.2011, 16:38 #27
Показывает, но только для одной сетевой карты
В десятичном формате (мак привычней в hex)
Привязка к mac - некошерно. Потому как легко изменить.
0
LK
Заблокирован
19.10.2011, 16:40 #28
привязывать надо к 5-6 комплектующим, для избежания сбоя в работе программы при, например, замене сетевой карты, винчестера, корпуса системного блока
0
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
19.10.2011, 16:44 #29
Цитата Сообщение от LK Посмотреть сообщение
привязывать надо к 5-6 комплектующим
Вопрос спорный. Имхо привязка к железу вообще признак плохого тона.
0
Samrisbe
1351 / 721 / 33
Регистрация: 28.01.2011
Сообщений: 1,958
19.10.2011, 16:48 #30
LK не помниш как этот форум называется
Что не сделаеш если друг просит, положил в архив исходник может кто подправит, там есть пара строк которые касячят, и пусть люди пользуются .
не потеме-что за ярко зеленоядовитый фон у тебя? чувствую я от моды отстал со своими пейзажами на рабочем столе
0
Вложения
Тип файла: rar Получить имя компьютера.rar (569.6 Кб, 20 просмотров)
19.10.2011, 16:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2011, 16:48
Привет! Вот еще темы с ответами:

Запрет выполнения нескольких копий приложения - C++ Builder
Здравствуйте. Необходимо запретить одновременное выполнение нескольких копий приложения. Что бы при запуске приложение проверяло,...

Передача данных для запуска приложения - C++ Builder
Всем привет. у меня такой вопрос... кто может сделать программу смысл такой, имеется файл кпримеру qwerty.exe если его запускаем...

Запрет на запуск других экземпляров запущенного приложения - C++ Builder
здравствуйте Как заставить мое приложение, чтобы открыть только один ехе? ну например когда я запускаю Project.exe втарой раз не...

Вывести окно с сообщением во время запуска приложения - C++ Builder
Подскажите если не влом. Сам что-то пока не догадался. В приложении в FormCreate запускается некий сравнительно длительный процесс и форма...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru