Error en ejemplo de msdn.microsoft

esperanza
28 de Octubre del 2002
Estimados amigos, he ejecutado el ejemplo de msdn.microsoft para ejecutar la aplicación Notepad desde un programa en VB y me da error de compilación: Variable no definida. El programa lo he copiado tal cual con el portapapeles:


Option Explicit
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Const STILL_ACTIVE = &H103
Const PROCESS_QUERY_INFORMATION = &H400
'3. Add a Command Button control to Form1. Command1 is created by default.
'4. Add the following code to the Click event for Command1:
Private Sub Command1_Click()
Dim JobToDo As String
JobToDo = "c:windowsnotepad.exe"
Shell32Bit JobToDo
End Sub
'5. Create a new subroutine called Shell32Bit. Add the following code to this subroutine:
Sub Shell32Bit(ByVal JobToDo As String)
Dim hProcess As Long
Dim RetVal As Long
'The next line launches JobToDo as icon,
'captures process ID
hProcess = OpenProcess

'Aquí me da el error, en la variable Flase. La
'verdad es que no se de donde sale
'
(PROCESS_QUERY_INFORMATION, Flase, Shell(JobToDo, 6))
Do
'Get the status of the process
GetExitCodeProcess hProcess, RetVal
'Sleep command recommended as well
'as DoEvents
DoEvents: Sleep 100
'Loop while the process is active
Loop While RetVal = STILL_ACTIVE
MsgBox "Notepad terminated by user"
End Sub


Me gustaría que me funcionara,pero no se como hacerlo. Gracias de antemano.

stefen
28 de Octubre del 2002

1) Haz las siguientes declaraciones en un modulo...

Declare Function WinExec Lib "kernel32" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long

Const SW_HIDE As Long = 0
Const SW_SHOWNORMAL As Long = 1
Const SW_SHOWMINIMIZED As Long = 2
Const SW_SHOWMAXIMIZED As Long = 3
Const SW_SHOWNOACTIVATE As Long = 4
Const SW_SHOW As Long = 5
Const SW_MINIMIZE As Long = 6
Const SW_SHOWMINNOACTIVE As Long = 7
Const SW_SHOWNA As Long = 8
Const SW_RESTORE As Long = 9
Const SW_SHOWDEFAULT As Long = 10

2) Y ejecuta lo siguiente:

Private Sub Form_Load()
Dim Res As Long
Res = WinExec("C:WINDOWSNOTEPAD.EXE", SW_SHOWNORMAL)
End Sub

Espero que te sirva este codigo. Si quieres ejecutar otro programa, cambias C:WINDOWSNOTEPAD.EXE popr la ruta del otro programa y ya esta.

Un saludo: Esteban

esperanza
28 de Octubre del 2002
Gracias, pero yo lo que quiero es que VB espere a que termine el otro programa y luego continúe, y como he visto que daban la solución en este mismo foro con el ejemplo de msdn he querido probarlo, pero no me funciona.
Un saludo.

jorge
28 de Octubre del 2002
por que no pruebas a poner en vez de flase un false, que a los de microsoft tambien se les va la mano.
Ademas ten cuidado con la ruta de acceso a notepad, por que en W2000 y NT no esta en Windows sino en WINNT

webJose
28 de Octubre del 2002
Es 99% seguro que en vez de flase, es FALSE!!