예전 프로그램 중 하나가 특정 컴퓨터에서 오류를 발생시키며 종료가 안된다.
왜 그런가... 찾아보니, "sendkeys" 를 이용해서 "F4" 키를 보내 다른 프로그램을 종료를 시켜야 하는데, 이게 권한 문제로 막혀버리는 문제가 있었다.
즉, '사용자 계정 콘트롤(UAC)' 문제.
이럴경우 "관리자권한" 으로 프로그램을 실행시키면 대개는 해결이 된다.
문제는... 이 프로그램은 "관리자권한" 으로 실행 시켜도 소용이 없다는것...
더 큰 문제는 다른 컴퓨터는 되는데, 단 1대의 컴퓨터에서만 안된다는것...
물론 '사용자 계정 콘트롤(UAC)'을 사용하지 않게 하면 간단히 해결되겠으나, 그럴수도 없다.
결국 꼼수.
문제가 있는 소스에다 아래 함수를 추가 한다.
Public Sub Sendkeys(text$, Optional wait As Boolean = False) Dim WshShell As Object Set WshShell = CreateObject("wscript.shell") WshShell.Sendkeys text, wait Set WshShell = Nothing End Sub
즉, 원래 Sendkeys 라는 API 를 같은 소스내에 Sendkeys 라는 Sub Function 만들어 대체하게 만들어 버림.
이렇게하니 좀 불안하긴 하지만, 어쨌든 잘 돌아 간다.