Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
CAPITAL OF ROCK!
 Аватар для JokeR.BY
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286

Программа учёта работы компьютера

26.07.2012, 19:02. Показов 6489. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, дражайшие гуру
Попросила меня намедни бух найти какую-нить программку, дабы видеть сколько её дочка зависает за компом на каникулах. В общем, лень было колупаться в куче софта, решил своё написать. Вопросы:
  • как лучше реализовать?
  • как скрыть присутствие проги?
  • во что делать экспорт событий?
мои мысли: сделать мини прогу, которая по запуску (авторан винды) добавляет в какой-нить файлик строку примерного вида: ОС запущена в 12.12.12 21:21:21. А при закрытии проги аналогичную про выключение. Вопрос только, в каком событии поставить процедуру записи (2ую) чтоб всё записалось корректно? И ещё вопрос: как её скрыть от глаз пронырливой 14-летней девки? Диспетчер не нужен, она туда не полезет, а вот как скрыть форму так, чтобы она не моргала при включении? и просто какие ещё советы будут?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.07.2012, 19:02
Ответы с готовыми решениями:

Программа учёта времени работы сотрудника компьютера
Здравствуйте подскажите есть программа учёта времени работы сотрудника на компьютере! зарание спасибо!!

Программа учета работы
Привет, хочу для практики та и для работы надо, сделать программу такую: Для учета работы. То есть как я думаю, например надо сдать...

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

32
 Аватар для CHARMED
89 / 70 / 9
Регистрация: 04.03.2012
Сообщений: 206
26.07.2012, 20:25

Не по теме:

Без обид, лучше взять что -то готовое


Если до завтра не передумаете - помогу с реализацией
0
CAPITAL OF ROCK!
 Аватар для JokeR.BY
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
26.07.2012, 20:41  [ТС]
Цитата Сообщение от CHARMED Посмотреть сообщение

Не по теме:

Без обид, лучше взять что -то готовое

почему? мне лень колупаться во всей этой мусорной яме из хлама, тем более что практически все проги заточены под ограничение прав по времени. Мне же нужно незаметное составление лога.
Цитата Сообщение от CHARMED Посмотреть сообщение
Если до завтра не передумаете - помогу с реализацией
а с чего такая щедрость?)
0
 Аватар для CHARMED
89 / 70 / 9
Регистрация: 04.03.2012
Сообщений: 206
26.07.2012, 20:46
Цитата Сообщение от JokeR.BY Посмотреть сообщение
а с чего такая щедрость?)
Вам - плюс на работе, мне - практика...
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
26.07.2012, 21:02
Продолжительность работы
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function TimeWorks: String;
var
  Hours,
  Minutes,
  Seconds,
  MSeconds,
  TheLength: Integer;
begin
  TheLength:=GetTickCount;
  Hours:=TheLength div 3600000;
  Minutes:=(TheLength mod 3600000) div 60000;
  Seconds:=((TheLength mod 3600000) mod 60000)div 1000;
  MSeconds:=((TheLength mod 3600000) mod 60000)mod 1000;
  result := IntToStr(Hours)+':'+IntToStr(Minutes)+':'+IntToStr(Seconds)+'.'+IntToStr(MSeconds);
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption := 'Продолжительность работы компа: '+TimeWorks;
end;
Убрать с панели задачь
Delphi
1
ShowWindow (Application.handle, SW_HIDE);
При выключении компа
Delphi
1
2
3
4
5
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose:=true;
  //пишите то как вы собираетесь сохранять
end;
2
CAPITAL OF ROCK!
 Аватар для JokeR.BY
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
26.07.2012, 21:44  [ТС]
Игорь[Igor], благодарствую за помощь) тэээк-с... а можно ли выдрать событие включения ОС? или проще не мучаться и брать время запуска проги?
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
26.07.2012, 21:56
Отнеми от текущего времени продолжительность работы, и будет тебе время запуска
1
CAPITAL OF ROCK!
 Аватар для JokeR.BY
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
26.07.2012, 22:12  [ТС]
тьфу ты... чёт совсем мозг тупит)
0
 Аватар для osminog
