AutoHotKey를 사용하여 Windows에서 시간 추적 응용 프로그램을 만드는 방법

AutoHotKey를 사용하여 Windows에서 시간 추적 응용 프로그램을 만드는 방법

매일 일찍 일을 시작하면 낮 동안 모든 것을 해결할 수 있습니다. 그런 다음 시계를 확인하면 새벽 3시지만 작업은 아직 완료되지 않았습니다. 그렇다면 시간은 어디로 갔는가?

전용 시간 추적 앱을 사용할 수 있지만 이는 복잡하고 실망스러울 수 있습니다. 대신, 자신만의 간단하고 작은 앱을 만들어 보는 것은 어떨까요? 이 애플리케이션은 하루 동안 사용한 모든 창을 추적할 수 있습니다. 메모장과 같은 기본 워드 프로세서인 AutoHotKey만 있으면 30분 정도 소요됩니다. 시작하자!

AutoHotKey를 사용하여 나만의 Windows 로깅 스크립트 만들기

시작하기 전에 컴퓨터에 AHK를 설치해야 합니다. AHK는 스크립트의 "파서" 역할을 하기 때문입니다. 이는 스크립트를 "실행"할 수 있게 해주는 도구입니다.

참고 : 완료 후 스크립트를 컴파일하여 실제 실행 프로그램으로 전환할 수도 있습니다. 그러나 이는 이 기사의 범위를 벗어납니다.

공식 홈페이지에서 AutoHotKey를 다운로드하여 설치하세요.

AutoHotKey를 사용하여 Windows에서 시간 추적 응용 프로그램을 만드는 방법

새로 만들기 > AutoHotKey 스크립트를 선택하세요.

즐겨 사용하는 파일 관리자를 실행하고 스크립트를 저장하려는 폴더에 액세스하세요. 그런 다음 빈 위치를 마우스 오른쪽 버튼으로 클릭하고 새로 만들기 > AutoHotKey 스크립트를 선택합니다 .

완료되면 실제 스크립트를 작성할 차례입니다.

1. 필요한 변수 파악

원하는 편집기에서 스크립트를 엽니다. Windows와 함께 제공되는 메모장과 같은 간단한 것을 사용할 수 있지만 이 기사에서는 이 튜토리얼에서는 Notepad++를 사용합니다  . Notepad++는 무료이며 이러한 목적에 더 적합하므로 사용해 보시기 바랍니다.

스크립트 형식에 영향을 미칠 수 있는 Word 또는 Google Docs와 같은 응용 프로그램을 사용하면 안 됩니다. 텍스트 또는 코드 편집기를 사용하십시오.

스크립트에는 호환성 및 성능에 대한 몇 가지 기본 권장 정보가 포함됩니다. 그대로 두고 아래 스크립트를 시작하세요.

다음으로 시작:

AppLoggingRate = 10 ; Time interval (in seconds) between active window title captures.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =

창 로깅 시도 사이의 시간을 계산하는 데 사용되는 AppLoggingRate 에 값 "10" 을 할당하여 시작합니다.

AHK의 Sleep 기능과 함께 사용하면 1000은 대략 1초와 같습니다. 따라서 AppLogingRate 를 곱하면 SleepTime 변수가 "10초와 동일"해집니다.

LogPath는 로그를 저장하는 데 사용되는 경로입니다. 이 예 에서는 "스크립트를 실행하는 디렉터리"로 변환되는 %A_ScriptDir% 값을 사용하고 있습니다 . 원하는 경우 다른 폴더에 대한 전체 경로를 사용할 수 있습니다.

마지막으로 LastActiveWindow를 공백으로 설정 하고 나중에 활성 창이 변경되었는지 확인하는 데 사용합니다.

2. 활성 창 모니터링

어떤 창이 활성화되어 있는지 지속적으로 모니터링하고 변경되면 제목과 시간을 기록하고 싶기 때문에 "루프"를 사용해야 합니다.

이름에서 알 수 있듯이 루프는 동일한 기능을 반복하면서 계속 실행됩니다. AHK의 간단한 구문 덕분에 다음 "코드"는 비교적 이해하기 쉽습니다.

Loop
{
    Sleep %SleepTime%
    Msgbox, It Works!
}

단순히 "loop"라는 단어를 입력한 다음 "{" 로 시작 하고 "}"로 끝나는 방식으로 루프를 정의합니다. "{""}" 사이의 줄에 있는 모든 내용은 스크립트를 종료할 때까지 영원히 실행됩니다.

