๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ•ญ์ƒ์œ„, ๋ฉ”๋ชจ์žฅ ์œ ํ‹ธ

์œˆ๋„์šฐ ์ž์ฒด์—์„œ ๋ฉ”๋ชจ์žฅ ํ•ญ์ƒ ์œ„ ๊ตฌํ˜„ (๋‹ค์šด๋กœ๋“œ, usb ๋ณต์‚ฌ ๋“ฑ์ด ํ•„์š”์—†์–ด ๋ณด์•ˆ์ด ์ค‘์š”ํ•œ ํšŒ์‚ฌ์—์„œ๋„ ํ™œ์šฉ ๊ฐ€๋Šฅ)-์—‘์…€ ๋˜๋Š” ํŒŒ์›Œ์…€(PowerShell) ํ™œ์šฉ

728x90
๋ฐ˜์‘ํ˜•
 ๋งŒ๋“ค๊ฒŒ ๋œ ๋™๊ธฐ – ์–ด๋–ค ๋ถ„์˜ ์š”์ฒญ์ด ์žˆ์—ˆ์Œ โ™ง

๋ณด์•ˆ์ด ์ค‘์š”ํ•œ ํšŒ์‚ฌ์˜ ๊ฒฝ์šฐ ํšŒ์‚ฌ ์ปด์—์„œ๋Š” ์ธํ„ฐ๋„ท ์ ‘์†์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜๊ฑฐ๋‚˜, ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๋˜์ง€ ์•Š๊ฑฐ๋‚˜, USB๋ฅผ ์ด์šฉํ•œ ๋ณต์‚ฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ ‘๋ฉ”๋ชจ์žฅํ•ญ์ƒ์œ„’ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์–ด ๋ถˆํŽธํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ง€์š”.

์–ด๋–ค ๋ถ„์˜ ์š”์ฒญ์œผ๋กœ ์ด๋Ÿฐ ๊ฒฝ์šฐ ๋ฉ”๋ชจ์žฅ์„ ํ•ญ์ƒ ์œ„๋กœ ๊ณ ์ •์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์—†๋ƒ๊ณ  ํ•˜์…”์„œ ๊ตฌ๊ธ€๋งํ•˜์—ฌ ๋งŒ๋“ค์–ด๋ณธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ตฌํ˜„ ๋ฐฉ๋ฒ•์€ 2๊ฐ€์ง€์ด๋ฉฐ, ๋‘˜ ์ค‘ ํŽธํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

์ฐธ๊ณ  - ์ด์ „์— ๋งŒ๋“ค์—ˆ๋˜ ๊ฒƒ โ™ง  

1. (์œ ํ‹ธ) ๋ฉ”๋ชจ์žฅ ํ•ญ์ƒ ์œ„๋กœ ๊ณ ์ •์‹œํ‚ค๋Š” ํ”„๋กœ๊ทธ๋žจ (๋ฉ”๋ชจ์žฅํ•ญ์ƒ์œ„.exe) - ๋ฉ”๋ชจ์žฅ์„ ํ•ญ์ƒ ์œ„ ์†์„ฑ์œผ๋กœ ์‹คํ–‰์‹œํ‚ค๋Š” ํ”„๋กœ๊ทธ๋žจ(๋นˆ ๋ฉ”๋ชจ์žฅ์ด ๋‚˜์˜ด)

2. ๋ฉ”๋ชจ์žฅ ํ•ญ์ƒ ์œ„๋กœ ๊ณ ์ •์‹œํ‚ค๋Š” ํ”„๋กœ๊ทธ๋žจ V2 (์ž‘์—…๋ฉ”๋ชจ์žฅํ•ญ์ƒ์œ„.exe) - ์ž‘์—….txt ํŒŒ์ผ์„ ํ•ญ์ƒ ์œ„ ์†์„ฑ์œผ๋กœ ์‹คํ–‰์‹œํ‚ค๋Š” ํ”„๋กœ๊ทธ๋žจ

 

 

 