5 / 5 / 2
Регистрация: 31.05.2010
Сообщений: 80
25.08.2012, 00:32
Цитата Сообщение от Игорь
procedure TForm1.Timer1Timer(Sender: TObject);
У меня ругается на эту строчку (((

на форму кидал все компоненты: и лабел и часики (((
0
CAPITAL OF ROCK!
 Аватар для JokeR.BY
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
25.08.2012, 00:38  [ТС]
Цитата Сообщение от osminog Посмотреть сообщение
часики
двойной клик по "часикам".

З.Ы. забросил я чёт этот проектик...
1
 Аватар для osminog
5 / 5 / 2
Регистрация: 31.05.2010
Сообщений: 80
25.08.2012, 00:47
Цитата Сообщение от JokeR.BY Посмотреть сообщение
двойной клик по "часикам".

З.Ы. забросил я чёт этот проектик...
а зря! тема требует развития )))
выводит время вот такое = 9:5:10.761
а как привести к такому = 9 ч. 05 мин. (секунды не нужны) ???

тут есть еще 1-н нюанс, который хочется спросит:
при нажатии на Reset или резкого вырубания компа из сети, прога не сохранит данные или же сохранит?
0
CAPITAL OF ROCK!
 Аватар для JokeR.BY
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
25.08.2012, 01:10  [ТС]
Цитата Сообщение от osminog Посмотреть сообщение
а как привести к такому = 9 ч. 05 мин. (секунды не нужны) ???
Delphi
1
2
3
4
5
6
7
8
function TimeWorks: String;
var Hours, Minutes, TheLength: Integer;
begin
  TheLength:=GetTickCount;
  Hours:=TheLength div 3600000;
  Minutes:=(TheLength mod 3600000) div 60000;
  result := IntToStr(Hours)+':'+IntToStr(Minutes);
end;
банально же)

Цитата Сообщение от osminog Посмотреть сообщение
при нажатии на Reset или резкого вырубания компа из сети, прога не сохранит данные или же сохранит?
тут можно по разному поступить. автосейв каждые 2-5 минут. строго точное же не нужно. всё зависит от того, как вы собрались логировать данные.

по поводу проекта: надо бы воскресить. пришла тут идея логировать также все процессы, которые были запущены, страницы в браузере, открытые файлы (вдруг ребёнок втихаря порево смотрит ). но тогда уже экспорт нужно делать в .xml, дабы представлять всё это в удобноперевариваемом виде. ещё можно сделать другую мини прожку для просмотра логов в гуёвом представлении... но блин, так лееень)
0
 Аватар для osminog
5 / 5 / 2
Регистрация: 31.05.2010
Сообщений: 80
25.08.2012, 01:23
Цитата Сообщение от JokeR.BY Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
8
function TimeWorks: String;
var Hours, Minutes, TheLength: Integer;
begin
  TheLength:=GetTickCount;
  Hours:=TheLength div 3600000;
  Minutes:=(TheLength mod 3600000) div 60000;
  result := IntToStr(Hours)+':'+IntToStr(Minutes);
end;
банально же)


тут можно по разному поступить. автосейв каждые 2-5 минут. строго точное же не нужно. всё зависит от того, как вы собрались логировать данные.

по поводу проекта: надо бы воскресить. пришла тут идея логировать также все процессы, которые были запущены, страницы в браузере, открытые файлы (вдруг ребёнок втихаря порево смотрит ). но тогда уже экспорт нужно делать в .xml, дабы представлять всё это в удобноперевариваемом виде. ещё можно сделать другую мини прожку для просмотра логов в гуёвом представлении... но блин, так лееень)
я уже догадался и изолировал в "//"-ки
и сделал так:
Delphi
1
result := IntToStr(Hours)+' ч.'+IntToStr(Minutes)+' мин';
вот как писать автосейв каждые 2-3 минуты, я пока не разобрал... )
0
CAPITAL OF ROCK!
 Аватар для JokeR.BY
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
25.08.2012, 01:49  [ТС]
Цитата Сообщение от osminog Посмотреть сообщение
вот как писать автосейв каждые 2-3 минуты, я пока не разобрал... )
если просто нужно время работы, то кидаем ещё один таймер, ставим нужное время.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var checking:boolean;
procedure TForm1.FormActivate(Sender: TObject);
begin
  started:=False;
end;
 
procedure TForm1.tmr2Timer(Sender: TObject);
var t:TTime;
t:=Now;
if not(checking) then
    //первая запись
    checking:=True
else
  begin
    //удаляем последний автосейв
  end;
  //бла-бла, пишем в текстовый файл а-ля Время выключения - 16 ч. 15 мин. (автосейв)
