´ÙÀ½ ¿¬»ê Áß Çϳª¸¦ ÇÁ·Î¼¼½º¿¡ ¼öÇàÇÕ´Ï´Ù: Á¸ÀçÇϴ°¡; ¿ì¼± ¼øÀ§ º¯°æ; ´Ý±â; ´ÝÈ÷±â¸¦ ±â´Ù¸®±â.
Process, Cmd [, PID-or-Name, Param3]
´ÙÀ½ ´Ü¾î Áß Çϳª:
Exist: ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º°¡ Á¸ÀçÇϸé ErrorLevel¿¡ Process ID (PID)¸¦ ¼³Á¤ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0ÀÌ ¼³Á¤µË´Ï´Ù. PID-or-Name ¸Å°³º¯¼ö°¡ ºñ¾î ÀÖÀ¸¸é, ±× ½ºÅ©¸³Æ®ÀÇ PID°¡ ¿¶÷µË´Ï´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î ½ºÅ©¸³Æ®ÀÇ PID¸¦ ¿¶÷ÇÏ´Â ÇÑÁ٠¥¸® ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù: PID := DllCall("GetCurrentProcessId")
.
Close: ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º°¡ ¼º°øÀûÀ¸·Î Á¾·áÇϸé, ErrorLevel¿¡ ±×ÀÇ ÀÌÀü Process ID (PID)°¡ ¼³Á¤µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é (ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º°¡ ¾ø°Å³ª Á¾·á¿¡ ¹®Á¦°¡ ÀÖ¾úÀ¸¸é), 0ÀÌ ¼³Á¤µË´Ï´Ù. ÇÁ·Î¼¼½º´Â °©ÀÚ±â Á¾·áÇϱ⠶§¹®¿¡ -- ÀÓ°è ÁöÁ¡¿¡¼ ±×ÀÇ ÀÛ¾÷ÀÌ ÀÎÅÍ·´Æ® µÈ´Ù°Å³ª ±×ÀÇ Ã¢¿¡ µ¥ÀÌÅ͸¦ ÀúÀåÇÏÁö ¸øÇÏ°í ÀÒ¾î¹ö¸°´Ù°Å³ªÇÒ °¡´É¼ºÀÌ Àֱ⠶§¹®¿¡ -- ÀÌ ¹æ¹ýÀº ±×ÀÇ Ã¢ Áß¿¡ Çϳª¿¡ WinClose¸¦ »ç¿ëÇؼ ÇÁ·Î¼¼½º¸¦ ´ÝÀ» ¼ö ¾øÀ» °æ¿ì¿¡¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
List: List´Â ¾ÆÁ÷ Áö¿øÇÏÁö ¾ÊÁö¸¸, ¿¹Á¦ ¼½¼Ç¿¡¼ DllCallÀ» ÅëÇÏ¿© ÇÁ·Î¼¼½º ¸ñ·ÏÀ» ¿¶÷ÇÏ´Â ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.
Param3¿¡ óÀ½ ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½ºÀÇ Priority: ¿ì¼± ¼øÀ§¸¦ (À©µµ¿ìÁîÀÇ ÀÛ¾÷ °ü¸®ÀÚ¿¡ º¸¿©ÁÖ´Â ¼øÀ§) º¯°æÇÏ°í ErrorLevel¿¡ ±×ÀÇ Process ID (PID)¸¦ ¼³Á¤ÇÕ´Ï´Ù. PID-or-Name ¸Å°³º¯¼ö°¡ ºñ¾î ÀÖÀ¸¸é, ½ºÅ©¸³Æ®ÀÇ ÀÚ½ÅÀÇ ¿ì¼± ¼øÀ§°¡ º¯°æµË´Ï´Ù. ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º°¡ ¾ø°Å³ª ¿ì¼± ¼øÀ§¸¦ º¯°æÇÏ´Â µ¥ ¹®Á¦°¡ ÀÖ¾úÀ¸¸é, ErrorLevelÀº 0ÀÌ ¼³Á¤µË´Ï´Ù.
Param3Àº ´ÙÀ½ ±âÈ£³ª ´Ü¾îÁß Çϳª°¡ µÇ¾î¾ß ÇÕ´Ï´Ù: L (Low), B (BelowNormal), N (Normal), A (AboveNormal), H (High), R (Realtime). ÁÖÀÇ: ½Ç½Ã°£ ¿ì¼± ¼øÀ§¸¦ °¡Áö°í ½ÇÇàµÇµµ·Ï ¼³°èµÇÁö ¾ÊÀº ÇÁ·Î¼¼½º´Â ½Ã½ºÅÛÀÇ ¾ÈÁ¤¼ºÀ» ÈѼÕÇÒ ¼ö ÀÖ½À´Ï´Ù.
Wait: ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º°¡ ³¡³ª±â¸¦ Param3 ÃʱîÁö ±â´Ù¸³´Ï´Ù (¼Ò¼öÁ¡ Æ÷ÇÔ °¡´É). Param3À» »ý·«Çϸé, ¹«ÇÑÁ¤ ±â´Ù¸³´Ï´Ù. ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º¸¦ ¹ß°ßÇϸé, ErrorLevel¿¡ ±×ÀÇ Process ID (PID)°¡ ¼³Á¤µË´Ï´Ù. ¸í·É¾î°¡ ½Ã°£Á¦ÇÑ¿¡ °É¸®¸é, ErrorLevel¿¡ 0ÀÌ ¼³Á¤µË´Ï´Ù.
WaitClose: ºÎÇÕÇÏ´Â ¸ðµç ÇÁ·Î¼¼½º°¡ ´ÝÈú ¶§±îÁö Param3 ÃʱîÁö ±â´Ù¸³´Ï´Ù (¼Ò¼öÁ¡ Æ÷ÇÔ °¡´É). Param3À» »ý·«Çϸé, ¹«ÇÑÁ¤ ±â´Ù¸³´Ï´Ù. ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º°¡ ¸ðµÎ ´ÝÈ÷¸é, ErrorLevel¿¡ 0ÀÌ ¼³Á¤µË´Ï´Ù. ¸í·É¾î°¡ ½Ã°£ Á¦ÇÑ¿¡ °É¸®¸é, ErrorLevel¿¡ ¿©ÀüÈ÷ Á¸ÀçÇϴ ù ¹ø° ºÎÇÕ Process ID (PID)°¡ ¼³Á¤µË´Ï´Ù.
ÀÌ ¸Å°³º¯¼ö´Â ¾Æ·¡¿¡ ±â¼úÇÏ´Â °Íó·³ ¼ýÀÚ (PID)À̰ųª ÇÁ·Î¼¼½º À̸§ÀÏ ¼ö ÀÖ½À´Ï´Ù. ¶Ç ºñ¿ö µÎ¸é ½ºÅ©¸³Æ® ÀÚüÀÇ ¿ì¼± ¼øÀ§¸¦ º¯°æÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
PID: Process ID´Â ƯÁ¤ÇÑ ÇÁ·Î¼¼½º Çϳª¸¦ À¯ÀÏÇÏ°Ô ½Äº°ÇÏ´Â ¼ýÀÚÀÔ´Ï´Ù (ÀÌ ¼ýÀÚ´Â ±× ÇÁ·Î¼¼½º°¡ »ì¾Æ ÀÖ´Â µ¿¾È¿¡¸¸ À¯È¿ÇÕ´Ï´Ù). »õ·Î ±âµ¿µÈ ÇÁ·Î¼¼½ºÀÇ PID´Â Run ¸í·É¾î¸¦ ÅëÇÏ¿© ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ºñ½ÁÇÏ°Ô, âÀÇ PID´Â WinGetÀ¸·Î ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. Process ¸í·É¾î ÀÚü·Îµµ PID¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù.
Name: ÇÁ·Î¼¼½ºÀÇ À̸§Àº º¸Åë (°æ·Î ¾øÀÌ) ½ÇÇà ÆÄÀÏÀÇ À̸§°ú °°½À´Ï´Ù. ¿¹, notepad.exe ¶Ç´Â winword.exe. À̸§Àº ¿©·¯ ½ÇÇà ÇÁ·Î¼¼½º¿¡ ºÎÇÕÇÒ ¼ö Àֱ⠶§¹®¿¡, ù ¹ø° ÇÁ·Î¼¼½º¿¡¸¸ ÀÛµ¿ÇÕ´Ï´Ù. À̸§Àº ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê½À´Ï´Ù.
ÀÚ¼¼ÇÑ °ÍÀº À§¿¡¼ Cmd¸¦ ÂüÁ¶.
ÀÚ¼¼ÇÑ °ÍÀº À§¿¡¼ Cmd¸¦ ÂüÁ¶.
Wait ±×¸®°í WaitClose¿¡ ´ëÇÏ¿©: ÇÁ·Î¼¼½º´Â 100 ¹Ð¸®Ãʸ¶´Ù Á¡°ËµË´Ï´Ù; Á¶°ÇÀÌ ¸¸Á·µÇ´Â ¼ø°£, ¸í·É¾î´Â ±â´Ù¸®±â¸¦ ¸ØÃä´Ï´Ù. ´Ù¸¥ ¸»·Î, ½Ã°£Á¦ÇÑÀÌ °æ°úÇϱ⸦ ±â´Ù¸®Áö ¾Ê°í, Áï½Ã ErrorLevel¿¡ À§¿¡ ±â¼úÇÑ ´ë·Î ¼³Á¤ÇÑ ´ÙÀ½, °è¼ÓÇؼ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÕ´Ï´Ù. ¶ÇÇÑ, ¸í·É¾î°¡ ´ë±â »óÅ¿¡ ÀÖÀº µ¿¾È¿¡, ÇÖÅ°, ¸ÂÃã ¸Þ´º Ç׸ñ, ¶Ç´Â ŸÀ̸Ӹ¦ ÅëÇÏ¿© »õ ¾²·¹µå¸¦ ±âµ¿ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Run, WinGet, WinClose, WinKill, WinWait, WinWaitClose, IfWinExist
; ¿¹Á¦ #1: Run Notepad.exe, , , NewPID Process, priority, %NewPID%, High MsgBox »õ·Î ±âµ¿µÈ ³ëÆ®ÆеåÀÇ PID´Â %NewPID%ÀÔ´Ï´Ù.
; ¿¹Á¦ #2: Process, wait, Notepad.exe, 5.5 NewPID = %ErrorLevel% ; ErrorLevelÀÌ ÀÚÁÖ ¹Ù²î±â ¶§¹®¿¡ °ªÀ» Áï½Ã ÀúÀåÇÕ´Ï´Ù. if NewPID = 0 { MsgBox ÁöÁ¤ÇÑ ÇÁ·Î¼¼½º°¡ 5.5 ÃÊ À̳»¿¡ ³ªÅ¸³ªÁö ¾Ê¾Ò½À´Ï´Ù. return } ; ±×·¸Áö ¾ÊÀ¸¸é: MsgBox ºÎÇÕÇÏ´Â ÇÁ·Î¼¼½º°¡ ³ªÅ¸³µ½À´Ï´Ù (ÇÁ·Î¼¼½º ID´Â %NewPID%ÀÔ´Ï´Ù). Process, priority, %NewPID%, Low Process, priority, , High ; ½ºÅ©¸³Æ® ÀÚü¿¡ ³ôÀº ¼øÀ§¸¦ ¼³Á¤ÇÕ´Ï´Ù. WinClose Untitled - Notepad Process, WaitClose, %NewPID%, 5 if ErrorLevel ; ÇØ´ç PID°¡ ¿©ÀüÈ÷ Á¸ÀçÇÕ´Ï´Ù. MsgBox ÇÁ·Î¼¼½º°¡ 5 ÃÊ À̳»¿¡ ´ÝÈ÷Áö ¾Ê¾Ò½À´Ï´Ù.
; ¿¹Á¦ #3: È°¼º âÀÇ ÇÁ·Î¼¼½º ¿ì¼±¼øÀ§¸¦ º¯°æÇÒ ÇÖÅ°: #z:: ; Win+Z ÇÖÅ° WinGet, active_pid, PID, A WinGetTitle, active_title, A Gui, 5:Add, Text,, Ãë¼ÒÇÏ·Á¸é ESCAPE¸¦ ´©¸£°Å³ª, ´ÙÀ½ â¿¡ ´ëÇÏ¿© »õ ¿ì¼±¼øÀ§¸¦`n´õºí Ŭ¸¯ÇϽʽÿÀ:`n%active_title% Gui, 5:Add, ListBox, vMyListBox gMyListBox r5, Normal|High|Low|BelowNormal|AboveNormal Gui, 5:Add, Button, default, OK Gui, 5:Show,, Set Priority return 5GuiEscape: 5GuiClose: Gui, Destroy return MyListBox: if A_GuiEvent <> DoubleClick return ; ±×·¸Áö ¾ÊÀ¸¸é ´ÙÀ½ ¶óº§·Î °©´Ï´Ù: 5ButtonOK: GuiControlGet, MyListBox Gui, Destroy Process, Priority, %active_pid%, %MyListBox% if ErrorLevel MsgBox ¼º°ø: "%MyListBox%"¿¡ ¿ì¼±¼øÀ§°¡¹Ù²î¾ú½À´Ï´Ù. else MsgBox ¿¡·¯: "%MyListBox%"¿¡ ¿ì¼± ¼øÀ§¸¦ ¹Ù²ÙÁö ¸øÇß½À´Ï´Ù. return
; ¿¹Á¦ #4: DllCallÀ» ÅëÇÏ¿© ½ÇÇà ÇÁ·Î¼¼½º ¸ñ·ÏÀ» ¿¶÷ÇÏ°í ±× ¸ñ·ÏÀ» MsgBox¿¡ º¸¿©ÁÝ´Ï´Ù. d := " | " ; ¹®ÀÚ¿ °¡¸§ÀÚ s := 4096 ; ¹öÆÛ¿Í ¹è¿ÀÇ Å©±â (4 KB) Process, Exist ; ErrorLevel¿¡ ½ÇÇàÁßÀÎ ½ºÅ©¸³Æ®ÀÇ PID¸¦ ¼³Á¤ÇÕ´Ï´Ù ; PROCESS_QUERY_INFORMATION (0x0400)·Î ÀÌ ½ºÅ©¸³Æ®ÀÇ ÇÚµéÀ» ¾ò½À´Ï´Ù h := DllCall("OpenProcess", "UInt", 0x0400, "Int", false, "UInt", ErrorLevel, "Ptr") ; ´ÙÀ½ ÇÁ·Î¼¼½º·Î Á¶Àý°¡´ÉÇÑ Á¢±Ù ÅäÅ«À» ¿±´Ï´Ù (TOKEN_ADJUST_PRIVILEGES = 32) DllCall("Advapi32.dll\OpenProcessToken", "Ptr", h, "UInt", 32, "PtrP", t) VarSetCapacity(ti, 16, 0) ; Ư±Ç ±¸Á¶Ã¼ NumPut(1, ti, 0, "UInt") ; Ư±Ç ¹è¿¿¡ ÀÖ´Â ÇÑ ¿£Æ®¸®... ; µð¹ö±× Ư±ÇÀÇ Áö¿ªÀûÀ¸·Î À¯ÀÏÇÑ ½Äº°ÀÚ¸¦ ¿¶÷ÇÕ´Ï´Ù: DllCall("Advapi32.dll\LookupPrivilegeValue", "Ptr", 0, "Str", "SeDebugPrivilege", "Int64P", luid) NumPut(luid, ti, 4, "Int64") NumPut(2, ti, 12, "UInt") ; ´ÙÀ½ Ư±ÇÀ» È°¼º ÈÇÕ´Ï´Ù: SE_PRIVILEGE_ENABLED = 2 ; ÀÌ ÇÁ·Î¼¼½ºÀÇ Æ¯±ÇÀ» »õ Á¢±Ù ÅäÅ«À¸·Î ¾÷µ¥ÀÌÆ®ÇÕ´Ï´Ù: r := DllCall("Advapi32.dll\AdjustTokenPrivileges", "Ptr", t, "Int", false, "Ptr", &ti, "UInt", 0, "Ptr", 0, "Ptr", 0) DllCall("CloseHandle", "Ptr", t) ; ÀÌ Á¢±Ù ÅäÅ« ÇÚµéÀ» ´Ý¾Æ¼ ¸Þ¸ð¸®¸¦ Àý¾àÇÕ´Ï´Ù DllCall("CloseHandle", "Ptr", h) ; ÀÌ ÇÁ·Î¼¼½º ÇÚµéÀ» ´Ý¾Æ¼ ¸Þ¸ð¸®¸¦ Àý¾àÇÕ´Ï´Ù hModule := DllCall("LoadLibrary", "Str", "Psapi.dll") ; ¶óÀ̺귯¸®¸¦ ¹Ì¸® ÀûÀçÇØ ¼öÇ༺´ÉÀ» ³ôÀÌ´Ï´Ù. s := VarSetCapacity(a, s) ; ÇÁ·Î¼¼½º ½Äº°ÀÚÀÇ ¸ñ·ÏÀ» ¹ÞÀ» ¹è¿: c := 0 ; ÇÁ·Î¼¼½º ½Äº°ÀÚ¸¦ À§ÇÑ Ä«¿îÅÍ DllCall("Psapi.dll\EnumProcesses", "Ptr", &a, "UInt", s, "UIntP", r) Loop, % r // 4 ; ½Äº°ÀÚ¸¦ À§ÇÏ¿© ¹è¿À» DWORD (32 ºñÆ®)·Î ºÐÇØÇÕ´Ï´Ù: { id := NumGet(a, A_Index * 4, "UInt") ; ´ÙÀ½À¸·Î ÇÁ·Î¼¼½º¸¦ ¿±´Ï´Ù: PROCESS_VM_READ (0x0010) | PROCESS_QUERY_INFORMATION (0x0400) h := DllCall("OpenProcess", "UInt", 0x0010 | 0x0400, "Int", false, "UInt", id, "Ptr") if !h continue VarSetCapacity(n, s, 0) ; ¸ðµâÀÇ ±âº» À̸§À» ¹ÞÀ» ¹öÆÛ: e := DllCall("Psapi.dll\GetModuleBaseName", "Ptr", h, "Ptr", 0, "Str", n, "UInt", A_IsUnicode ? s//2 : s) if !e ; 32-ºñÆ® ¸ðµåÀÏ ¶§ 64-ºñÆ® ÇÁ·Î¼¼½º¸¦ À§ÇÑ ´ëºñ ¹æ¹ý: if e := DllCall("Psapi.dll\GetProcessImageFileName", "Ptr", h, "Str", n, "UInt", A_IsUnicode ? s//2 : s) SplitPath n, n DllCall("CloseHandle", "Ptr", h) ; ÇÁ·Î¼¼½º ÇÚµéÀ» ´Ý¾Æ ¸Þ¸ð¸®¸¦ Àý¾àÇÕ´Ï´Ù if (n && e) ; À̹ÌÁö°¡ ³ÎÀÌ ¾Æ´Ï¸é ¸ñ·Ï¿¡ Ãß°¡ÇÕ´Ï´Ù: l .= n . d, c++ } DllCall("FreeLibrary", "Ptr", hModule) ; ¶óÀ̺귯¸®¸¦ ³»·Á¼ ¸Þ¸ð¸®¸¦ Ç®¾îÁÝ´Ï´Ù ;Sort, l, C ; ÀÌ ÁÙÀ» ÁÖ¼® ÇØÁ¦ÇÏ¸é ¸®½ºÆ®¸¦ ¾ËÆĺª ¼ø¼·Î ¸®½ºÆ®¸¦ Á¤·ÄÇÒ ¼ö ÀÖ½À´Ï´Ù MsgBox, 0, %c% Processes, %l%
; ¿¹Á¦ #5: COMÀ» ÅëÇÏ¿© ÇöÀç ½ÇÇà ÁßÀÎ ÇÁ·Î¼¼½º ¸ñ·ÏÀ» ¿¶÷ÇÕ´Ï´Ù. Gui, Add, ListView, x2 y0 w400 h500, Process Name|Command Line for process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process") LV_Add("", process.Name, process.CommandLine) Gui, Show,, Process List ; Win32_Process: http://msdn.microsoft.com/en-us/library/aa394372.aspx