Форум: "Начинающим";
Текущий архив: 2014.02.16;
Скачать: [xml.tar.bz2];
ВнизАвтоматическое закрытие программы. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.003 c