Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
4 / 4 / 4
Регистрация: 10.05.2011
Сообщений: 19
1

Повторное открытие программы

03.06.2011, 13:23. Показов 1795. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я пишу прогу на Delphi 7 (текстовый редоктор, в котором сразу можно открывать несколько окон). Как я могу зделать чтобы при открывании какого-нибудь текста из проводника через мой текстовый редактор - он открывался, если еще не открыт, а если он уже открыт - чтобы передавал информацию о файле, который открывается?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2011, 13:23
Ответы с готовыми решениями:

Повторное открытие формы после ее закрытия
Привет. Помогите с проблемкой. У меня имеется программа, работает отлично НО... в проге есть...

Повторное открытие форм
Доброго времени суток. Прошу помощи. Вопрос в следующем: Есть основная Form1, на ней есть...

Повторное открытие главной формы
Есть главная форма Form1, в событии onShow которой прописано открытие модальной формы Form2. По...

Повторное прохождение теста без перезапуска программы
вот сама программка , проблема в том что тестирование выполняется один раз , после каждого...

4
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
03.06.2011, 13:26 2
Правая кнопка мыши на любом файле с расширением '*.txt'
Открыть с помощью
выбрать ваш "блокнот" и поставить галочку "использовать по умолчанию" (или что-то в этом духе)
Ok
0
4 / 4 / 4
Регистрация: 10.05.2011
Сообщений: 19
04.06.2011, 09:52  [ТС] 3
Цитата Сообщение от MsGuns Посмотреть сообщение
Правая кнопка мыши на любом файле с расширением '*.txt'
Открыть с помощью
выбрать ваш "блокнот" и поставить галочку "использовать по умолчанию" (или что-то в этом духе)
Ok
Я знаю, но мне нужно, чтобы прога не открывалась повторно, если она уже открыта, а передавала информацию о файле той которая открыта
0
3218 / 2361 / 540
Регистрация: 11.09.2009
Сообщений: 8,604
04.06.2011, 11:51 4
Цитата Сообщение от traveller6 Посмотреть сообщение
чтобы прога не открывалась повторно
Для этого надо использовать какой-нибудь глобальный системный объект, например, мютекс.
При запуске программы анализируется, нет ли такого объекта.
Если есть - то значит запущена вторая копия. Программа может послать какое-нибудь сообщение своей первой копии и должна закрыться.
Если объекта нет - первый запуск. Создаётся объект и продолжается работа.
Делается это в файле проекта (*.dpr) и выглядит примерно так:
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
program e5_admin;
 
uses
  Forms,
  Windows,
  Unit1 in 'Unit1.pas' {Exp5admin},
  e5_BaseUpdater in 'e5_BaseUpdater.pas',
  Shares in 'Shares.pas',
  FrameItem_0 in 'FrameItem_0.pas' {Frame2: TFrame};
 
var
  Mutex : THandle;  // это и есть системный объект - мютекс
  k: integer;
  wnd: HWND;
 
  {$R *.res}
 
begin
Mutex := CreateMutex( nil, False, 'Global\47D7B1D8-8A98-7211-9271-94D1D3E72ED1');  // пытаемся создать мютекс
k := GetLastError();  // читаем код ошибки
if (k=ERROR_ALREADY_EXISTS) or (k=ERROR_ACCESS_DENIED) then // мютекс уже есть
  begin
  // найти окно по названию класса
  wnd := FindWindow('TExp5admin',nil);
  if wnd<>0 then
   // послать сообщение найденному приложению
   SendMessage(wnd,WM_GOTOFOREGROUND,0,0);
  Application.Terminate;  // завершить работу
  Exit;
  end else  // такого мютекса ещё нет - первый запуск
  begin
  Application.Initialize;
  Application.CreateForm(TExp5admin, Exp5admin);
  Application.Run;
  end;
end.
Цитата Сообщение от traveller6 Посмотреть сообщение
...передавала информацию о файле той которая открыта
В моём примере посылается сообщение "показать форму" на случай, если приложение свёрнуто в трей или было за другими окнами. Вы можете послать сообщение с именем файла.
1
129 / 31 / 3
Регистрация: 03.08.2010
Сообщений: 630
04.06.2011, 17:58 5
i8085, кстати о Mutex'ах. Я так и не понял, чем заполнять MutexAttributes в
Delphi
1
constructor Create(MutexAttributes: PSecurityAttributes; InitialOwner: Boolean; const Name: string; UseCOMWait: Boolean = False); overload;
0
04.06.2011, 17:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2011, 17:58
Помогаю со студенческими работами здесь

Повторное открытие формы
Здравствуйте, private void показатьАлфавитToolStripMenuItem_Click(object sender, EventArgs e) ...

Повторное открытие окна
Как сделать, чтобы окно не вызывалось, если уже открыто?

Повторное открытие окна
После закрытия окна SendMessage(hwnd11, WM_CLOSE, 0, 0); нужно в очередной раз его открыть, но...

Повторное открытие окна
Здравствуйте, столкнулся с проблемой, у меня есть кнопка которая открывает другое окно по типу: ...


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

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