728x90
๋ฐฉ๋ฒ•1 – ์—‘์…€ vba ํ™œ์šฉ โ™ง

๊ธฐ์—…์ด๋ผ๋ฉด ๋Œ€๋ถ€๋ถ„ ๊ธฐ๋ณธ์œผ๋กœ ์—‘์…€์ด ๊น”๋ ค์žˆ๊ฒ ์ฃ ? ์—‘์…€์˜ VBA๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

1. ์—‘์…€์„ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค.

2. ์šฐ์„  ๋ฉ”๋‰ด ์ค‘์— ๊ฐœ๋ฐœ ๋„๊ตฌ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์—†์œผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์—…์„ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

  2-1. (ํŒŒ์ผ) ํด๋ฆญ

  2-2. (์˜ต์…˜) ํด๋ฆญ

  2-3. Excel ์˜ต์…˜ ์ฐฝ์—์„œ (๋ฆฌ๋ณธ ์‚ฌ์šฉ์ž ์ง€์ •) ํด๋ฆญ ํ›„ (๊ฐœ๋ฐœ ๋„๊ตฌ)์— ์ฒดํฌ ํ‘œ์‹œ๋ฅผ ํ•œ ํ›„ ํ™•์ธ์„ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.

 

3. (๊ฐœ๋ฐœ ๋„๊ตฌ)-(Visual Basic) ์„ ๋ˆ„๋ฅด๊ฑฐ๋‚˜, <Alt> + <F11> ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ VBA ํŽธ์ง‘ ์ฐฝ์„ ์—ด์–ด์ค๋‹ˆ๋‹ค.

 

4. ํ”„๋กœ์ ํŠธ ์ฐฝ์˜ ํฐ ๋ถ€๋ถ„์—์„œ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ์„ ๋ˆŒ๋Ÿฌ ๋‹จ์ถ•๋ฉ”๋‰ด์—์„œ (์‚ฝ์ž…)-(๋ชจ๋“ˆ)์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

5. ์ƒˆ๋กœ ์ƒ์„ฑ๋œ Module1์˜ ํŽธ์ง‘์ฐฝ์— ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

 

Public Declare PtrSafe Function SetWindowPos Lib "user32" ( _
    ByVal hwnd As LongPtr, ByVal hwndInsertAfter As LongPtr, ByVal x As Long, _
    ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) _
As Long

Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
    ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
    ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) _
As Long

Public Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)


Public Const SWP_NOSIZE = &H1
Public Const SWP_NOMOVE = &H2
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2

Sub notepadAlwaysOnTop()
    
    Dim progname As String
    progname = "Notepad"
    
    Dim proc As Long
    proc = Shell(progname, vbNormalFocus)
    
    Sleep (200)
    
    Dim hwnd As Long
    hwnd = FindWindow(progname, vbNullString)
    
        
    Call SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
End Sub

 

6. ์ €์žฅ์„ ๋ˆŒ๋Ÿฌ์ค€ ํ›„ VBA ํŽธ์ง‘์ฐฝ์„ ๋‹ซ์•„์ค๋‹ˆ๋‹ค.

 

7. (๊ฐœ๋ฐœ ๋„๊ตฌ)-(์‚ฝ์ž…)์„ ๋ˆŒ๋Ÿฌ ์–‘์‹ ์ปจํŠธ๋กค ์ฒซ๋ฒˆ์งธ ๋ฒ„ํŠผ์„ ์„ ํƒ ํ›„ ์‹œํŠธ์— ๋“œ๋ž˜๊ทธํ•˜์—ฌ ๋ฒ„ํŠผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

 

8. ๋ฐ”๋กœ ์ด์–ด ๋‚˜์˜ค๋Š” ๋งคํฌ๋กœ ์ง€์ • ์ฐฝ์—์„œ notepadAlwaysOnTop ๋ถ€๋ถ„์„ ํด๋ฆญํ•œ ํ›„  ํ™•์ธ์„ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

