본문 바로가기
programming language/Autohotkey

Autohotkey 32, 64 비트 구분하기

by __observer__ 2015. 1. 18.
반응형

Autohotkey 를 사용하다 보면 코드 내에서 현재 사용하는 시스템이 32 비트 인지 또는 64 비트인지를 구별해야 하는 경우가 종종 발생합니다.

 

예를 들면 Windows 64비트에서는 32 비트용 프로그램들이 Program Files (x86) 에 설치가 되곤 합니다.

 

하지만 32비트 운영체제에서는 Program Files 폴더에 설치가 되죠.

 

따라서 하나의 코드를 32비트와 64 비트에서 동시에 사용하기 위해서는 해당 시스템이 32비트인지 64 비트인지를 구분해야 하는 것입니다.

 

이에 대한 방법은 아래 포스팅에서 소개했던 ~

 

http://iamaman.tistory.com/1461

 

IsWow64Process() 함수를 사용하면 됩니다. IsWow64Process() 함수는 64비트이면 1을 그렇지 않으면 0을 리턴합니다.

 

이제 위 함수를 사용하여 간단한 예제를 하나 만들어 보죠. 간단하게 Autohotkey 로 chrome 브라우저를 실행하는 예제를 만들어 봤습니다.

 

일단 제가 현재 사용하고 있는 64 비트 운영체제에서는 아래 Path 에 chrome 실행 파일이 존재합니다.

 

C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

 

하지만 32비트 운영체제에서는 아래 Path 에 chrome 실행 파일이 존재합니다.

 

C:\Program Files\Google\Chrome\Application\chrome.exe

 

따라서 윈도우 시스템에 따라 Autohotkey 코드가 정상적으로 동작하게 하기 위해서는 32비트 인지 64비트인지를 구분해서 아래와 같이 코딩 해야 할 것입니다.

 

IsWow64Process()

{

    hProcess := DllCall("kernel32\GetCurrentProcess")

    ret := DllCall("kernel32\IsWow64Process", "UInt", hProcess, "UInt *", bIsWOW64)

    return ret & bIsWOW64

}

 

if (IsWow64Process())

{

    Run "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

}

else

{

    Run "C:\Program Files\Google\Chrome\Application\chrome.exe"

}

 

위 코드를 실행하면 자신의 운영체제에 맞는 chrome 이 실행 됩니다.

반응형

댓글