AGUARDAR PROCESSAMENTO DE BAT

ADILSOO 29/06/2012 18:41:48
#405225
O seu deu isso também FGBSYSTEMS?
ADILSOO 29/06/2012 18:47:11
#405227
E só pra ressaltar, o meu não cria arquivo...
ADILSOO 29/06/2012 19:54:31
#405232
Cara, depois de tanto procurar achei aqui, ele não aguarda, mas verifica se está aberto, então nesse caso é a mesma coisa, kkkkk, bom eu consegui aqui, criei o .BAT, escrevi, chamei ele, fiz o backup, verifico se está aberto, se sim não faço nada, e se não está mais aberto excluo o .BAT, bom, como esse pessoal já me ajudou muito não custa compartilhar.. vamos la..

em um Módulo coloque
 Option Explicit
Private Const TH32CS_SNAPPROCESS As Long = 2
Private Const MAX_PATH As Long = 260
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * MAX_PATH
End Type
Private Declare Function CreateToolhelp32Snapshot Lib [Ô]Kernel32[Ô] (ByVal lFlags As Long, _
ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib [Ô]Kernel32[Ô] (ByVal hSnapShot As Long, _
typProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib [Ô]Kernel32[Ô] (ByVal hSnapShot As Long, _
typProcess As PROCESSENTRY32) As Long
Private Declare Sub CloseHandle Lib [Ô]Kernel32[Ô] (ByVal hPass As Long)

Public Function AppIsRunning(ByVal AppName As String) As Boolean
Dim Process As PROCESSENTRY32
Dim hSnapShot As Long
Dim r As Long
AppName = LCase$(AppName)
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0&)
If hSnapShot <> -1 Then
Process.dwSize = Len(Process)
r = Process32First(hSnapShot, Process)
Do While r
If LCase$(Left$(Process.szExeFile, InStr(1, Process.szExeFile, vbNullChar) - 1)) = AppName Then
AppIsRunning = True
r = False
End If
r = Process32Next(hSnapShot, Process)
Loop
CloseHandle hSnapShot
End If
End Function

no botão que vai disparar o Backup coloque todo o processo do backup de escrever o .BAT e executa-lo, e no final coloque o timer pra rodar
aí o timer que vai ficar verificando se está executando ou não, e deixa ele rodando com o if.. coloque assim no timer...

 If AppIsRunning([Ô]cmd.exe[Ô]) = False Then
Kill App.Path & [Ô]\Backup\BackupTemp.bat[Ô]
Timer1.Interval = 0
MsgBox [Ô]Backup realizado com sucesso![Ô]
End If

bom, pra mim é o fim dessa tristeza de backup MySQL, vê se serve pra você... abraços.
FBGSYSTEMS 30/06/2012 10:54:21
#405247
ADILSOO, pra mim ainda nao deu certo. Ele cria o arquivo mas nao salva os dados.
FBGSYSTEMS 30/06/2012 10:58:31
#405248
Como voce chamou o arquivo que seu sistema criou ?
ADILSOO 30/06/2012 23:21:14
#405265
eu chamo o arquivo bat da forma normal.. shell caminho.. so issoo... qualquer coisa posta aii..
FBGSYSTEMS 02/07/2012 12:06:41
#405315
Fiz assim tambem e nao deu certo. Ainda nao funcionou. E novamente se eu paro o sistema via black point e executo [ô]na mao[ô] ele funciona... >.<
ADILSOO 02/07/2012 13:36:53
#405321
Cara, acho meio estranho, pois o primeiro jeito não estava dando aqui também, mas esse novo jeito funcionou perfeitamente, pode ser algo que voce esteja colocando fora do lugar aí, deixa eu ver se consigo explicar passo a passo..

Em um módulo coloque assim...
 Option Explicit
Private Const TH32CS_SNAPPROCESS As Long = 2
Private Const MAX_PATH As Long = 260
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * MAX_PATH
End Type
Private Declare Function CreateToolhelp32Snapshot Lib [Ô]Kernel32[Ô] (ByVal lFlags As Long, _
ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib [Ô]Kernel32[Ô] (ByVal hSnapShot As Long, _
typProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib [Ô]Kernel32[Ô] (ByVal hSnapShot As Long, _
typProcess As PROCESSENTRY32) As Long
Private Declare Sub CloseHandle Lib [Ô]Kernel32[Ô] (ByVal hPass As Long)

Public Function AppIsRunning(ByVal AppName As String) As Boolean
Dim Process As PROCESSENTRY32
Dim hSnapShot As Long
Dim r As Long
AppName = LCase$(AppName)
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0&)
If hSnapShot <> -1 Then
Process.dwSize = Len(Process)
r = Process32First(hSnapShot, Process)
Do While r
If LCase$(Left$(Process.szExeFile, InStr(1, Process.szExeFile, vbNullChar) - 1)) = AppName Then
AppIsRunning = True
r = False
End If
r = Process32Next(hSnapShot, Process)
Loop
CloseHandle hSnapShot
End If
End Function


No botão que voce vai aperta lá chamado [Ô]EFETUAR BACKUP[Ô] faz assim....

voce somente cria o .BAT escreve e chama ele como se fosse chamar qualquer arquivo .EXE, normal, Shell caminho do arquivo
ome_do_arquivo
blz até aí tudo pronto...
a hora que voce chamar ele na linha de baixo voce coloca o timer pra roda... é aí que ta o pulo do gato...kkk

No timer voce coloca assim...
 If AppIsRunning([Ô]cmd.exe[Ô]) = False Then
Kill App.Path & [Ô]\Backup\BackupTemp.bat[Ô]
Timer1.Interval = 0
MsgBox [Ô]Backup realizado com sucesso![Ô]
End If


Explicando: O Timer vai ficar ferificando se o CMD.EXE está em execucao, se sim, não faz nada, agora se não estiver aí já quer dizer que o .BAT já acabou de fazer o Backup, nesse caso ele entra na linha Kill e exclui o .BAT e logo em seguida voce para o Timer, no meu caso eu coloquei o Timer com [Ô]1[Ô] assim é instantaneo, e só pra testa eu botei um Pause no .BAT, ele não exlcuiu enquanto estava em execucão, logo em seguida que eu pressionei uma tecla e o .BAT fechou, pronto, Backup Efetuado com Sucesso!!!... bom esse foi exatamente do jeito que eu fiz, tenta fazer um simples assim, pra ver se vai...

aaaa.. depois se voce puder me ajudar em como o BAT salvar o Backup junto com o sistema, com o VB é App.Path, agora com o Bat eu não sei..

Mas Blz, tenta aí, qualquer coisa posta o erro que deu,,, abracos.
FBGSYSTEMS 02/07/2012 23:13:42
#405383
Amigo, fiz isso e mesmo assim nao funcionou :(

Aqui eu crio o arquivo.

If MsgBox([Ô]Deseja realmente realizar o backup completo do banco de dados ?[Ô], vbYesNo, [Ô]ATENÇÃO![Ô]) = vbYes Then
Set dsConfig = New ADODB.Recordset
dsConfig.Open [Ô]select caminhodesktop, bkpdestino, nomebd from configuracao[Ô], con, adOpenKeyset, adLockOptimistic
If Not dsConfig.EOF Then
If IsNull(dsConfig!caminhodesktop) Or IsNull(dsConfig!bkpdestino) Then
MsgBox [Ô]Configurações do backup não encontradas. Favor contate o suporte para corrigir este problema.[Ô], vbInformation, [Ô]ATENÇÃO![Ô]
Exit Sub
End If
Open dsConfig!caminhodesktop & [Ô]\backup.bat[Ô] For Output As #1
Print #1, [Ô]cd C:\Program Files\MySQL\MySQL Server 5.5\bin[Ô]
varSegundaLinha = [Ô]mysqldump [Ô] & dsConfig!nomebd & [Ô] > [Ô] & dsConfig!bkpdestino & [Ô]database.sql -h localhost -u root -p1tenisdemesakbca[Ô]
Print #1, varSegundaLinha
Close #1
Shell (dsConfig!caminhodesktop & [Ô]\backup.bat[Ô])
Timer2.Enabled = True
[ô] aa = [Ô]acabou[Ô]
End If
End If


E aqui o timer

  If AppIsRunning([Ô]cmd.exe[Ô]) = False Then

Kill (dsConfig!caminhodesktop & [Ô]\backup.bat[Ô])
MsgBox [Ô]Backup realizado com sucesso![Ô], vbInformation, [Ô]ATENÇÃO![Ô]
Timer2.Enabled = False
End If


Mesmo assim nao funciona.. O interval do timer esta 500.
FBGSYSTEMS 02/07/2012 23:40:38
#405384
Esta bem esquisito isso. De novo tento executar o bat [ô]na mao[ô] e ele funciona, porem usando o shell nao funciona
A tela da uma piscadinha mas nao consigo nem ver o bat rodando.
Estranho..
Página 2 de 4 [31 registro(s)]
Tópico encerrado , respostas não são mais permitidas