自控力极差的人搞得一个小实验
我自制力极差, 经常一走神看个视频半天就过去了, 浪费了很多时间,写了个监视一下写代码的时候, 看看我一天中在电脑上行的时间都是怎么分配的, 冒号前面是打开的程序, 后面是秒, 做个小统计, 写的简单, 仅供大家娱乐.软件以及代码下载:
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
测了一天,发现工作软件在前台时间最长,直接卸载了
万万没想;www 佩服佩服 tanghengvip 发表于 2023-7-17 10:34
测了一天,发现工作软件在前台时间最长,直接卸载了
你为什么这么优秀。 用Delphi写,这个可以有:lol 给优秀的大佬跪了 自控力差→工作狂) 优秀的人永远是优秀的!