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;

  • 相关阅读:
    【题解】Red-Blue Graph Codeforces 1288F 上下界费用流
    【题解】The Magician HDU 6565 大模拟
    HAOI2018游记
    【题解】【THUSC 2016】成绩单 LOJ 2292 区间dp
    【题解】【雅礼集训 2017 Day5】远行 LOJ 6038 LCT
    【题解】Catering World Finals 2015 上下界费用流
    《无问西东...》
    为了世界的和平~一起上caioj~~~!
    新征程~起航!
    bzoj4240: 有趣的家庭菜园(树状数组+贪心思想)
  • 原文地址:https://www.cnblogs.com/sundh1981/p/14157163.html
Copyright © 2011-2022 走看看