COMO EVITAR CHAMAR UM ARQUIVO EXTERNO .BAT?

JALEXM 04/09/2012 08:46:34
#409114
Olá.
Tenho um arquivo .BAT com algumas poucas linhas que obtém a hora do servidor para sincronizar.
Estou tendo problemas em chamar esse arquivo a partir da aplicação, possivelmente por questões de permissão/segurança.
Se executo o .BAT diretamente, ele funciona, mas chamá-lo de dentro da aplicação gera um erro.
O que eu queria saber é se existe a possibilidade de inserir esses poucos comandos diretamente no código do VB6, sem precisar chamar um arquivo externo.
Alguém sabe essa?
Obrigado.
VELDRAME 04/09/2012 09:48:54
#409119
Faz assim, direto no fonte.

Em um modulo (por exemplo)


[txt-color=#0000f0]Public Type[/txt-color] SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
[txt-color=#0000f0]End Type[/txt-color]

[txt-color=#0000f0]Public Declare Function[/txt-color] SetSystemTime [txt-color=#0000f0]Lib [/txt-color][Ô]kernel32[Ô] (lpSystemTime [txt-color=#0000f0]As [/txt-color]SYSTEMTIME) [txt-color=#0000f0]As [/txt-color]Long

[txt-color=#0000f0]Public Sub[/txt-color] Atualiza_Sistema()

[txt-color=#0000f0]Dim [/txt-color]lpSystemTime [txt-color=#0000f0]As [/txt-color]SYSTEMTIME
[txt-color=#007100][ô]Conecta no servidor e pega a Data e Hora[/txt-color]
1 Set rs = OpenRecordset([Ô]Select Getdate()[Ô]) [ô]Pega a hora do servidor
2 wDataServidor = rs(0)[txt-color=#007100] [ô]Armazena na variável[/txt-color]
[ô]Atualiza a Data
3 lpSystemTime.wYear = Format(rs(0), [Ô]yyyy[Ô])
4 lpSystemTime.wMonth = Format(rs(0), [Ô]MM[Ô])
5 lpSystemTime.wDay = Format(rs(0), [Ô]dd[Ô])
6 [ô]SetSystemTime lpSystemTime

[txt-color=#007100] [ô]Atualiza a Hora[/txt-color]
7 lpSystemTime.wHour = Format(rs(0), [Ô]HH[Ô]) + 3
8 lpSystemTime.wMinute = Format(rs(0), [Ô]NN[Ô])
9 lpSystemTime.wSecond = Format(rs(0), [Ô]ss[Ô])
10 lpSystemTime.wMilliseconds = 0

11 SetSystemTime lpSystemTime

[txt-color=#0000f0]End Sub[/txt-color]
JALEXM 04/09/2012 10:54:19
#409121
Citação:

:
Faz assim, direto no fonte



Interessante. Vou testar.
Mas não tem mesmo jeito de incluir os comandos do .BAT direto no fonte?
é que dentro do .BAT tem apenas uma linha:
net time \\server3 /set /yes
e ficaria bem mais simples.
Tem jeito?
MARCELO.TREZE 04/09/2012 14:40:44
#409134
Resposta escolhida
o que esta linha faz derrepente tem como sim
JALEXM 04/09/2012 14:55:02
#409135
Citação:

:
o que esta linha faz derrepente tem como sim



Então, qual a sua ideia?
MARCELO.TREZE 04/09/2012 15:00:15
#409136
JALEXM tenta isso usando o shell no vb6 assim


shell([Ô]net time \\server3 /set /yes[Ô])
ADILSOO 04/09/2012 17:44:10
#409159
Amigo, ele não chama ou da erro ou a tela só pisca? Tenta colocar um pause da linha seguinte pra ver oque aparece, assim fica mais facil saber oque ta acontecendo.
JALEXM 05/09/2012 08:05:29
#409182
Citação:

:
JALEXM tenta isso usando o shell no vb6 assim


shell([Ô]net time \server3 /set /yes[Ô])



MARCELO-TREZE, sua dica funcionou perfeitamente.
Vou também testar a do amigo VELDRAME, que também é interessante e pode ser útil em outras oportunidades.
JALEXM 05/09/2012 08:08:37
#409183
Citação:

:
Amigo, ele não chama ou da erro ou a tela só pisca? Tenta colocar um pause da linha seguinte pra ver oque aparece, assim fica mais facil saber oque ta acontecendo.



Desculpe, o que você está querendo dizer?
Tópico encerrado , respostas não são mais permitidas