仿91助手的PC与android手机通讯(5) --- 使用adb获取手机信息

到这里,我知道的就差不多了。后面就是跟android手机的命令传递了。这些操作主要使用到android工具包---adb(android debug bridge)。这个东西是google提供的,网上有大量的教程,使用起来很简单。
我当时测试就是随便上网搜了一个adb.exe下载下來,打开一个黑框把文件拖进去回车就可以看到命令列表了,如下图:
仿91助手的PC与android手机通讯(5) --- 使用adb获取手机信息 - Mongamind_蚯蚓 - Mongamind的博客

 
介绍一下获取android手机信息的基本流程:
WinExec("adb -d devices",SW_HIDE);
Sleep(1200);


SECURITY_ATTRIBUTES sa;  


sa.nLength = sizeof(SECURITY_ATTRIBUTES);  






char buffer[1024] = {0};          //用1K的空间来存储输出的内容,只要不是显示文件内容,一般情况下是够用了。 


DWORD recvLen;  


DWORD occupyLen = 0;






TCHAR command[1024] = _T("adb -d shell getprop ro.product.brand"); //获取厂商名称


//_T("adb -d shell getprop ro.product.model") //设备型号
//_T("adb -d shell getprop ro.build.version.release") //android版本
//_T("adb -d shell dumpsys iphonesubinfo"} //IMEI码
//_T("adb -d shell cat /sys/class/net/wlan0/address") //MAC地址
HANDLE hRead,hWrite;  


if (!CreatePipe(&hRead,&hWrite,&sa,0))   


return 0;    






PROCESS_INFORMATION pi;


STARTUPINFO si; 


si.cb = sizeof(STARTUPINFO); 


GetStartupInfo(&si);  


si.wShowWindow = SW_HIDE;      


si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;


si.hStdError = hWrite; //把子进程的标准错误输出重定向到管道输入   


si.hStdOutput = hWrite; //把子进程的标准输出重定向到管道输入  


si.hStdInput = hRead; //把子进程的标准输入重定向到管道输出






TCHAR command[1024] = _T("adb -d shell getprop ro.product.brand"); //获取厂商名称


if (! CreateProcess(NULL, command,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)) // 启动进程以调用ADB


{  


CloseHandle(hWrite);  


CloseHandle(hRead);  


return FALSE;  


}  






CloseHandle(hWrite);






if(WaitForSingleObject(pi.hProcess,800) == WAIT_TIMEOUT) //800ms的处理等待时间.


{


TerminateProcess(pi.hProcess,WAIT_TIMEOUT);


CloseHandle(pi.hProcess);


return FALSE;


}









if(ReadFile(hRead,buffer,200,&recvLen,NULL)) //IMEI码的要做特殊处理。


{


CStringA strIMEI = buffer;


if(strIMEI.Find("error:") == -1)


{


strIMEI = strIMEI.Mid(strIMEI.FindOneOf("=")+2);


strcpy_s(buffer,1024,strIMEI.GetBuffer());


strIMEI.ReleaseBuffer();


occupyLen=strIMEI.GetLength();}


}


}


///


ReadFile(hRead,buffer,1024,&occupyLen,NULL); //其他信息直接返回读取到的东西就行。





buffer[occupyLen-3] = '\0';






CloseHandle(hRead);


CloseHandle(pi.hThread);


CloseHandle(pi.hProcess);


TerminateProcess(pi.hProcess,0);





OK,今天到此为止.




原版地址:http://mongamind.blog.163.com/blog/static/193287261201310603758225/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值