SleepTime 변수 와 동일한 시간 동안 대기( Sleep ) 하여 루프를 시작합니다 . 이 변수를 사용하면 시간 제어가 더 간단해집니다. 스크립트를 직접 편집하는 대신 이 변수를 통해 각 루프가 몇 초 동안 지속되어야 하는지를 "알려줄" 수 있습니다.

마지막으로 메시지 상자를 사용하여 스크립트를 테스트합니다. 저장하고 실행해 보세요(스크립트 파일을 두 번 클릭). "작동합니다!" 라는 메시지 상자가 표시됩니다. (스크립트 작업) 10초 후.

Windows 트레이에서 AHK 아이콘을 마우스 오른쪽 버튼으로 클릭하고 메시지 상자가 충분하면 스크립트를 종료하십시오. 그런 다음 편집기로 돌아가 MsgBox 줄을 다음으로 바꿉니다.

WinGetActiveTitle, ActiveWindow

활성화된 창의 제목을 가져오는 명령입니다. 테스트를 위해 스크립팅하는 동안 예제에서 사용한 추가 "StoreActiveWindow" 줄을 생략합니다 .

AutoHotKey를 사용하여 Windows에서 시간 추적 응용 프로그램을 만드는 방법

활성 창의 제목을 가져와 변수에 저장합니다.

3. 현재 시간과 이름을 가져옵니다.

이제 스크립트 논리의 핵심이 나옵니다. 활성 창의 이름을 이전 창의 이름과 비교하고, 다르면 "뭔가를 하십시오". 모든 것은 다음과 같이 간단합니다.

If ActiveWindow != %LastActiveWindow%
{
}

위의 내용을 고려하여 현재 ActiveWindow가 LastActiveWindow 변수 (처음에는 비어 있음으로 설정됨) 에 저장된 값과 다른지( != ) 확인하십시오. 그렇다면 AHK는 현재 비어 있는 {} 사이의 코드를 실행합니다.

활성 창과 이전 창의 제목을 비교하는 기능 설정

창의 가동 시간을 측정하려면 날짜와 시간을 모두 추적해야 합니다. 이름에 날짜를 사용하여 매일 다른 로그가 유지됩니다. 모든 변경 사항뿐만 아니라 해당 변경 사항이 발생한 시간도 기록됩니다. 이를 수행하려면 다음을 사용하여 LogTimeLogFilename 변수에 다른 시간 형식을 할당하십시오 .

FormatTime, LogTime,, HH:mm:ss
FormatTime, LogFilename,, yyyy-MMM-dd

"If ActiveWindow..." 의 중괄호 사이에 해당 행을 추가하면 AHK가 창 변경을 감지할 때 해당 행을 실행할 수 있습니다.

AutoHotKey를 사용하여 Windows에서 시간 추적 응용 프로그램을 만드는 방법

현재 시간을 가져와서 다른 형식의 두 변수에 할당합니다.

4. 데이터 형식

이제 활성 창의 제목뿐만 아니라 서로 다른 형식의 두 변수로 시간을 캡처합니다. 그러나 작은 문제가 있습니다. 창 제목에 원하지 않는 문자가 포함될 수도 있습니다. 다음과 같이 AHK의 RegEx 지원을 사용하여 영숫자가 아닌 모든 문자를 제거할 수 있습니다.

LogWindow := Regexreplace(ActiveWindow, "[^a-zA-Z0-9]", " ")

이를 염두에 두고 ActiveWindow 변수에서 대괄호 안의 내용과 일치하지 않는 모든 문자를 제거하도록 AHK에 "요청"해 보겠습니다.

  • 소문자
  • 대문자
  • 숫자

그런 다음 결과를 LogWindow 변수에 할당합니다.

AutoHotKey를 사용하여 Windows에서 시간 추적 응용 프로그램을 만드는 방법

RegEx를 사용하여 활성 창 제목 정리

모든 변수가 설정되고 중요한 데이터가 모두 수집되었으므로 이제 로그 파일과 해당 내용의 형식을 지정할 준비가 되었습니다.

LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%

이전에는 현재 날짜를 LogFilename 변수에 할당했습니다. 따라서 첫 번째 줄에는 날짜에 "_AppLog.md"를 추가하여 파일명으로 사용합니다.

AutoHotKey를 사용하여 Windows에서 시간 추적 응용 프로그램을 만드는 방법

로그 파일 이름 설정

두 번째 줄에서는 처음에 로그 파일의 대상으로 정의된 변수 LogPath 와 파일 이름을 결합합니다. 이들 조합은 LogFile 변수에 할당된 로그 파일의 전체 경로 이름입니다 .

