AGUARDAR PROCESSAMENTO DE BAT
O seu deu isso também FGBSYSTEMS?
E só pra ressaltar, o meu não cria arquivo...
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
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...
bom, pra mim é o fim dessa tristeza de backup MySQL, vê se serve pra você... abraços.
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.
ADILSOO, pra mim ainda nao deu certo. Ele cria o arquivo mas nao salva os dados.
Como voce chamou o arquivo que seu sistema criou ?
eu chamo o arquivo bat da forma normal.. shell caminho.. so issoo... qualquer coisa posta aii..
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... >.<
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...
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...
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.
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.
Amigo, fiz isso e mesmo assim nao funcionou :(
Aqui eu crio o arquivo.
E aqui o timer
Mesmo assim nao funciona.. O interval do timer esta 500.
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.
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..
A tela da uma piscadinha mas nao consigo nem ver o bat rodando.
Estranho..
Tópico encerrado , respostas não são mais permitidas