Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   Enviar comando ADB desde delphi (https://www.clubdelphi.com/foros/showthread.php?t=89557)

force1758 13-12-2015 13:08:40

Enviar comando ADB desde delphi
 
Hola amigo como les va tiempo sin pasar por el foro tengo una duda para ver si pueden ayudar quisiera como puedo hacer en enviar comando ADB (androide) desde delphi y devolver el resultado en un tmemo ,ya que quiero crear una herramienta para uso de celulares y table basado en S.O androide se los agradecería saludo

Neftali [Germán.Estévez] 14-12-2015 10:16:04

Cita:

Empezado por force1758 (Mensaje 500441)
como puedo hacer en enviar comando ADB (androide) desde delphi y devolver el resultado en un tmemo

Yo con esto, no soy capaz de saber lo que necesitas.
:(:(:(

Casimiro Notevi 14-12-2015 10:56:30

Cita:

Empezado por Neftali (Mensaje 500458)
Yo con esto, no soy capaz de saber lo que necesitas.
:(:(:(

Me apunto.

force1758 14-12-2015 13:29:51

Hola amigos gracias por responder tan rápido

ejemplo quiero enviar el el comando:


Código Delphi [-]
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
EF4B1310044     device


ese el es resultado que me devuelve cuando envió el comando (adb devices) desde el CMD de windows. pero que quiero hacer yo bueno es enviar los comando desde mi aplicación delphi y que me muestre el resultado en un tmemo,,estoy trabajando con este ejemplo de AjpdSoft Ejecutar comando MS-DOS y capturar la salida, pero al ejecutar el comando me tarda una eternidad en mostrar la captura

Código Delphi [-]
function ejecutarComando (comando : string) : string;
var
  Buffer: array[0..4096] of Char;
  si: STARTUPINFO;
  sa: SECURITY_ATTRIBUTES;
  sd: SECURITY_DESCRIPTOR;
  pi: PROCESS_INFORMATION;
  newstdin, newstdout, read_stdout, write_stdin: THandle;
  exitcod, bread, avail: Cardinal;
begin
  Result:= '';
  if IsWinNT then
  begin
    InitializeSecurityDescriptor(@sd, SECURITY_DESCRIPTOR_REVISION);
    SetSecurityDescriptorDacl(@sd, true, nil, false);
    sa.lpSecurityDescriptor := @sd;
  end
  else sa.lpSecurityDescriptor := nil;
  sa.nLength := sizeof(SECURITY_ATTRIBUTES);
  sa.bInheritHandle := TRUE;
  if CreatePipe(newstdin, write_stdin, @sa, 0) then
  begin
    if CreatePipe(read_stdout, newstdout, @sa, 0) then
    begin
      GetStartupInfo(si);
      with si do
      begin
        dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
        wShowWindow := SW_HIDE;
        hStdOutput := newstdout;
        hStdError := newstdout;
        hStdInput := newstdin;
      end;
      Fillchar(Buffer, SizeOf(Buffer), 0);
      GetEnvironmentVariable('COMSPEC', @Buffer, SizeOf(Buffer) - 1);
      StrCat(@Buffer,PChar(' /c ' + comando));
      if CreateProcess(nil, @Buffer, nil, nil, TRUE, CREATE_NEW_CONSOLE, nil, nil, si, pi) then
      begin
        repeat
          PeekNamedPipe(read_stdout, @Buffer, SizeOf(Buffer) - 1, @bread, @avail, nil);
          if bread > 0 then
          begin
            Fillchar(Buffer, SizeOf(Buffer), 0);
            ReadFile(read_stdout, Buffer, bread, bread, nil);
            Result:= Result + String(PChar(@Buffer));
          end;
          Application.ProcessMessages;
          GetExitCodeProcess(pi.hProcess, exitcod);
        until (exitcod <> STILL_ACTIVE) and (bread = 0);
      end;
      CloseHandle(read_stdout);
      CloseHandle(newstdout);
    end;
    CloseHandle(newstdin);
    CloseHandle(write_stdin);
  end;
end;


espero haberme explicado un poco para lo que quiero hacer gracias saludos

Osorio 14-12-2015 15:48:09

En una ocasion estuve probando ese ejemplo asi como cuando uno esta sin oficio y se pone a probar cosas.

Recuerdo que el tiempo de respuesta era normal. Puede ser que el tiempo de retardo este dado mas por tu dispositivo.

AgustinOrtu 14-12-2015 17:53:50

Si, sobre todo con emuladores

force1758 19-12-2015 01:25:41

pero no hay una manera de enviar los comando desde delphi entonces

escafandra 20-12-2015 18:14:34

Cita:

Empezado por force1758 (Mensaje 500662)
pero no hay una manera de enviar los comando desde delphi entonces

La función que encontraste para ejecutar comandos de consola, y otras muchas publicadas te permiten ejecutar comandos adb como un comando más, y lo haces desde delphi.
Existe otra forma, abd es un servidor TCPIP y puedes comunicarte con él mediante shokets desde delphi, pero es un poco más complicado y los comandos son algo diferentes.


Saludos.


La franja horaria es GMT +2. Ahora son las 10:29:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi