como llamar y ejecutar archivos .exe desde un formulario

79 views
Skip to first unread message

Programador Desarrollador

unread,
May 7, 2018, 11:47:19 AM5/7/18
to Comunidad de Visual Foxpro en Español
explico, tengo 2 sistemas hecho en vfp 9 que son compras.exe y almacen.exe, lo que deseo hacer es que desde un formulario (tipo pantalla) colocar un boton con una imagen y nombre del sistema, cuando le den clic ejecutar el archivo almacen.exe.

Martin Paredes

unread,
May 7, 2018, 1:51:32 PM5/7/18
to Comunidad de Visual Foxpro en Español
           IF FILE(FULLPATH(CURDIR())+[facturacion.exe]) AND IsExeRunning([facturacion.exe])=.F. THEN
              cpars='"'+ALLTRIM(_SCREEN.obj_sysdatabasename)+'" '+'"'+ALLTRIM(_SCREEN.obj_sysusername)+'" '+'"'+ALLTRIM(_SCREEN.obj_syspassword)+'" '
              cpars=cpars+'"'+ALLTRIM(STR(_SCREEN.obj_sysnworksuc))+'" '+'"'+ALLTRIM(STR(_SCREEN.obj_sysnempleado))+'" '
              cpars=cpars+'"'+ALLTRIM(_SCREEN.obj_syscempresa)+'" '+'"'+ALLTRIM(STR(_SCREEN.obj_syspais))+'" '+'"'+ALLTRIM(STR(_SCREEN.obj_sysestado))+'" '
              cpars=cpars+'"'+ALLTRIM(STR(_SCREEN.obj_sysmunicipio))
              oWsh=CREATEOBJECT("wscript.shell")
              oWsh.Run(FULLPATH("facturacion.exe")+" "+cpars,2,)
              RELEASE cpars, oWsh
           ENDIF

FUNCTION IsExeRunning(tcName, tlTerminate)
   LOCAL loLocator, loWMI, loProcesses, loProcess, llIsRunning
   loLocator     = CREATEOBJECT('WBEMScripting.SWBEMLocator')
   loWMI        = loLocator.ConnectServer()
   loWMI.Security_.ImpersonationLevel = 3          && Impersonate
   loProcesses    = loWMI.ExecQuery([SELECT * FROM Win32_Process WHERE Name = '] + ALLTRIM(tcName) + ['])
   llIsRunning = .F.
   IF loProcesses.Count > 0
      FOR EACH loProcess in loProcesses
          llIsRunning = .T.
          IF tlTerminate=.T. THEN
             loProcess.Terminate(0)
          ENDIF
      ENDFOR
   ENDIF
   RELEASE loLocator
   RETURN llIsRunning
ENDFUNC


Slds...
Mapasac
General Escobedo, N.L. Mexico

William López

unread,
May 8, 2018, 12:56:07 AM5/8/18
to Comunidad de Visual Foxpro en Español
Hola:

De esta forma lo hago yo:

        * para llamar al modulo de inventario desde modulo menu
IF Sysid = "Inv"
                * tienes la ruta del modulo inventario (sin unidad de disco)
STORE sistemas.sysruta TO wdecom
* le agragas la unidad
winv = SYS(5)+ALLTRIM(wdecom)

                * llamas al modulo de inv.
Set defa to &winv
* winven = "inventario.exe"
Run /N &winven
                * retornas la ruta original
Set defa to &Sishome
ENDIF
Reply all
Reply to author
Forward
0 new messages