С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
10 / 10 / 2
Регистрация: 03.04.2010
Сообщений: 160
1

Как запретить два запуска копии программы

23.05.2010, 11:45. Показов 3693. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как запретить два запуска копии программы почему это элементарно не работает >>>>>
Delphi
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
program Project1;
 
uses
  Forms,windows ,
  Unit1 in 'Unit1.pas' {Form1};
 
{$R *.res}
var
  hwnd: THandle;
 
begin
  hwnd := FindWindow('TForm1', 'Form1');// тупо не запускается 
  if hwnd = 0 then//хоть 0 хоть 1 result =0
  begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end
  else
    SetForegroundWindow(hwnd)
end.
или вот это ( с чем я 4 часа пропарился ))))и тоже самое
 
program Project1;
 
uses
  Forms,  Windows,
  Messages,
  SysUtils,
  Unit1 in 'Unit1.pas' {Form1};
 
{$R *.res}
 
 
var
wnd: HWND;
  copyDataStruct: TCopyDataStruct;
  ParamString: string;
  WParam, LParam: integer;
  begin
 
  wnd:= FindWindow('Form1',nil);
  if Wnd = 0 then begin
  Form1:= TForm1.Create(Application);
  Form1.Show;
  Form1.Update;
 
end;
  Application.CreateForm(TForm1, Form1);
begin
  repeat
  Application.ProcessMessages;
  until Form1.CloseQuery;
 
 Form1.Hide;
  Form1.Free;
end;
  Application.Run;
 
    CopyDataStruct.lpData := PChar(ParamString);
    CopyDataStruct.cbData := Length(ParamString);
    CopyDataStruct.dwData := 0;
    WParam := Application.Handle;
    LParam := Integer(@CopyDataStruct);
 
    SendMessage(wnd, WM_CopyData, WParam, LParam);
    Application.Terminate;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2010, 11:45
Ответы с готовыми решениями:

Отработка запуска копии программы
Добрый день. При повторном запуске программы не разворачивается форма из трея. Подскажите, где...

Запрет запуска более 1 копии программы
Здраствуйте я хотел бы узнать как сделать так чтобы запретить запуск 2 окна программы! "Пример"...

Обход защиты от запуска копии программы - как перенаправить заголовок
Есть одна игра, которая запрещает играть в неё сразу с двух аккаунтов, песочницы виртуалки не...

Как запретить запуск второй копии программы при этом сохранить аргументы?
Стало быть очень интересно, есть программа которая должна работать в единственном экземпляре. Это...

4
13208 / 6597 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
23.05.2010, 14:58 2
Почитайте вот здесь, там суть та же: thread102001.html
1
10 / 10 / 2
Регистрация: 03.04.2010
Сообщений: 160
23.05.2010, 15:34  [ТС] 3
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Почитайте вот здесь, там суть та же: thread102001.html
Но все же там тоже самое написано но у меня так это и не пашет да же с тем что было предложенно копилируется все норм в чем глюК не догоняю ?
0
40 / 40 / 6
Регистрация: 27.03.2010
Сообщений: 74
23.05.2010, 17:32 4
CrossExE,

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
program Project1;
 
uses
  Forms,windows ,
  Unit1 in 'Unit1.pas' {Form1};
 
{$R *.res}
var
  hwnd: THandle;
 
begin
  hwnd := FindWindow('TForm1', 'Form1');// тупо не запускается 
  if hwnd = 0 then//хоть 0 хоть 1 result =0
  begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end
  else
    SetForegroundWindow(hwnd)
end.
Скомпилируйте и закройте Делфи. Потом запустите Ваше программу. Или форму назовите по другому. Например, MySuperMainForm. Тогда код запустится сразу. Парадокс
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
program Project1;
 
uses
  Forms,
  windows,
  Unit1 in 'Unit1.pas' {MySuperMainForm};
 
{$R *.res}
var
  hwnd: THandle;
 
begin
  hwnd := FindWindow('TMySuperMainForm', 'MySuperMainForm');// тупо не запускается
  if hwnd = 0 then//хоть 0 хоть 1 result =0
  begin
    Application.Initialize;
    Application.CreateForm(TMySuperMainForm, MySuperMainForm);
  Application.Run;
  end
  else
    SetForegroundWindow(hwnd)
end.
2
10 / 10 / 0
Регистрация: 27.01.2010
Сообщений: 27
23.05.2010, 21:15 5
Стрёмна как то нада программе дать тег и искать по тегу
0
23.05.2010, 21:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2010, 21:15
Помогаю со студенческими работами здесь

MFC. Запрет запуска второй копии программы
Здравстуйте. В главе 3 книги Дж. Рихтера есть простая реализация примера для запрета запуска...

Сохранение листа в отдельную книгу. Как добиться удаления макроса и кнопки его запуска на копии?
Всем доброе утро. Помогите пожалуйста решить несколько задач по данному коду: 1. Нужно, чтобы при...

Запрет запуска копии приложения
Недавно перешел на Linux, и если на винде в интернетах полно примеров, как запретить повторный...

Запрет запуска копии процесса
Добрый день.... Добавлено через 10 минут Добрый день.... Есть такой вот код: set...

Запрет запуска второй копии
Здравствуйте, пытаюсь запретить запуск второй копии с активацией окна (вывода на передний план...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru