마우스를 자동으로 이동해주는 것도 있지만
아래처럼 작성하면 돈을 안들여도 된다
윈도우에서 프로그램을 설치하지 않고도 키보드의 넘버 락 버튼을 1분마다 자동으로 누르는 스크립트를 작성하려면, 파워셸 스크립트를 사용할 수 있습니다. 파워셸은 윈도우에 기본적으로 설치되어 있는 강력한 스크립팅 언어입니다.
다음은 파워셸을 사용하여 넘버 락 버튼을 1분마다 누르는 스크립트를 작성하는 방법입니다:
### 파워셸 스크립트 (PowerShell Script)
1. **스크립트 작성**: 메모장을 열고 아래의 파워셸 스크립트를 입력합니다.
```powershell
Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;
public class Keyboard {
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern short GetKeyState(int keyCode);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
private const int KEYEVENTF_EXTENDEDKEY = 0x1;
private const int KEYEVENTF_KEYUP = 0x2;
private const int VK_NUMLOCK = 0x90;
public static void ToggleNumLock() {
bool numLockSet = (GetKeyState(VK_NUMLOCK) & 0x1) != 0;
keybd_event(VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0);
keybd_event(VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
}
"@
while ($true) {
[Keyboard]::ToggleNumLock()
Start-Sleep -Seconds 60
}
```
위에 while 부분 수정-- 아침 8시부터 5시 반까지만 실행 되게
while ($true) {
$currentHour = (Get-Date).Hour
$currentMinute = (Get-Date).Minute
if (($currentHour -gt 7 -or ($currentHour -eq 7 -and $currentMinute -ge 0)) -and ($currentHour -lt 17 -or ($currentHour -eq 17 -and $currentMinute -le 30))) {
[Keyboard]::ToggleNumLock()
}
Start-Sleep -Seconds 60
}
2. **파일 저장**: 위 스크립트를 메모장에 입력한 후 `ToggleNumLock.ps1` 파일로 저장합니다.
3. **스크립트 실행**: 저장한 파워셸 스크립트를 실행합니다. 다음과 같은 명령어를 파워셸 창에 입력하여 실행합니다.
```powershell
powershell -ExecutionPolicy Bypass -File "C:\path\to\your\ToggleNumLock.ps1"
```
여기서 `"C:\path\to\your\ToggleNumLock.ps1"`은 저장한 스크립트 파일의 경로로 대체해야 합니다.
이 스크립트는 1분마다 넘버 락 키를 누르게 됩니다. `Start-Sleep -Seconds 60` 명령어로 1분(60초)마다 반복되도록 설정되어 있습니다.
### 참고 사항
- 파워셸 스크립트 실행 정책 때문에 스크립트 실행이 제한될 수 있습니다. 이 경우 `-ExecutionPolicy Bypass` 옵션을 사용하여 실행 정책을 일시적으로 무시할 수 있습니다.
- 이 스크립트는 단순히 넘버 락 상태를 토글하므로, 넘버 락이 꺼져 있을 때 스크립트를 실행하면 켜지고, 켜져 있을 때 실행하면 꺼지게 됩니다. 매번 상태가 변경된다는 점을 염두에 두세요.
이 방법으로 윈도우에서 별도의 프로그램 설치 없이 넘버 락 버튼을 자동으로 누르는 기능을 구현할 수 있습니다.
파워셸 스크립트를 쉽게 실행할 수 있도록 바로가기 링크를 만드는 방법은 다음과 같습니다:
### 1. 파워셸 스크립트 작성 및 저장
먼저, 이전에 작성한 파워셸 스크립트를 메모장에 입력하고 `ToggleNumLock.ps1` 파일로 저장합니다. 예를 들어, `C:\Scripts\ToggleNumLock.ps1`에 저장한다고 가정합니다.
### 2. 바로가기 링크 생성
이제 이 스크립트를 쉽게 실행할 수 있도록 바탕화면에 바로가기를 만듭니다.
1. **바로가기 만들기**:
- 바탕화면에서 마우스 오른쪽 버튼을 클릭하고 "새로 만들기" > "바로 가기"를 선택합니다.
- 바로가기 만들기 창이 열리면, 다음 명령어를 입력합니다:
```plaintext
powershell -ExecutionPolicy Bypass -File "C:\Scripts\ToggleNumLock.ps1"
```
여기서 `"C:\Scripts\ToggleNumLock.ps1"`은 스크립트 파일의 경로입니다.
2. **바로가기 이름 지정**:
- 바로가기 이름을 지정합니다. 예를 들어, "Toggle Num Lock"이라고 할 수 있습니다.
- "마침" 버튼을 클릭하여 바로가기를 만듭니다.
### 3. 바로가기 설정 변경 (선택 사항)
바로가기를 만들었으면, 스크립트가 관리자 권한으로 실행되도록 설정할 수 있습니다. 이는 키보드 이벤트가 제대로 작동하도록 보장합니다.
1. **바로가기 속성 열기**:
- 바탕화면에 생성된 바로가기를 마우스 오른쪽 버튼으로 클릭하고 "속성"을 선택합니다.
2. **관리자 권한으로 실행 설정**:
- "바로 가기" 탭에서 "고급" 버튼을 클릭합니다.
- "관리자 권한으로 실행" 옵션을 체크하고 "확인"을 클릭합니다.
3. **적용 및 확인**:
- "적용" 및 "확인"을 클릭하여 변경 사항을 저장합니다.
이제 바탕화면에 생성된 바로가기를 더블 클릭하면 파워셸 스크립트가 실행되어 1분마다 넘버 락 키를 자동으로 누르게 됩니다.
#같은 내용 다른 방식
# 넘버락 상태 확인 및 켜기 함수
function Set-NumLockState {
$keybd_event = Add-Type -MemberDefinition @"
[DllImport("user32.dll")]
public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
"@ -Name "Win32KeyboardInput" -Namespace Win32Functions -PassThru
$keybd_event::keybd_event(0x90, 0, 0, [UIntPtr]::Zero)
}
# 60초마다 넘버락 키 누르기
while ($true) {
Set-NumLockState
Start-Sleep -Seconds 60
}
```powershell
# 넘버락 키를 눌러주는 함수
function Press-NumLock {
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.SendKeys]::SendWait("{NUMLOCK}")
}
# 1시간마다 넘버락 키를 누르는 루프
while ($true) {
Press-NumLock
Start-Sleep -Seconds 3600 # 1시간 대기
}
```
위 코드를 파워셸에서 실행하면 1시간마다 넘버락 키가 눌러지게 됩니다. 스크립트를 중지하려면 파워셸 창을 닫으면 됩니다.
이 스크립트를 실행하기 전에 스크립트 실행 정책이 허용되어 있는지 확인하세요. 필요하다면 다음 명령어로 실행 정책을 변경할 수 있습니다:
```powershell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
```
' 잡다구리' 카테고리의 다른 글
양상추씨 - 다이소 (0) | 2024.07.11 |
---|---|
스미싱 번호 00612610974784 (0) | 2024.07.05 |
엔캐리 트레이드 - 용어 정리 (0) | 2024.07.03 |
화상 자가 치료 (화상 치료 때문에 꼭 병원 가야하는거 아닙니다) (0) | 2024.07.01 |
티몬 캐시 할인 - 5일 남았습니다 (0) | 2024.06.25 |
댓글