루아에서 특정 앱을 실행하려면 os.execute() 함수를 사용합니다.
os.execute('start "" "실행파일경로"')
함수의 인수에 'start "" ' 커맨드 코드 이후 실행하려는 윈도우 앱의 경로나 이름을 기입하면 실행이 됩니다.
-- 그림판을 실행하는 예시
app_path = '"mspaint"'
os.execute('start "" '..app_path)
-- 메모장을 실행하는 예시
app_path = '"notepad"'
os.execute('start "" '..app_path)
-- 계산기을 실행하는 예시
app_path = '"calc"'
os.execute('start "" '..app_path)
윈도우의 기본앱들은 위의 예시처럼 앱의 이름만으로도 실행이 가능합니다.
마치 실행 창에서 프로그램을 켤때와 같죠.
이제 느낌이 오셨나요?
맞습니다.
os.execute('start "" '..실행경로) 는 윈도우의 실행(단축키 : 시작+R) 과 기능이 똑같습니다.
그럼 이를 활용해서 블루스택5 앱플레이어를 예시삼아 실행해보고 싶어지네요.
우선 실행하고자 하는 앱플레이어의 바로가기파일을 찾아서 속성창을 열어보면 경로를 알수있습니다.
대상의 경로를 복사해서 붙여보니 다음과 같습니다.
"C:\Program Files\BlueStacks_nxt\HD-Player.exe" --instance Pie64
이를 실행창에 복사해서 실행해보면 원하는 블루스택5의 인스턴스가 실행되는것을 알수있습니다.
다만 문제는 루아에서 \ 로만 타이핑한다면 루아에서는 \를 인식하지 못합니다.
\는 제어문자를 입력하는 코드이기 때문에, \\ 로 수정해주어야 \로 처리가 됩니다.
그러므로 \를 모두 \\로 수정합니다.
그리고 루아에서 --는 주석처리하는 문구이므로 instance Pie64가 주석처리 되어버립니다.
이를 피하기 위해 ' ' 작은 따옴표를 사용해 전체를 감싸줄 필요가 있겠네요.
'"C:\\Program Files\\BlueStacks_nxt\\HD-Player.exe" --instance Pie64'
이렇게 말이죠.
-- 블루스택5를 실행하는 예시
app_path = '"C:\\Program Files\\BlueStacks_nxt\\HD-Player.exe" --instance Pie64'
os.execute('start "" '..app_path)
이렇게 코드를 작성하여 실행하면 이제 블루스택5 가 실행될것입니다.
이를 함수화 하여 앞으로도 간결하게 쓰려한다면 다음과 같이 하시면 좋습니다.
-- 윈도우 앱 실행
function runApp(app_path)
os.execute('start "" '..app_path)
print('실행경로 : '..tostring(app_path))
end
app_path = '"C:\\Program Files\\BlueStacks_nxt\\HD-Player.exe" --instance Pie64'
runApp(app_path)
이미지맥스와 접목하여 사용한다면 최근 업데이트와 함께 추가된 기능 prescript에 이렇게 원하는 앱을 실행하는 부분을 추가한다면 이미지맥스를 실행함과 동시에 원하는 프로그램을 실행할수 있게 됩니다.
윈도우 핸들링을 잘 다루신다면 hwnd 를 체크하여 프로그램이 꺼졌을때를 검출하여 재실행할수도 있고 다양하게 활용이 가능할겁니다.
너무 편해 눈물이 납니다.
'이미지맥스 그리고 루아(lua) > 루아(lua)' 카테고리의 다른 글
[lua] 클래스 Class (객체지향 프로그래밍) (0) | 2022.03.26 |
---|---|
[lua] 함수 정의시 인수의 기본값 지정하는 방법 (0) | 2021.08.03 |
[lua] 랜덤 시간 예약 설정 함수 setTime() (0) | 2021.07.12 |
[lua] 시간 설정 및 경과 확인 함수 getClock() setClock() (0) | 2021.05.12 |
[lua] 루아에서 sleep() 함수를 구현하기 (0) | 2021.05.10 |