Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.02.16;
Скачать: CL | DM;

Вниз

Автоматическое закрытие программы.   Найти похожие ветки 

 
JohnKorsh   (2013-04-11 14:57) [0]

Добрый день! Не поможет ли кто в простом вопросе? Закрываю программу-рактор - по бездействию пользователя в течении пяти минут. (Таймер, счётчик и Close). В прграмме Memo, MainMenu и строка состояния. Если фокус ввода на Memo, то всё работает. Если пользователь активировал MainMenu, да и ушёл, ничего не выбрав, то всё плохо - за 10 секунд до закрытия краснеет строка состояния - это происходит, но программа не закрыватся. Как закрыть программу в этой ситуации?


 
Jeer ©   (2013-04-11 15:22) [1]

Выключить монитор.


 
JohnKorsh   (2013-04-11 15:32) [2]

Если просто "подсветить" основной пункт меню, то программа закрывается, а, если открыть подменю, то закрытия не происходит. Можно ли программно закрывать открытые подменю?


 
RWolf ©   (2013-04-11 15:46) [3]


> Как закрыть программу в этой ситуации?

Halt(0);


 
O'ShinW ©   (2013-04-11 16:04) [4]

CloseWindow( Menu.WindowsHandle);
Close;


 
JohnKorsh   (2013-04-11 16:36) [5]

Спасибо. Но Halt (0) - работает хорошо, но вообще то не очень, ведь это abnormal termination. Дамп создаётся. А не хотелось бы.


 
Игорь Шевченко ©   (2013-04-11 17:13) [6]


> Halt (0)


> Дамп создаётся


Не создается


 
JohnKorsh   (2013-04-11 17:16) [7]

Да, ошибся, не создаётся.
Извините, а как Handle MainMenu получить?


 
O'ShinW ©   (2013-04-11 17:20) [8]

MainMenu.WindowHandle


 
Германн ©   (2013-04-11 17:22) [9]


> Извините, а как Handle MainMenu получить?

А зачем?


 
JohnKorsh   (2013-04-11 18:04) [10]

чтобы

CloseWindow( Menu.WindowsHandle);
Close;


 
Германн ©   (2013-04-11 18:11) [11]


> чтобы
>
> CloseWindow( Menu.WindowsHandle);
> Close;

Ну попробуй. Только не WindowsHandle, а WindowHandle. Но работает криво.


 
JohnKorsh   (2013-04-11 18:16) [12]

Да, криво. Ещё как криво. У Halt (0) ещё недостаток - не выполняется OnClose. Там у меня всё, что пользователь набрал сохраняется. Спасибо. Подумаю.


 
O'ShinW ©   (2013-04-11 22:33) [13]

а что криво-то?
Засылаем себе PostMessage о выходе, в котром закрываем меню, после закрываем форму. Все штатно.


 
Германн ©   (2013-04-12 01:38) [14]


> O"ShinW ©   (11.04.13 22:33) [13]
>
> а что криво-то?
> Засылаем себе PostMessage о выходе, в котром закрываем меню,
>  после закрываем форму. Все штатно.
>  

А сам пробовал?


 
O'ShinW ©   (2013-04-12 08:17) [15]


> А сам пробовал?

тока что


 
O'ShinW ©   (2013-04-12 08:37) [16]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Menus, ExtCtrls;

type
 TForm1 = class(TForm)
   btn1: TButton;
   Memo1: TMemo;
   MainMenu1: TMainMenu;
   rrr1: TMenuItem;
   rrrr1: TMenuItem;
   tmr1: TTimer;
   procedure btn1Click(Sender: TObject);
   procedure tmr1Timer(Sender: TObject);
 private     { Private declarations }
 public      { Public declarations }
   SSS: string;
   i: Integer;
   procedure OnMsgQuit(var Message: TMessage); message WM_USER + $100;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
 SR: TSearchRec;
 SL: TStringList;
begin
 SSS := "C:\111111\111\";
 SL := TStringList.Create;
 if FindFirst(SSS + "*.sql", faAnyFile, SR) = 0 then
 begin
   repeat
     SL.Clear;
     SL.LoadFromFile(SSS + SR.Name);
     Memo1.Text := Memo1.Text + SL.Text;
   until FindNext(SR) <> 0;
   FindClose(SR);
 end;
end;

procedure TForm1.OnMsgQuit(var Message: TMessage);
begin
 inc(i);
 Memo1.Lines.Add(DateTimeToStr(now));
 if i > 2 then
 begin
   CloseWindow(MainMenu1.WindowHandle);
   Close;
 end;
end;

procedure TForm1.tmr1Timer(Sender: TObject);
begin
 PostMessage(Self.Handle, WM_USER + $100, 0, 0);
end;

end.


 
O'ShinW ©   (2013-04-12 08:47) [17]

кстати, тут

> procedure TForm1.OnMsgQuit(var Message: TMessage);

можно сделать все что надо :
> всё, что пользователь набрал сохраняется.


зы
описался немного с WindowHandle - так хоть бы кто попробовал начать набирать - ide бы и подсказал, как правильно

зы2
Германн
От ты меня зацепил :)

> А сам пробовал?

А ты? :)


 
Игорь Шевченко ©   (2013-04-12 09:57) [18]


> Закрываю программу-рактор - по бездействию пользователя
> в течении пяти минут


в корзину однозначно


 
O'ShinW ©   (2013-04-12 11:03) [19]

кстати, "рактор" - это что такое?


 
robt   (2013-04-12 13:41) [20]


> Закрываю программу-рактор - по бездействию пользователя
> в течении пяти минут.

самая тупая и безумная идея в ПО что я встречал за всю жизнь


 
O'ShinW ©   (2013-04-12 14:11) [21]

не совсем.

Есть у нас комп, туда по RDP ходят юзеры. Там, в т.ч., есть и моя программа.
Периодически ее надо обновить.
Обычно обновление не критично, и я жду пока все юзеры закончат работу.
Но некоторые просто отключают рабочий стол, не выходя из программ.
т.о. через час бездействия программа закрывается сама.



Страницы: 1 вся ветка

Текущий архив: 2014.02.16;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.006 c
2-1366454807
clix
2013-04-20 14:46
2014.02.16
stringlist, воборка данных из строки


2-1366625537
novai
2013-04-22 14:12
2014.02.16
проблемма с BorderStyle:= bsNone;


1-1321391616
Человек
2011-11-16 01:13
2014.02.16
Многопоточное логирование


2-1366383198
Теркин
2013-04-19 18:53
2014.02.16
Как получить список форм проекта?


2-1365771933
novai
2013-04-12 17:05
2014.02.16
TStringList дефолтное значение