COMO EVITAR CHAMAR UM ARQUIVO EXTERNO .BAT?
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.
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.
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]
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]
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?
o que esta linha faz derrepente tem como sim
Citação::
o que esta linha faz derrepente tem como sim
Então, qual a sua ideia?
JALEXM tenta isso usando o shell no vb6 assim
shell([Ô]net time \\server3 /set /yes[Ô])
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.
Citação::
JALEXM tenta isso usando o shell no vb6 assimshell([Ô]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.
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