"좋은 측정을 위해 빈 줄, 시간 - 창 이름, 두 개의 추가 빈 줄, 구분선 및 또 다른 빈 줄"에 해당하는 값을 FileContent 변수 에 할당해 보겠습니다 .

FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
  • 문자 "n"은 AHK에게 새 줄을 입력하라고 지시합니다( Enter를 한 번 누르는 것과 동일).
  • 크로스다운 호환 뷰어에 표시되면 세 개의 대시가 구분 기호로 나타납니다.
  • "% LogTime%" , "% LogWindow%"는 활성 창의 이름과 감지 시간을 저장하는 변수입니다.

AutoHotKey를 사용하여 Windows에서 시간 추적 응용 프로그램을 만드는 방법

로그 파일의 내용을 결정합니다.

5. 파일 업데이트

파일에 쓰려는 내용과 경로 및 파일 이름을 정의했습니다. 남은 것은 다음과 같은 실제적이고 간단한 텍스트뿐입니다.

FileAppend, %FileContent%, %LogFile%

"FileContent" 변수의 모든 내용을 "LogFile" 파일 에 추가합니다 .

AutoHotKey를 사용하여 Windows에서 시간 추적 응용 프로그램을 만드는 방법

AHK의 Append 기능을 사용하여 로그 파일을 업데이트하거나 처음부터 새로 생성하세요.

"append" 기능은 파일이 존재하는 경우 "FileContent"를 파일에 추가하지만 파일이 존재하지 않는 경우 처음부터 새로 생성합니다.

마지막 조정이 하나 있습니다. LastActiveWindow 변수의 내용을 현재 활성 창으로 바꾸는 것입니다.

AutoHotKey를 사용하여 Windows에서 시간 추적 응용 프로그램을 만드는 방법

향후 테스트를 위해 현재 활성 창의 제목을 LastActiveWindow 변수에 삽입합니다.

이렇게 하려면 스크립트가 다음 창 변경을 감지할 수 있어야 합니다.

LastActiveWindow = %ActiveWindow%

그리고 마지막 추가로 Windows 로거가 준비되었습니다! 스크립트를 저장하고 실행합니다. 그런 다음 마크다운 파일을 확인하면 10초 후에 이 파일이 스크립트 파일 폴더에 나타납니다.

AutoHotKey를 사용하여 Windows에서 시간 추적 응용 프로그램을 만드는 방법

Windows 로그 파일은 스크립트와 동일한 디렉터리에 생성됩니다.

자신의 시간을 통제하세요

텍스트 편집기를 사용하여 로그 파일을 열 수 있습니다. 하지만 마크다운 호환 편집기에서 열면 더 보기 좋습니다. 스크린샷에서 인기 있는 Typora 편집기의 로그를 볼 수 있습니다.

AutoHotKey를 사용하여 Windows에서 시간 추적 응용 프로그램을 만드는 방법

스크립트에 의해 생성된 마크다운 파일이 Typora에 로드됩니다.

가장 많은 시간을 사용하고 있는 앱을 확인하는 쉬운 방법이며, 메모장과 같은 도구만 있으면 사용할 수 있습니다.

"더 특별한" 것을 원한다면 언제든지 로거의 출력을 "스타일링"하여 CSV 파일을 생성할 수 있습니다. FileContent 변수 와 생성된 파일의 확장자를 조정하는 것만큼 쉽습니다 . 그런 다음 이러한 파일을 Excel, Google Calc 또는 타사 시간 추적기와 같은 응용 프로그램으로 가져올 수 있습니다.

완전한 스크립트

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
; Variables
; ---------
AppLoggingRate = 10 ; Time interval (in seconds) between active window title captures.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow = 
; Logic
; -----
Loop
{
	Sleep %SleepTime%
	
	WinGetActiveTitle, ActiveWindow
	StoreActiveWindow = %ActiveWindow%
	
	If ActiveWindow != %LastActiveWindow%
	{
		FormatTime, LogTime,, HH:mm:ss
		FormatTime, LogFilename, , yyyy-MM-dd
		
		LogWindow := Regexreplace(ActiveWindow, "[^a-zA-Z0-9]", " ")
		
		LogFilename = %LogFilename%_AppLog.md
		LogFile = %LogPath%\%LogFilename%
		
		FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
		
		sleep 50
		
		FileAppend, %FileContent%, %LogFile%
		LastActiveWindow = %ActiveWindow%
	}
}
Exit

