Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2010, 16:09   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Время работы компьютера

Возникла идейка написать одну программу. В ней нужно следить за временем простоя компьютера. То есть я вот что имею ввиду. Пусть моя программка установлена на компе, в ней задается время через сколько времени простоя компьютера без действия нужно запустить (открыть (программа моя в трее будет)) мою программку. То есть вопрос-то в чем: как отследить время, которое компьютер простаивает? Вот такой вот вопросс)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 01.03.2010, 16:17   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

http://www.delphisources.ru/pages/so...e-monitor.html
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 01.03.2010, 17:05   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А вот в этом примере время, через которое стартует программа задается здесь:
Код:
const
  IdleThreshold = 5;
А у меня пользователь должен сам его задавать. И как вследствии возник вопрос: как лучше организовать ввод и хранение введенного числа? То есть ситуация такова: пользователь поставил мою программу, первый раз запустил ее, указал любое свое число, сохранил и программа будет уже появляться через то количество секунд, которое указал пользователь при первом запуске. И так будет запускаться до тех пор, пока пользователь не сменит это число. Где лучше хранить это самое число и как грамотно организовать это?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 01.03.2010, 17:35   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Да в любом месте - в реестре, в файле.
При загрузке программы загрузили из реестра/файла, при перемещении бегунка настройкки - перезаписали.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 01.03.2010, 18:19   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Вот, сделал, чтобы показывалось на весь (почти) экран:
Код:
unit main;

interface

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

type
  TfMain = class(TForm)
    IdleTimer: TTimer;
    lbWarning: TLabel;
    RzTrayIcon1: TRzTrayIcon;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    ImageList1: TImageList;
    procedure FormCreate(Sender: TObject);
    procedure IdleTimerTimer(Sender: TObject);
    procedure N1Click(Sender: TObject);
   end;

var
  fMain: TfMain;

implementation
 uses Unit1;
{$R *.dfm}

const
  IdleThreshold = 5;

procedure TfMain.FormCreate(Sender: TObject);
begin
 Application.ShowMainForm:=false;
// PostMessage(Application.Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 1);
end;

procedure TfMain.IdleTimerTimer(Sender: TObject);
var
 LII: TLastInputInfo;
 CurrentIdleInterval: DWORD;
begin
 FillChar(LII, SizeOf(LII), 0);
 LII.cbSize:=SizeOf(LII);
 Win32Check(GetLastInputInfo(LII));
 CurrentIdleInterval:=GetTickCount-LII.dwTime;
 if CurrentIdleInterval>1000*IdleThreshold
 then
  begin
   Form1.Caption:=Format('Время бездействия %d секунд',[CurrentIdleInterval div 1000]);
   Form1.Show;
  end;
end;

procedure TfMain.N1Click(Sender: TObject);
begin
 Application.Terminate;
end;

end.
Когда прога старутет, то прога сворачивается в трей, проходит 5 секунд и появляется Form1:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RzButton;

type
  TForm1 = class(TForm)
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure RzBitBtn1Click(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
 uses main;
{$R *.dfm}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Application.Terminate;
end;

procedure TForm1.RzBitBtn1Click(Sender: TObject);
begin
 Form1.Hide;
 fmain.Hide;
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
 if Key = #13 then
 begin
  Form1.Hide;
  fmain.Hide;
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 FormStyle:=fsStayOnTop;
 BorderStyle:=bsNone;
 WindowState:=wsMaximized;
 Color:=clBlack;
end;

end.
Что дописать, чтобы панель задач, которая видна, тоже перекрывалась моей формой?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 01.03.2010, 18:27   #6
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Код:
  form1.BorderStyle := bsNone;
  form1.WindowState := wsMaximized;
eoln вне форума Ответить с цитированием
Старый 01.03.2010, 18:32   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Код:
Код:

  form1.BorderStyle := bsNone;
  form1.WindowState := wsMaximized;
Это не канает . Панель задач все равно видна)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 01.03.2010, 18:41   #8
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

artemavd, а что сешает скрыть панель задач? А потом когда форму будеш сварачивать снова показать
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 01.03.2010, 19:03   #9
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
а что сешает скрыть панель задач? А потом когда форму будеш сварачивать снова показать
Как? Я думал об этом.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 01.03.2010, 19:39   #10
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Код:
procedure TfrmFirst.OldDesktopHide;
var
  Wnd: THandle;
begin
  Wnd := FindWindow('Progman', nil);
  Wnd := FindWindowEx(Wnd, HWND(0), 'ShellDll_DefView', nil);
  ShowWindow(Wnd, sw_hide);
  ShowWindow(FindWindow('Shell_TrayWnd', nil), sw_hide);
  ShowWindow(FindWindow('Button', nil), sw_hide);
  //EnableWindow(FindWindow('Button', nil),False);
end;

procedure TfrmFirst.OldDesktopShow;
var
  Wnd: THandle;
begin
  Wnd := FindWindow('Progman', nil);
  Wnd := FindWindowEx(Wnd, HWND(0), 'ShellDll_DefView', nil);
  ShowWindow(Wnd, sw_show);
  ShowWindow(FindWindow('Shell_TrayWnd', nil), sw_show);
  ShowWindow(FindWindow('Button', nil), sw_show);
  //EnableWindow(FindWindow('Button', nil),True); // на семерку, на хп чуто подругому
end;
из названий думаю всё понятно, тут ещё и ярлыки со стола скрываются
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Время работы программы Magist Компоненты Delphi 5 24.10.2009 20:52
Выключение компьютера через определенное время V@mpir Общие вопросы Delphi 7 28.06.2009 00:33
Время работы string.find (C++) megachuhancer Помощь студентам 1 20.04.2009 17:40
Время работы WINDOWS В_И_К_Т_О_Р Помощь студентам 8 30.01.2008 12:42
Время работы сортировок Боня Помощь студентам 1 10.02.2007 17:53