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

来源:互联网 发布:maxwell软件原理 编辑:程序博客网 时间:2024/05/01 10:59
到这里,我知道的就差不多了。后面就是跟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/
0 0
原创粉丝点击