zoukankan      html  css  js  c++  java
  • Delphi 通过CMD命令实现 ADB 操作


    procedure TForm1.Button2Click(Sender: TObject);
    var
    hReadPipe, hWritePipe: THandle;
    si: STARTUPINFO;
    lsa: SECURITY_ATTRIBUTES;
    pi: PROCESS_INFORMATION;
    mDosScreen: String;
    cchReadBuffer: DWORD;
    ph: PansiChar;
    fname: PChar;
    i, j: integer;
    str, TEMP, ip: string;
    K: integer;
    begin
    Memo1.Clear;
    fname := allocmem(255);
    ph := allocmem(5000);
    lsa.nLength := sizeof(SECURITY_ATTRIBUTES);
    lsa.lpSecurityDescriptor := nil;
    lsa.bInheritHandle := true;
    try
    try
    if CreatePipe(hReadPipe, hWritePipe, @lsa, 0) = false then
    begin
    ShowMessage('Can not create pipe!');
    exit;
    end;
    fillchar(si, sizeof(STARTUPINFO), 0);
    si.cb := sizeof(STARTUPINFO);
    si.dwFlags := (STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW);
    si.wShowWindow := SW_HIDE;
    si.hStdOutput := hWritePipe;
    StrPCopy(fname, 'adb devices'); // 显示android设备列表
    if CreateProcess(nil, fname, nil, nil, true, 0, nil, nil, si, pi) = false
    then
    begin
    ShowMessage('can not create process');
    FreeMem(ph);
    FreeMem(fname);
    exit;
    end;
    while (true) do
    begin
    if not PeekNamedPipe(hReadPipe, ph, 1, @cchReadBuffer, nil, nil) then
    break;
    if cchReadBuffer <> 0 then
    begin
    if ReadFile(hReadPipe, ph^, 4096, cchReadBuffer, nil) = false then
    break;
    ph[cchReadBuffer] := chr(0);
    if ph <> '' then
    Memo1.Lines.Add(ph);
    end
    else if (WaitForSingleObject(pi.hProcess, 0) = WAIT_OBJECT_0) then
    break;
    Application.ProcessMessages;
    Sleep(100);
    end;
    ph[cchReadBuffer] := chr(0);
    if ph <> '' then
    Memo1.Lines.Add(StringReplace(ph, #13#10, '', [rfReplaceAll]));
    CloseHandle(hReadPipe);
    CloseHandle(pi.hThread);
    CloseHandle(pi.hProcess);
    CloseHandle(hWritePipe);
    FreeMem(ph);
    FreeMem(fname);
    except
    end;
    finally
    end;
    end;

  • 相关阅读:
    MVC3.0与C#截取字符串
    MVC3.0图片滚动和相册展示(上)
    MVC3.0视频点播及上传格式转化
    职位VS能力
    liblfds 测试
    dpdk 相关概念
    WAR文件
    在word中选择一个矩形区域
    IP地址 网段的划分
    ipconfig...ping...netstat
  • 原文地址:https://www.cnblogs.com/sundh1981/p/14157163.html
Copyright © 2011-2022 走看看