Windows 10에서 인쇄 문서 기록을 확인하는 방법

Windows 10에서 인쇄 문서 기록을 확인하는 방법

인쇄된 내용을 확인하기 위해 프린터 기록을 확인하는 것은 추적하기가 약간 어렵습니다. 잉크의 양을 보면 얼마나 많은 문서가 인쇄되었는지 알 수 없습니다. Windows 10에서 인쇄 로그를 활성화해야 하며 그 방법은 다음과 같습니다.

상위 10개 컴퓨터 재난과 이에 대처하는 방법

상위 10개 컴퓨터 재난과 이에 대처하는 방법

컴퓨터를 사용한다는 것은 하드 드라이브에 장애가 발생하면 모든 데이터가 손실되는 등의 문제를 처리하는 것을 의미합니다. 다음은 일반적인 컴퓨터 문제 10가지와 해결 방법입니다.

HitmanPro.Kickstart를 사용하여 바이러스에 감염된 컴퓨터를 시작하는 방법

HitmanPro.Kickstart를 사용하여 바이러스에 감염된 컴퓨터를 시작하는 방법

HitmanPro.Kickstart를 사용하면 USB 플래시 드라이브에서 컴퓨터를 부팅하여 랜섬웨어를 제거할 수 있습니다. 일반적인 방법으로는 컴퓨터를 시작할 수 없기 때문에 Surfright는 일반 사용자가 사용하기 쉬운 HitmanPro.Kickstart를 개발했습니다. HitmanPro.Kickstart USB 플래시 드라이브를 사용하여 시스템을 부팅하기만 하면 바로 사용할 수 있습니다.

이 PC에서 네트워크 드라이브 매핑을 제거하고 네트워크 드라이브 연결 끊기 옵션을 제거하는 방법

이 PC에서 네트워크 드라이브 매핑을 제거하고 네트워크 드라이브 연결 끊기 옵션을 제거하는 방법

이 문서는 Windows 10의 이 PC 폴더에서 네트워크 드라이브 연결 및 네트워크 드라이브 연결 끊기 옵션을 제거하는 데 도움이 됩니다.

가상 사설 서버(VPS)란 무엇입니까?

가상 사설 서버(VPS)란 무엇입니까?

VPS(Virtual Private Server)는 여러 운영 체제를 실행하는 물리적 컴퓨터에 설치되어 있어도 전용/개인 서버처럼 느껴지는 가상 서버입니다.

인터넷 속도를 최적화하기 위해 가장 빠른 DNS를 찾는 방법

인터넷 속도를 최적화하기 위해 가장 빠른 DNS를 찾는 방법

인터넷 속도를 최적화하는 데 가장 적합한 DNS 옵션은 무엇입니까? DNS가 경쟁사보다 나은지 어떻게 알 수 있나요? 가장 빠른 DNS를 찾고 인터넷 속도를 최적화하려면 이 문서를 읽어보세요.

파일 서버란 무엇입니까?

파일 서버란 무엇입니까?

파일 서버는 연결된 클라이언트가 서버의 저장 용량에 액세스할 수 있도록 하는 컴퓨터 네트워크의 중앙 서버 인스턴스입니다. 이 용어에는 해당 서버를 배포하는 데 필요한 하드웨어와 소프트웨어가 모두 포함됩니다.

Windows 10 서명의 특별한 점은 무엇입니까?

Windows 10 서명의 특별한 점은 무엇입니까?

대부분의 컴퓨터 사용자는 Windows 10 S, Professional 및 Enterprise 버전에 익숙합니다. 그렇다면 Windows 10 서명이란 무엇입니까? 아래 글을 통해 알아보도록 하겠습니다!

네트워크 TAP란 무엇입니까? 시스템 보안에 어떻게 도움이 됩니까?

네트워크 TAP란 무엇입니까? 시스템 보안에 어떻게 도움이 됩니까?

네트워크 TAP는 네트워크 트래픽을 모니터링하기 위해 네트워크, 특히 연결된 두 네트워크 장치(예: 스위치, 라우터 또는 방화벽) 사이에 배치하는 하드웨어 장치입니다.

FormBook 악성코드란 무엇입니까? 제거하는 방법?

FormBook 악성코드란 무엇입니까? 제거하는 방법?

민감한 데이터를 관리하는 경우 FormBook 악성 코드에 대해 걱정해야 합니다. 정보를 훔치는 이 악성 코드�� 네트워크나 PC에 침투하면 회사에 회복할 수 없는 피해를 입힐 수 있습니다.