서론.
윈도우용 안드로이드 앱플레이어중에 개인적으로 가장 개발자 친화적으로 설계된건 LDPlayer가 아닐까 싶다.
직설적으로 말하면 매크로, 작업장 친화적이다.
LD (구 모모)는 별도의 컨트롤러를 제공하지 않는 Nox, Blustacks와 달리, 전용 컨트롤러가 존재한다.
ldconsole.exe 를 사용해서 대부분의 원하는 작업을 자동화 할 수 있다.
지원하는 명령어도 엄청나게 많다.
quit <--name mnq_name | --index mnq_idx>
quitall
launch <--name mnq_name | --index mnq_idx>
reboot <--name mnq_name | --index mnq_idx>
list
runninglist
isrunning <--name mnq_name | --index mnq_idx>
list2
add [--name <mnq_name>]
copy [--name <mnq_name>] --from <mnq_name | mnq_idx>
remove <--name mnq_name | --index mnq_idx>
rename [--name <mnq_name | --index mnq_idx>] --title <mnq_title>
modify <--name mnq_name | --index mnq_idx>
[--resolution <w,h,dpi>]
[--cpu <1 | 2 | 3 | 4>]
[--memory <256 | 512 | 768 | 1024 | 1536 | 2048 | 4096 | 8192>]
[--manufacturer asus]
[--model ASUS_Z00DUO]
[--pnumber 13800000000]
[--imei <auto | 865166023949731>]
[--imsi <auto | 460000000000000>]
[--simserial <auto | 89860000000000000000>]
[--androidid <auto | 0123456789abcdef>]
[--mac <auto | 000000000000>]
[--autorotate <1 | 0>
[--lockwindow <1 | 0>
[--root <1 | 0>
installapp <--name mnq_name | --index mnq_idx> --filename <apk_file_name>
installapp <--name mnq_name | --index mnq_idx> --packagename <apk_package_name>
uninstallapp <--name mnq_name | --index mnq_idx> --packagename <apk_package_name>
runapp <--name mnq_name | --index mnq_idx> --packagename <apk_package_name>
killapp <--name mnq_name | --index mnq_idx> --packagename <apk_package_name>
locate <--name mnq_name | --index mnq_idx> --LLI <Lng,Lat>
adb <--name mnq_name | --index mnq_idx> --command <cmd_str>
setprop <--name mnq_name | --index mnq_idx> --key <name> --value <val>
getprop <--name mnq_name | --index mnq_idx> [--key <name>]
downcpu <--name mnq_name | --index mnq_idx> --rate <0~100>
backup <--name mnq_name | --index mnq_idx> --file <filepath>
restore <--name mnq_name | --index mnq_idx> --file <filepath>
action <--name mnq_name | --index mnq_idx> --key <name> --value <val>
scan <--name mnq_name | --index mnq_idx> --file <filepath>
sortWnd
zoomIn
zoomOut
rock
pull <--name mnq_name | --index mnq_idx> --remote <filepath> --local <filepath>
push <--name mnq_name | --index mnq_idx> --remote <filepath> --local <filepath>
backupapp <--name mnq_name | --index mnq_idx> --packagename <apk_package_name> --file <filepath>
restoreapp <--name mnq_name | --index mnq_idx> --packagename <apk_package_name> --file <filepath>
globalsetting [--fps <0~60>] [--audio <1 | 0>] [--fastplay <1 | 0>] [--cleanmode <1 | 0>]
launchex <--name mnq_name | --index mnq_idx> --packagename <apk_package_name>
operatelist <--name mnq_name | --index mnq_idx>
operateinfo <--name mnq_name | --index mnq_idx> --file <filepath>
operaterecord <--name mnq_name | --index mnq_idx> --content <jsonstring>
위 커맨드에 대한 대부분의 자세한 설명은 공식 블로그에서 확인이 가능하다.
하지만 이상하게도 list2 커맨드에 대한 설명이 없다.
실행중인 앱플레이어 리스트를 가져오거나 pid, handle을 손쉽게 가져오기 위해서 꼭 필요한데 말이다.
list2 커맨드를 실행하면 아래와 같은 포맷으로 출력된다.
0,instance-3,0,0,0,-1,-1,1280,720,240
1,test01,0,0,0,-1,-1,1280,720,240
2,test02,4401200,339166,1,72940,52688,720,1280,320
꽤나 다양한 정보를 넘겨준다는 점을 볼 수 있다.
이를 분석해서 정리해보자면 콤마 기준으로 이렇게 되어있다.
name | description |
ID | LDPlayer index no |
Name | LDPlayer name |
BaseProcess handle | LDPlayerMainFrame (base memory region) |
TheRenderer handle | RenderWindow (screen) |
status | 0 = off, 1 = running, 2 = starting |
dnplayer.exe PID | |
VirtualBox PID | |
Screen width | |
Screen height | |
DPI |
어플리케이션 메모리에 접근하기 위해서는 BaseProcess handle에 attach를,
스크린에 접근하기 위해서는 TheRenderer에 attach하면 된다.
'개인 정리용' 카테고리의 다른 글
[Drizzle] 스펙 변경 (0) | 2024.07.01 |
---|---|
[C#] IntPtr & nint (0) | 2024.04.23 |