Gracias enco por tu respuesta

Jorge Hk
07 de Diciembre del 2004
gracias enco por tu respuesta pero no me funciono la de la funcion shell

por que no me lo mandas especifica mente como lo harias tu si abrieras un archivo con los siguientes datos

el archivo esta en la maquina 5
se llama programa1

recuedo: quiero que se ejecute en maquina5 no en la mia

en?
07 de Diciembre del 2004
Yo lo había entendido al revés, ejecutar en tu máquina una aplicación que está en otra.

Alguna vez he necesitado hacer lo que pides, y no me compliqué... creé una aplicación externa 'EXE estandar':

Añades un control WinSock, se usará para dejar la aplicación escuchándo en un puerto para que la aplicación que usarás tu para ejecutarlo reciba la ruta del programa que quieres ejecutar en esa máquina.
Si añades un control Winsock1 al formulario del que será servidor le pones:

Private Sub Form_Load()
With Winsock1
.Close
.LocalPort=9100
.RemotePort=0
.Listen
End With
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim pRuta As String
Dim IdTarea

Winsock1.GetData pRuta, vbString
IdTarea = Shell(pRuta, vbNormalFocus)
End Sub

Private Sub Winsock1_Close()
Winsock1.Close
Call Form_Load
End Sub

Además, para que no se muestre ninguna interfaz, le pones las propiedades del formulario:
Visible = False
ShowInTaskbar = False

Con esto tienes una aplicación que cuando se ejecuta se pone a la espera de recibir una petición de conexión por el puerto especificado.
Y cuando esté conectado, el parámetro que reciba deberá ser la ruta del programa que se quiere ejecutar, y esa ruta es la que le mandarás desde la aplicación cliente que uses en tu máquina.

Entonces, en tu aplicación, la que será el cliente desde donde ordenarás a la otra máquina el programa que tiene que ejecutar, también añades un control WinSock, y lo codificas de esta forma:

Private Sub Form_Load()
With Winsock1
.Close
.LocalPort=0
.Connect "maquina5", 9100
End With
End Sub

y ahora puedes poner por ejemplo un CommandButton para decirle a la aplicación que esté corriendo en el otro ordenador, cual es la ruta del programa que tiene que ejecutar:

Private Sub Command1_Click()
Winsock1.SendData "c:Programasprograma1.exe"
End Sub

_______
Luego sólo te faltaría poner tu programa servidor en las máquinas que lo necesitarás, y añadirlo a la lista de tareas que deben ejecutarse al inicio de Windows, en la clave del registro:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
Añades un Nuevo Valor Alfanumérico, con el nombre que quieras, y la información del valor le pones la ruta del programa servidor.
______

Otra forma sería poner el procedimiento para ejecutar los programas remotamente en una DLL AvtiveX y hacerle un enlace tardío a la clase de la DLL remotamente en el PC que le digas.
Si hace falta te paso la dirección de algún enlace en el que explican como hacerlo, porque esto ya es un pelín más complejo.

--
Un saludo.