[VB6] Executar comandos DOS - Visual Basic Clássico - Portugal-a-Programar
[VB6] Executar comandos DOS
August 18, 2005 in Visual Basic Clássico
Pessoal, sabem como é que posso executar comandos em DOS em vb?
Por exemplo, executar o comando echo olá. Abrir uma janela do cmd, a dizer Olá.
Agradecia ajuda.. thx.
Boas e bem vindo antes de mais.
http://www.portugal-a-programar.hugosoft.net/viewtopic.php?t=51 aqui nesse pequeninos programas tens la isso algures, ve lá se encontras. Se não deres com isso ou logo á noite com mais tempo logo vejo e logo te digo
para fazeres ixo e so fazeres.... o comando shell ("")
Agradecia que desses uma vista de olhos, e depois me dissesses.. thx. 🙂
Não dá, porque os comandos "Echo"; "Start" são comandos internos do Dos, (isto no Windows XP) se fosse no 98 provavelmente dava..
Exprimenta a chamar o CMD.exe e enviares os comandos com SendKey.
Já consegui fazer o que queria!
nao tinha tido tempo de explicar bem ... a usar akele shell tens k xamar um programa um exe neste caso do msdos k no xp e o cmd.exe e dpx pode la atribuir argumentos dentro... desse shell ... so te dei mssm um comando nada mais ...
entao e como e k fizeste ja agora para o ppl focar a saber
Pois, é como é que metes os atributos? Pela lógica usa-se
shell("cmd echo Olá")
Mas assim só abre o cmd.. Ou o comando echo ou start, tem-se que meter entre qualquer caracter?
Eu queria usar o ms-dos por causa do comando /wait que ele possui, mas acabei por concluir que dá para fazer isso em vb.
Estou a fazer um programa com actualizações do WinXP, saquei um script de um site "shellandwait", que executa o 2º shell apenas quando o 1º acabar, era isso que queria fazer..
Mas estou com mais problemas.. aqui está o código.
ShellAndWait App.Path & ("\WindowsXP-KB873333-x86-PTG.exe /M /Q")
ShellAndWait App.Path & ("\WindowsXP-KB873339-x86-PTG.exe /M /Q")
ShellAndWait App.Path & ("\WindowsXP-KB883939-x86-PTG.exe /M /Q")
Até aqui tudo bem.. mas se meto mais 'exe's' a abrir, dá-me um erro no Windows "A estação de trabalho vai ser encerrada", e fecha-me os programas todos que tenho aberto, inclusive o .exe das actualizações, mas se for ao taskmanager dá para ver o processo do exe aberto, e das actualizações ou seja, ele continua a instalar as actualizações mas com o programa fechado (ou pelo menos não está visivel).. Sabem alguma alternativa de fazer isto, ou alguma ideia de onde vem o erro?
Pelo que percebi o que queres fazer é executar uma aplicação apartir de uma aplicação de VB.NET e aguadares que esta termine para executar outra e assim sucessivamente.
Aconselho-te a usares o Shell, uma vez que este pode aguardar que a aplicação seja encerrada, assim como definir um timeout e o tipo de focus.
Shell ( Pathname, EstiloDaJanela, Wait, Timeout)
Se for necessário podes colocar parametros pra instalação silenciosa no pathname.
Em relação ao erro há que ter em conta que as actualizações por vezes necessitam que todos os programas estejam encerrados. Se a actualização necessitar de reiniciar então tens outros problemas. Nesse caso aconselho-te a guardar a informação das actualizações já instaladas e a colocares a aplicação no arranque para que esta corra a actualização seguinte no próximo arranque.
que vb usas?
Se for o ultimo podes usar:
Console.WriteLine("olá")
Hey, desde já obrigado pela ajuda.
Também dá pra aplicar esse comando "wait" no shell atravez do vb6? É o que uso..
Ok, exprimentei assim:
Shell App.Path & ("\WindowsXP-KB873339-x86-PTG.exe /M /Q"), vbMinimizedNoFocus, wait
Mas deu erro.. :cry:
Eu já testei as actualizações todas num .bat, e actualizava na boa..
Alguem..? :?
O código que te indiquei é de VB.NET pelo que no VB6 não funciona, uma vez que o comando shell foi melhorado VB.NET.
Estive a pesquisar e quase todas as soluções passam por monitorizar os processos, o que é um método complexo.
Vou tentar obter algumas informações sobre uma forma mais simplificada, mas por agora não sou grande ajuda.