Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Hans el Topo en 27 Agosto 2006, 01:20 am



Título: ¿como paso datos a un programa concreto?
Publicado por: Hans el Topo en 27 Agosto 2006, 01:20 am
pues eso ando buscando como enviarle datos a una consola de cmd.exe concreta... estoy usando shellexecuteex pero nose si es, ¿es esa api?


Título: Re: ¿como paso datos a un programa concreto?
Publicado por: Hans el Topo en 27 Agosto 2006, 01:46 am
yo hago esto...

declaro las estructuras,apis...
Código:
'estructura de shellexecuteinfo
Const SEE_MASK_IDLIST = &H4
Dim slayer as variant  'pid del proceso

Private Type SHELLEXECUTEINFO
    cbSize As Long
    fMask As Long
    hwnd As Long
    lpVerb As String
    lpFile As String
    lpParameters As String
    lpDirectory As String
    nShow As Long
    hInstApp As Long
    lpIDList As Long
    lpClass As String
    hkeyClass As Long
    dwHotKey As Long
    hIcon As Long
    hProcess As Long
End Type
Private Declare Function ShellExecuteEx Lib "shell32.dll" (SEI As SHELLEXECUTEINFO) As Long

funcioncita para pasar valores
Código:
Private Sub kill_slayer(FileName As String, OwnerhWnd As Long, comandos As String, mataid As Variant)
    Dim SEI As SHELLEXECUTEINFO
    Dim r As Long
    With SEI
        'Set the structure's size
        .cbSize = Len(SEI)
        'Seet the mask
        .fMask = SEE_MASK_IDLIST
        'Set the owner window
        .hwnd = OwnerhWnd
        'Show the properties
        .lpVerb = ""
        'Set the filename
        .lpFile = FileName
        .lpParameters = comandos
        .lpDirectory = vbNullChar
        .nShow = 0
        .hInstApp = 0
        .lpIDList = mataid
    End With
    r = ShellExecuteEx(SEI)
End Sub

Código:
Private Sub tmrcontrola_Timer()
    'controla si existe una ventana de cmd abierta
   
    slayer = BuscaPid("cmd.exe")
    If slayer <> 0 Then 'si existe una ventana de cmd
        'la cerramos
        kill_slayer "cmd.exe", Me.hwnd, "exit ", slayer
    End If
End Sub

no pongo todas las declaraciones de esta función...la pille de aqui del foro
'
Código:
DEVUELVE EL PID DE UN PROCESO A PARTIR DE SU NOMBRE
Private Function BuscaPid(Nombre As String) As Long
    Dim Uno As Long
    Dim Info As PROCESSENTRY32

    Info.dwSize = Len(Info)
    Uno = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
    Call Process32First(Uno, Info)

    'mientras tenga valor correcto
    Do While Process32Next(Uno, Info)
        'si coinciden damos el resultado
        If lstrcmp(Nombre, Info.szExeFile) = 0 Then
            BuscaPid = Info.th32ProcessID
            Exit Do
        End If
    Loop
    CloseHandle (Uno)
End Function

pues al ejecutarlo me peta...


Título: Re: ¿como paso datos a un programa concreto?
Publicado por: Hans el Topo en 30 Agosto 2006, 23:29 pm
¿nadie ha enviado nunca comandos a un programa desde vb?


Título: Re: ¿como paso datos a un programa concreto?
Publicado por: en 30 Agosto 2006, 23:48 pm
http://www.elguille.info/colabora/NET2005/jtorres_redirigirVB.htm

mira ver si eso t ayuda !!


Título: Re: ¿como paso datos a un programa concreto?
Publicado por: Chief en 31 Agosto 2006, 15:15 pm
Lo que tenes que hacer es usar pipes para interactuar con la consola.

Busca "Pipes" en el foro con el botoncito :P, esta la api completa por ahi, fijate que sea una buena, porque hay una mediocre, que no permite recibir respuestas, o esa te puede servir como ejemplo por si queres crear un code completo vos.


Salu2.


Título: Re: ¿como paso datos a un programa concreto?
Publicado por: Hans el Topo en 1 Septiembre 2006, 13:24 pm
gracias


Título: Re: ¿como paso datos a un programa concreto?
Publicado por: foobar en 2 Septiembre 2006, 18:33 pm
Interprocess Communications (Inglés) (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ipc/base/interprocess_communications.asp)

Cómo utilizar canalizaciones con nombre (Named Pipes) para comunicación en Visual Basic (http://support.microsoft.com/?scid=kb;es;871044)