-
Python으로 VirtualBox 제어기타(공개) 2021. 8. 22. 14:30
1. pip install virtualbox
2. 코드 예제 (에러 발생 시 아래 참조)
import virtualbox from vboxapi import VirtualBoxManager MachineName = 'window10_test' mgr = VirtualBoxManager(None, None) vbox = mgr.getVirtualBox() machine = vbox.findMachine(MachineName) session = mgr.getSessionObject(vbox) machine.LockMachine(session, mgr.constants.LockType_Shared) #################################### ########################## 키보드 #################################### scancode = 0x1e # a 키 스캔코드값 session.Console.Keyboard.PutScancode(scancode) # 키 입력을 지속적으로 넣음. session.Console.Keyboard.PutScancode(scancode + 0x80) # 키 입력 중단 # https://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html 참조 # 화살표키 위 delete 키 구현. # 0xe0 키 없이 0x53만 하면. 숫자패드 쪽에 있는 ./delete키로 인식됨. session.Console.Keyboard.PutScancode(0xe0) sleep(0.1) session.Console.Keyboard.PutScancode(0x53) sleep(0.1) session.Console.Keyboard.PutScancode(0xe0) sleep(0.1) session.Console.Keyboard.PutScancode(0x53 + 0x80) ### 숫자패드쪽 Delete 키를 누르려면 NumLock을 한 번 누르고 뗀 후(토글), 0x53을 눌러야함. ### NumLock : 0x45 #################################### ############################ 마우스 #################################### # http://download.virtualbox.org/virtualbox/SDKRef.pdf # 커서 이동?? x, y = 20, 20 session.console.Mouse.putMouseEventAbsolute(x, y, 0, 0, 0) # 20, 20 이동 session.console.Mouse.putMouseEventAbsolute(x, y, 0, 0, 1) # 20, 20 왼쪽 버튼 클릭 session.console.Mouse.putMouseEventAbsolute(x, y, 0, 0, 2) # 20, 20 오른쪽 버튼 클릭
2-1. import virtualobx에서 vboxapi 에러.
https://github.com/GreatFruitOmsk/vboxapi-py3 설치.
2-1. mgr = VirtualBoxManager(None, None) 에서 virtualbox com_error: (-2147221008, 'CoInitialize ~~ 에러.
import pythoncom pythoncom.CoInitialize()
2-1 Jupyter에서 이유 모르게 커널이 죽는다. 또는 큰 셀의 코드를 실행하면 코드가 제대로 실행되지 않고 죽는다.
2-1-1 jupyter_notebook_config.py 수정
<jupyter_notebook_config.py> max_buffer_size를 늘린다. 저 같은 경우, 기본 512MB였고, 1GB로 늘렸지만 계속 죽음... 효과가 있는지는 잘.. c.NotebookApp.max_buffer_size = 2**33 # 8GB
2-1-2 한 개의 cell에 있는 코드 줄 수를 줄인다. 여러 cell로 쪼갠다.
- 이 방법으로 하는 중. 또는 코드를 클래스화해서 .py 파일로 만든 후, 임포트하는 방식으로한다.
vboxpai를 따로 설치해줘야한다던지..
키입력 멈추기 위해선 0x80을 붙여서 입력해줘야한다던지.
0xe0 키의 존재라던지.
잘 되던 코드가 갑자기 virtualbox com_error 에러를 띄운다던지..
커널이 계속 죽는다던지..
고생 좀 했네요.
잘못된 부분이 있으면 댓글 달아주세요.
'기타(공개)' 카테고리의 다른 글
안드로이드 이모지가 파일명에 포함된 0 바이트 파일 삭제 에러 (0) 2022.12.12 Windows 11 wdcsam64.sys 코어 격리가 꺼지는 오류 해결하기 (0) 2022.09.03 티스토리 Latex 문법. \sum 아래첨자 위치, 모양. (0) 2021.04.23