jim19 发表于 2023-7-16 23:36

自控力极差的人搞得一个小实验

我自制力极差, 经常一走神看个视频半天就过去了, 浪费了很多时间,写了个监视一下写代码的时候, 看看我一天中在电脑上行的时间都是怎么分配的, 冒号前面是打开的程序, 后面是秒, 做个小统计, 写的简单, 仅供大家娱乐.

软件以及代码下载:

function htGetWindowProcessId(Handle: THandle): THandle; //获取指定窗口所在的进程ID.
var
PID: dword;
begin
if Handle <> 0 then
begin
    GetWindowThreadProcessID(Handle, @PID);
    Result := PID;
end
else Result := 0;
end;

function htGetWindowProcessPath(Handle: THandle): string; //获取指定窗口所在的进程的exe文件全路径.
var
Hand: THandle;
ModName: array of Char;
hMod: HModule;
n, ProcessID: DWORD;
begin
Result := '';
ProcessID := htGetWindowProcessId(Handle);
Hand := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, ProcessID);
if Hand > 0 then
try
    ENumProcessModules(Hand, @hMod, Sizeof(hMod), n);
    if GetModuleFileNameEx(Hand, hMod, ModName, Sizeof(ModName)) > 0 then
      Result := ModName; //得到路径和文见名
except

end;
end;

procedure TForm1.tmr1Timer(Sender: TObject);
var
s: string;
i: integer;
it: IStrIntMapIterator;
begin
mmo1.Clear;
s := htGetWindowProcessPath(GetForegroundWindow());
caption := s;
st.Add(s);
//s := s + ',' + datetimetostr(now);
if timemap.Count(s) = 0 then
    timemap.Items := 0
else
    timemap.Items := timemap.Items + 1;

for i := 0 to st.Count - 1 do
begin
    it := timemap.Find(st.Strings);
    mmo1.Lines.Add(it.Key + ':' + inttostr(it.GetValue));
end;
end;


tanghengvip 发表于 2023-7-17 10:34

测了一天,发现工作软件在前台时间最长,直接卸载了

Wapj_Wolf 发表于 2023-7-17 10:39

佩服楼主的自虐精神,偶不会向你学习的.

jim19 发表于 2023-7-17 10:35

tanghengvip 发表于 2023-7-17 10:34
测了一天,发现工作软件在前台时间最长,直接卸载了

万万没想;www

dhb520 发表于 2023-7-17 10:42

佩服佩服

henry59 发表于 2023-7-17 10:42

tanghengvip 发表于 2023-7-17 10:34
测了一天,发现工作软件在前台时间最长,直接卸载了

你为什么这么优秀。

uilte 发表于 2023-7-17 10:47

用Delphi写,这个可以有:lol

tangchuanhe 发表于 2023-7-17 10:50

给优秀的大佬跪了

NMCchan 发表于 2023-7-17 10:58

自控力差→工作狂)

shy20070509 发表于 2023-7-17 11:01

优秀的人永远是优秀的!
页: [1] 2 3 4
查看完整版本: 自控力极差的人搞得一个小实验