Добавлено через 2 минуты
Цитата Сообщение от osminog Посмотреть сообщение
я уже догадался и изолировал в "//"-ки
и сделал так:
Delphi
1
result := IntToStr(Hours)+' ч.'+IntToStr(Minutes)+' мин';
эт не пойдёт, ибо не прокатит такой формат. нужно это делать уже в процедуре TForm1.tmr1Timer(Sender: TObject)

Добавлено через 3 минуты
мож кто знает, если использовать TStringList для записи в файл, StrList.Duplicates поможет избавиться от повторяющихся строчек автосейва?
0
CAPITAL OF ROCK!
 Аватар для JokeR.BY
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
25.08.2012, 02:12  [ТС]
вот что пока есть
Вложения
Тип файла: 7z timeWork.7z (167.7 Кб, 33 просмотров)
0
 Аватар для osminog
5 / 5 / 2
Регистрация: 31.05.2010
Сообщений: 80
25.08.2012, 02:31
Цитата Сообщение от JokeR.BY Посмотреть сообщение
вот что пока есть
Спс, посматрел!
буду разбираться!
0
 Аватар для Alexandr_
9 / 9 / 0
Регистрация: 20.08.2012
Сообщений: 79
25.08.2012, 15:48
За 10 минут написал. Посмотри. Там все легко и просто. Немного подредактируешь код, и программа не будет отображаться на экране. Результат сохраняется каждую секунду, так-что если даже комп выключится из сети то ничего не потеряешь.
Вложения
Тип файла: rar TTtime.rar (161.9 Кб, 39 просмотров)
1
CAPITAL OF ROCK!
 Аватар для JokeR.BY
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
25.08.2012, 16:04  [ТС]
Alexandr_, а, собсно, чем отличается от моего?
0
 Аватар для Alexandr_
9 / 9 / 0
Регистрация: 20.08.2012
Сообщений: 79
25.08.2012, 16:23
JokeR.BY Я не знаю, твой не смотрел.
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
25.08.2012, 19:40
Короче, я буду уместно вам говорить.
Чтобы программа запускалась при запуске Winndows надо добавить ключ в реестр и прописать программу в автозапуск. Для этого в разделе Uses пропишите: Registry. В итоге получится типо трояна.
И в процедуре формы OnCreate:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
var 
RegIni:TRegIniFile;
begin
RegIni:=TRegIniFile.Create(''Software''); 
RegIni.RootKey:=HKEY_LOCAL_MACHINE; 
RegIni.OpenKey(''Software'', true); 
RegIni.OpenKey(''Microsoft'', true); 
RegIni.OpenKey(''Windows'', true); 
RegIni.OpenKey(''CurrentVersion'', true); 
RegIni.WriteString(''RunServices'', ''Название программы.exe'', 
Application.ExeName); 
RegIni.Free;
Это нужно для добавления в автозапуск. Дальше вам нужно чтоб при работе программы её форму не было видно. Так перейдите в вкладке Project>Options>Forms
и там Auto-CreateForms перенесите нашу форму в другой столбик с помощь стрелочки.
Теперь надо сделать так чтобы программу не было видно в Деспетчере задач и когда мы её откроем то она не будет видна пользователю. Тогда мы снова перемещаемся в кладку Project и выбираем Viev Sourse и изменим там всё чтобы получилось так:
Delphi
1
2
3
4
5
6
7
8
var 
WhEvent:THandle; 
Application.Initialize; 
ShowWindow(Application.Handle,SW_Hide); 
Form1:=TForm1.Create(nil); 
Application.Run; 
 
WhEvent:=CreateEvent(nil, true,false, ''et'');
Всё программа не видима.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.08.2012, 19:40
Помогаю со студенческими работами здесь

Программа считающая время работы компьютера
Доброго времени суток. Хочу для себя написать программку, которая считает время работы компьютера. Но если компьютер уходит в режим Lock...

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

Ускорение работы компьютера, а так же работы Интернета (u22)
Когда допустим, включаю компьютер, у меня очень долго стоит заставка "Добро пожаловать" а так же компьютер мой, очень долго приходит в...

Ускорение работы компьютера, а так же работы Интернета
Как ускорить работы компьютера, и чтобы ПРИСУТСТВОВАЛА БЕЗОПАСНОСТЬ моего компьютера? моих данных. Отключил службы: Центр...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru