Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-03-2007
erika.martinez erika.martinez is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires - Argentina
Posts: 18
Poder: 0
erika.martinez Va por buen camino
Si, le pasé todo el path, y lo que obtengo es lo que puse en el mensaje #3
Responder Con Cita
  #2  
Antiguo 27-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Buffer es una variable interna, entiendo entonces que colocas un breakpoint y examinas su contenido ¿cuando lo haces? ¿en que instrucción lo haces?
Responder Con Cita
  #3  
Antiguo 27-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Perdona, ahora que leo mejor el mensaje 3 intuyo que miras el valor de la variable buffer justo después de llamar a la función:
Código Delphi [-]
GetEnvironmentVariable('COMSPEC', @Buffer, SizeOf(Buffer) - 1);
Pero si te fijas en la siguiente instrucción, después de la ruta del cmd.exe le "pegamos" el parámetro "/c" y la ruta entera de tu programa. Es decir le estamos diciendo al cmd que ejecute tu programa. Así que no entiendo cual es el problema
Responder Con Cita
  #4  
Antiguo 27-03-2007
erika.martinez erika.martinez is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires - Argentina
Posts: 18
Poder: 0
erika.martinez Va por buen camino
Haciendo esto que decís:

Código Delphi [-]
GetEnvironmentVariable('COMSPEC', @Buffer, SizeOf(Buffer) - 1);
    StrCat(@Buffer,PChar(' /c ' + FileName)); {donde FileName = 'C:\Vienna\RnaFold.exe'}
    if CreateProcess(nil, @Buffer, nil, nil, TRUE, CREATE_NEW_CONSOLE, nil, nil, si, pi) then

       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);
          Rdo:= Rdo + String(PChar(@Buffer));
        end;
        GetExitCodeProcess(pi.hProcess, exitcod);
      until (exitcod <> STILL_ACTIVE) and (bread = 0);

Cuando entro al repeat, la variable bread = 0 por lo que el programa no lee nada.
Responder Con Cita
  #5  
Antiguo 26-04-2007
ZRR ZRR is offline
Miembro
 
Registrado: jun 2005
Posts: 39
Poder: 0
ZRR Va por buen camino
Exclamation Verifica este articulo

Esto podria ayudarte:
http://www.clubdelphi.com/trucos/index.php?id=54

Saludos
Responder Con Cita
  #6  
Antiguo 04-05-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cool Erika... espero les sirva!

Hola amigos, algunos comentarios:

ScreenBuffer no es nada más que el buffer en memoria convencional (así se llamaba), que tenemos desde las primeras PCs compatibles. 80 es la cantidad máxima de caracteres que se podían utilizar horizontalmente, y 50 es la cantidad máxima soportada al cambiar el modo (int 10h, 0).

CreateProcess es desde mi punto de vista (fuera de cualquier discusión del foro), la mejor función para correr programas. Si no utilizan Güindos eQuispe la carpeta es 'windows\command', y el eula.txt no se dónde andará.

CreateFont la use, pues es la forma mas simple de crear el font que requiero para mostrar a los antiguos caracteres 8:12 del CLI

Colors contiene la RGB de los colores que se ven en consola (modo texto). No hice el blink pues creo no es aplicable.

Toolhelp32ReadProcessMemory es una hermosa función que nos sirve para curiosear en procesos ajenos . Lo lindo del caso es que podemos acceder al primer mega de memoria que nos dejaron los programas en DOS, en éste encontraremos cosillas muuuy interesantes.

SetBkColor API que permite definir el color de fondo (background) del texto en un determinado lienzo.

SetTextColor API define el color del texto (foreground en este caso).

0j0: el Timer llama a OnPaint para hacer 'refresh'

Lo que requieres es leer la matriz que te dejé, con esto encontrarás lo que buscas tal y como lo ve el usuario... si quieres métele todo a un PaintBox para que muestres otras cosillas también en tu formulario...

PD: El resto como ya se imaginaran es cosecha de mi ocio
Espero nos cuentes que es lo que querías hacer en concreto.


Suerte!
Archivos Adjuntos
Tipo de Archivo: zip check.zip (2,4 KB, 52 visitas)
Responder Con Cita
  #7  
Antiguo 04-05-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cool Ahhh me olvidaba

Espero que tu programa DOS sea CLI (Command Line Interface), si no debemos ver otras alternativas, pero igual nos servirá la idea de leer del de otro proceso.

Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
leer cadena de otra aplicacion jar OOP 2 05-02-2007 20:18:12
Utilizar un DBGrid para leer de una tabla y escribir en otra taru MySQL 0 25-07-2006 18:31:06
Pasar texto de una aplicacion delphi a otra OmarPerez API de Windows 4 13-07-2005 20:56:19
Leer texto de un txt Walterdf Varios 1 07-05-2003 14:35:36


La franja horaria es GMT +2. Ahora son las 13:26:18.


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
Copyright 1996-2007 Club Delphi