9. ์ด์ œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ•ญ์ƒ์œ„ ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ์žฅ์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค.

 

(์ฐธ๊ณ 1) '๋‹จ์ถ” 1'์ด๋ผ๋Š” ๋ถ€๋ถ„์˜ ๊ธ€์ž๋ฅผ ๋ฐ”๊พธ๋ ค๋ฉด ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ํด๋ฆญ ํ›„ ํ…์ŠคํŠธ ํŽธ์ง‘์„ ๋ˆŒ๋Ÿฌ ์ˆ˜์ •ํ•˜๋ฉด ๋จ.

(์ฐธ๊ณ 2) ์œ„ ์—‘์…€ ํŒŒ์ผ์„ ์ €์žฅํ•  ๋•Œ์—๋Š” ํ™•์žฅ์ž๊ฐ€ xlsx๊ฐ€ ์•„๋‹Œ xlsm ์œผ๋กœ ์ €์žฅํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•
๋ฐฉ๋ฒ•2 – PowerShell ์ด์šฉ (์—‘์…€์ด ์—†๊ฑฐ๋‚˜, ์—‘์…€์„ ์—ฌ๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ๋Š๋ฆด ๊ฒฝ์šฐ) โ™ง

PowerShell์€ ์œˆ๋„์šฐ์— ๊ธฐ๋ณธ ๋‚ด์žฅ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ, ๊ธฐํƒ€ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋”ฐ๋กœ ๊ฒ€์ƒ‰์„ ํ•ด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

1. ๋ฉ”๋ชจ์žฅ์„ ์—ด์–ด ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

 

# ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€ ํ”„๋กœ๊ทธ๋žจ
# $exe = "C:\Program Files\Google\Chrome\Application\chrome.exe"
$exe = "notepad"

function Set-TopMost($handle) {
  $FnDef = '
    [DllImport("user32.dll")]
    public static extern bool SetWindowPos(int hWnd, int hAfter, int x, int y, int cx, int cy, uint Flags);
  ';
  $user32 = Add-Type -MemberDefinition $FnDef -Name 'User32' -Namespace 'Win32' -PassThru
  $user32::SetWindowPos($handle, -1, 0, 0, 0, 0, 3)
}

$pname = [System.IO.Path]::GetFileNameWithoutExtension($exe)

$p = (Get-Process $pname -ErrorAction "SilentlyContinue") | ? { $_.MainWindowHandle -ne 0 }
if ($p -eq $null) {
  Write-Host "starting: $exe"
  & $exe
  Write-Host "Waiting for process '$pname'"
  while ($p -eq $null) {
    sleep -Milliseconds 100
    $p = (Get-Process $pname -ErrorAction "SilentlyContinue") | ? { $_.MainWindowHandle -ne 0 }
  }
}

$p.MainWindowHandle
Set-TopMost $p.MainWindowHandle

 

2. ์ €์žฅ์„ ํ•œ ํ›„, ํŒŒ์ผ ์ด๋ฆ„์€ ์ƒ๊ด€์—†๊ณ  ํŒŒ์ผ์˜ ํ™•์žฅ์ž๋ฅผ txt์—์„œ ps1๋กœ ๋ฐ”๊พธ์–ด ์ค๋‹ˆ๋‹ค.

 

3. ๊ทธ๋Ÿผ ์œ„์™€ ๊ฐ™์€ ์•„์ด์ฝ˜์ด ๋‚˜์˜ค๋Š”๋ฐ, ์•„์ด์ฝ˜ ์œ„์—์„œ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ์„ ๋ˆ„๋ฅด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ‘PowerShell์—์„œ ์‹คํ–‰’์ด๋ผ๋Š” ๊ฒƒ์ด ๋‚˜์˜ค๋ฉฐ, ์ด๊ฒƒ์„ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

4. ๊ทธ๋Ÿผ ํŒŒ๋ž€ ์ฐฝ์ด ์ž ์‹œ ๋‚˜์™”๋‹ค๊ฐ€ ์—†์–ด์ง€๋ฉฐ, ํ•ญ์ƒ์œ„ ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ์žฅ์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค.

(์ฐธ๊ณ ) ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ์„ ๋ˆŒ๋Ÿฌ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฒƒ์ด ๋ถˆํŽธํ•  ๊ฒฝ์šฐ, ์œˆ๋„์šฐ ์„ค์ •์„ ๋ฐ”๊พธ์–ด ๋”๋ธ”ํด๋ฆญ์„ ํ•ด์„œ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๋”ฐ๋กœ ๋‹ค๋ฅธ ๋ถ„์ด ์ž‘์„ฑํ•œ ๊ธ€์„ ๋งํฌํ•ด ๋†“์„ํ…Œ๋‹ˆ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

https://honsal.blogspot.com/2021/01/welcome-file_24.html

 

PowerShell Script(.ps1) ํŒŒ์ผ์ด ๋ฉ”๋ชจ์žฅ ๋Œ€์‹  ํŒŒ์›Œ์‰˜์—์„œ ์—ด๋ฆฌ๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•

IT ๊ด€๋ จ ์ž์ž˜ํ•œ ํŒ, ์•ฝ๊ฐ„์˜ ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด ์˜์ƒ, ๊ทธ๋ฆฌ๊ณ  ์ผ์ƒ์ด ์ ํžŒ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.

honsal.blogspot.com

 


<๋ฐฉ๋ฒ•1>์€ ์‹คํ–‰ ์†๋„๊ฐ€ ๋Š๋ฆฌ๊ธด ํ•˜์ง€๋งŒ, ์ฝ”๋“œ ๋‚ด์šฉ์„ ์กฐ๊ธˆ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ณ ,

<๋ฐฉ๋ฒ•2>๋Š” ์ดํ•ดํ•˜๊ธฐ ์กฐ๊ธˆ ์–ด๋ ต์ง€๋งŒ, ์‹คํ–‰ ์†๋„๋Š” ๋น ๋ฅด๋‹ˆ ๋‘˜ ์ค‘์— ํ•˜๋‚˜๋ฅผ ๊ณจ๋ผ ํ™œ์šฉํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์œ„์˜ ๋ฐฉ๋ฒ•์„ ์ž˜ ํ™œ์šฉํ•˜์‹ ๋‹ค๋ฉด ๋ณด์•ˆ์œผ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์„ค์น˜ํ•˜๊ธฐ ์–ด๋ ค์šด ์ง์žฅ ์ปด์—์„œ ๊ฐ์ข… ํ”„๋กœ๊ทธ๋žจ ์ฐฝ์„ ์—ฌ๋Ÿฌ๊ฐ€์ง€๋กœ ์ œ์–ดํ•˜์—ฌ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

์œ„์—์„œ ๋งŒ๋“  ํŒŒ์ผ๋„ ๊ฐ™์ด ์˜ฌ๋ ค๋‘˜ํ…Œ๋‹ˆ ํ•„์š”ํ•˜์‹  ๋ถ„์€ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ํ•ญ์ƒ์œ„์—‘์…€.xlsm
0.02MB

 

ํ•ญ์ƒ์œ„ํŒŒ์›Œ์…€์Šคํฌ๋ฆฝํŠธ.ps1
0.00MB

 

 


ํ•ญ์ƒ์œ„ ๊ด€๋ จ ์—…๊ทธ๋ ˆ์ด๋“œ ๋œ ํ”„๋กœ๋žจ๋“ค

ํ•ญ์ƒ ์œ„ (AlwaysOnTop, ๋ฉ”๋ชจ์žฅ, ๊ธฐํƒ€ ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์ด๋“ ...) ์ข…ํ•ฉํŒ

 

728x90
๋ฐ˜์‘ํ˜•