Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: Hendrix. en 16 Octubre 2006, 19:18 PM
Puedes usar la API WaitForSingleObject
aki hay info:
http://www.elguille.info/VB/ejemplos/vb_stdout.htm
http://support.microsoft.com/default.aspx?scid=kb;es;551122
http://www.google.es/search?hs=xiV&hl=es&client=firefox-a&rls=org.mozilla%3Aes-ES%3Aofficial&q=waitforsingleobject+VB&btnG=B%C3%BAsqueda&meta=lr%3D
Salu2
Cita de: CeLaYa en 16 Octubre 2006, 20:58 PM
ups!!! se me paso poner esta declaracion
Public Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
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 = 1
Private Function ExeEspera(COMANDO As String)
Dim hProcess As Long
Dim RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(COMANDO, vbMinimizedNoFocus))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Sleep 1000
Loop While RetVal = STILL_ACTIVE
End Function
Private Sub Command1_Click()
' ExeEspera "ping 124.32.54.4"
Dim Winzip As String
Dim ArchivoZIP As String
Dim PorComprimir As String
ArchivoZIP = "C:\temp\ArchivoZIP.zip"
PorComprimir = "C:\temp\PorComprimir.txt"
Winzip = "C:\Archivos de programa\WinZip\winzip32.exe -a -r "
ExeEspera Winzip & ArchivoZIP & " " & PorComprimir
MsgBox "Listo"
End Sub
Cita de: CeLaYa en 13 Octubre 2006, 14:37 PM
si lo que quieres hacer es esperar a que tu aplicacion espere a que termine la ejecucion de la ventana del DOS, te paso un tip, que aqui mismo me dieron:
en tu programa en lugar de usar el shell
usa esta funcion
ExeEspera "comando ms-dos"
Private Function ExeEspera(COMANDO As String)
Dim hProcess As Long
Dim RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(COMANDO, vbMinimizedNoFocus))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Pausa 100
Loop While RetVal = STILL_ACTIVE
End Function
Dim Success%
Private Function FileExists%(fname$)
On Local Error Resume Next
Dim ff%
ff% = FreeFile
Open fname$ For Input As ff%
If Err Then
FileExists% = False
Else
FileExists% = True
End If
Close ff%
End Function
Private Sub Command1_Click()
1
'Se ejecuta el primer proceso
'
'
'
'
'
'Se ejecuta el proceso de MS-DOS
'
'
'
'Se prepara la función para comprobar la existencia de Archivo.txt
Success% = FileExists(App.Path & "\Archivo.txt")
'En caso de ser verdadero
If Success% = True Then
'Se ejecuta el proceso que deseo
Else
' Se regresa al primer proceso hasta que se encuentre el archivo
GoTo 1
End If
'Se continua con otro proceso
End Sub
Cita de: CeLaYa en 13 Octubre 2006, 14:37 PM
si lo que quieres hacer es esperar a que tu aplicacion espere a que termine la ejecucion de la ventana del DOS, te paso un tip, que aqui mismo me dieron:
en tu programa en lugar de usar el shell
usa esta funcion
ExeEspera "comando ms-dos"
Private Function ExeEspera(COMANDO As String)
Dim hProcess As Long
Dim RetVal As Long
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(COMANDO, vbMinimizedNoFocus))
Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Pausa 100
Loop While RetVal = STILL_ACTIVE
End Function
Dim Success%
Private Function FileExists%(fname$)
On Local Error Resume Next
Dim ff%
ff% = FreeFile
Open fname$ For Input As ff%
If Err Then
FileExists% = False
Else
FileExists% = True
End If
Close ff%
End Function
Private Sub Command1_Click()
1
'Se ejecuta el primer proceso
'
'
'
'
'
'Se ejecuta el proceso de MS-DOS
'
'
'
'Se prepara la función para comprobar la existencia de Archivo.txt
Success% = FileExists(App.Path & "\Archivo.txt")
'En caso de ser verdadero
If Success% = True Then
'Se ejecuta el proceso que deseo
Else
' Se regresa al primer proceso hasta que se encuentre el archivo
GoTo 1
End If
'Se continua con otro proceso
End Sub
Cita de: karmany en 21 Septiembre 2006, 17:46 PMBuena idea, gracias por tu comentario, me será de mucha ayuda. ¿Alguién tiene más sugerencias?
Puedes abrir el archivo en modo binario o aleatorio y comparar cuándo aparece la ",":
Open nombre_fichero For modo As
- nFichero
Utiliza Freefile para obterner el siguiente número disponible.
Después se me ocurre que cuando encuentre el programa una "," que mueva todo el contenido del archivo una posición a la izquierda, a partir de la "," encontrada.
Private Sub Command1_Click()
Dim Archivo As String, TODO As String, Busca As String
Dim NumArchivo As Integer
Archivo = "C:\archivo.txt"
NumArchivo = FreeFile()
Open Archivo For Input As #NumArchivo
TODO = input(LOF(1), 1)
busca = InStr(1, TODO, ",", vbTextCompare)
If busca > 0 Then
MsgBox "Encontrado"
End If
Close #NumArchivo
Text1.Text = TODO
End Sub
Citar
Campo1, MAS DATOS|Campo2|Campo3|Campo4|
Campo1|Campo2, MAS DATOS|Campo3|Campo4|
Campo1|Campo2|Campo3, MAS DATOS|Campo4|
Campo1|Campo2|Campo3|Campo4, MAS DATOS|
Citar
Campo1 MAS DATOS|Campo2|Campo3|Campo4|
Campo1|Campo2 MAS DATOS|Campo3|Campo4|
Campo1|Campo2|Campo3 MAS DATOS|Campo4|
Campo1|Campo2|Campo3|Campo4 MAS DATOS|
Cita de: hexabinarios en 12 Septiembre 2006, 22:29 PM
Hola Pandemonio, te cuento que puedes hacer esto con la propiedad Parent.
Te pido disculpas por no mostrarte un ejemplo de como hacerlo pero mi HD murio junto con todos mi codigos.
Se que se hacia algo asi:
Set DataGrid.Parent = SSTab
Si no te funciona con eso entonces se hace via APIS, con el Sendmessage y el SetParent como mensaje.
Si encuentro algo en mi backup lo posteo.
Saludos.