• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

electric

[VB.NET 2005] Executar automaticamente na CMD

17 mensagens neste tópico

Boas para kem meu ajudou no meu post antigo fica a saber da historia mas para akeles k não eu vou contar :)

eu desenvolvi 1 programa que no fundo tinha como função procurar o programa no pc

depois tinha 1 timer k no fim do tempo se esgotava o programa que tinha escolhido arrancava ( programa ou outro)

agora eu keria saber como faço para que ao fim do tempo determinado o programa execute algo na linha de comandos....

pra remediar o k fiz foi criar 1 *.bat com o comando que pretendia e depois o programa executava esse bat e tava feito mas eu pretendia algo automatico porque a mt gente que nem sabe editar o bat e neste caso e penso k em mts é sempre presiso colocar o nome do PC e este varia logo eu tinha que ter isso td numa linha em que eu pedi-se o nome do pc numa tbx essa tbx iria meter o valor numa var e depois eu teria o comando e era so ajustar a var a essa linda ... confuso n é ;)

se alguem souber de algo ja sabe :P

[]'s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes ser mais específico,

não entendo o que pretendes fazer, abrir a consola do windows e colocar-lhe comandos é isso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes ser mais específico,

não entendo o que pretendes fazer, abrir a consola do windows e colocar-lhe comandos é isso?

Sim eu kero k o timer kando acabe o tempo execute 1 comando a nivel de consola .. sera algo para acabar com 1 processo neste caso

Isso é uma aplicação com forms correcto?

Explora o System.Console

sim 1 form .. trabalho simples anbiente grafico :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pah é assim se isto parecer parvo é normal é k so tive as bases de VB.net :) inda tou a aprender mas por min :\

eu puz  o seguinte

System.Console.WriteLine("TASKKILL.exe....")

meu raciocinio foi k ia escrever isso na consola e logo killar o processo mas n :\

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estive a rever o teu código para ver se entendia, já experimeitei esta solução que te vou dizer e funciona

se queres fechar o processo que criate basta

P.kill()

agora como está o teu código actualmente terás de criar um novo timer

talvez fosse melhor retirares o código do timertick para os butões de forma a só necessitares de um único tmr

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pah o meu objectivo n é acabar com o meu programa mas sim com 1 determinado programa...

como por exemplo se colocares este codigo na cmd

TASKKILL.exe /S electricPC/F /IM programa1.exe /T

mata o programa1 do pc electricPC 

so k eu punha isso num file criado por min *.bat k escolhia e mandava executar kando acabava o tempo

só k eu queria por isso de modo automatico pois o programa so servira pra esse mxm programa

mas onde ta o nome do pc penso k terei de por 1 variavel onde sera previamente atribuido o nome do pc do user

de uma tbx pra variavel e da variavel ra cmd :\

pah espero ter sido melhor a explicar desta X lol mas é k vim a pouco do liceu e tive a marrar lol da nisso :)

[]'s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas o p.kill() não acaba com o teu programa mas sim com o programa que foi aberto pela variável p

é verdade à pouco esqueci-me que tens de por a varável p como public

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tão sendo assim eu tinha de por o programa a abrir logo pelo meu programa e depois criar outro timer onde tara esse p.kill é isso k keres dizer certo ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu pensei que fosse para fechar o programa que foi aberto pelo timer

Se assim for

Podes aproveitar o mesmo timer para abrir e fechar o programa

vou ver se posto o code inteiro aqui

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

aproveitando o teu código:

Public Class Form2
    Dim P As New Process

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Resultado As DialogResult
        Resultado = DlgoFicheiro.ShowDialog
        If (Resultado = Windows.Forms.DialogResult.OK) Then
            TbxFicheiro.Text = DlgoFicheiro.FileName
        End If


    End Sub

    Private Sub Tmr_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmr.Tick
        
        LblDescontar.Text = Val(LblDescontar.Text) - 1

        If LblDescontar.Text = "0" Then
            tmr.Stop()
            Try
                If (TbxFicheiro.Text <> "") Then
                    P.StartInfo.FileName = TbxFicheiro.Text
                    P.Start()
                    P.WaitForInputIdle()
                    LblDescontar.Text = "15"
                End If
            Catch ex As Exception
                MessageBox.Show("Ficheiro não encontrado")
            End Try

        End If


    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        tmr.Start()


    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        tmr.Stop()
    End Sub

   

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        tmr2.Start()


    End Sub



    Private Sub CbxTempos_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CbxTempos.SelectedIndexChanged
        LblDescontar.Text = CbxTempos.Text
    End Sub

    Private Sub tmr2_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmr2.Tick

        LblDescontar.Text = Val(LblDescontar.Text) - 1


        If LblDescontar.Text = "0" Then



            P.Kill()
            tmr2.Stop()
            LblDescontar.Text = "15"
        End If

    End Sub

    Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        LblDescontar.Text = "15"
    End Sub
End Class

assim abre e encerra a aplicação

mas têm de ser dois timers, tinhas razão

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

1 form

2 timer

1 cbx

3 btn

hum vou ver se percebo isso melhor xD é k o meu ojectivo é aprender ;) + alguma coisa :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas tive a ver hj o codigo e n funcionou :\ e mxm k funcione dame a impressão k o k vai fazer é abrir e fechar logo de seguida :\

penso k ha e deve haver maneira + simples so  k inda n me dei ao trabalho de pensar mt nisso pk tenho outros trabalhitos :\

vou ver se penso melhor nisso e quando axar solução falo aqui pro ppl

[]'s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

afinal bastante simples e eu aki com perguntas :\

ora bem retirei esta parte do codigo do timer

P.StartInfo.FileName = TbxFicheiro.Text
            P.Start()

e pula no btn de escolha de caminho

depois bastou meter o p.kill() no tmr

logo acabei por continuar com 1 unico timer

o programa que abro é killado assim k o tempo acaba e ta feito :P

bem + uma parte do meu trabalho realisada :) obrigado pelas dicas :P

[]'s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

oi tou a apanhar do ar mas o teu problema é controlar os processos ??

Dim arrPROCESSOS() As Process 'crias um array de processos

Try
         arrPROCESSOS = Process.GetProcessesByName(nome do processo)
         If arrPROCESSOS(0).Responding = True Then
            If arrPROCESSOS.GetUpperBound(0) > 0 Then
               MsgResultStyle = MsgBoxStyle.OKOnly + MsgBoxStyle.Critical
               MsgResult = MsgBox("encontrei o processo")
               End 'fecha a aplicação ...
            End If
         End If
      Catch ex As Exception
         MsgBox(ex.ToString)
      End Try

embora eu esteja a usar isto para descobrir se existe uma 2ª instancia da minha aplicação, como ja reparaste podes usar o array de processos para tudo o qye queiras fazer .. espero ter ajudado ,,,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Relembro que a secção Dúvidas e ajudas é para isso mesmo que serve! ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

oi tou a apanhar do ar mas o teu problema é controlar os processos ??

Dim arrPROCESSOS() As Process 'crias um array de processos

Try
         arrPROCESSOS = Process.GetProcessesByName(nome do processo)
         If arrPROCESSOS(0).Responding = True Then
            If arrPROCESSOS.GetUpperBound(0) > 0 Then
               MsgResultStyle = MsgBoxStyle.OKOnly + MsgBoxStyle.Critical
               MsgResult = MsgBox("encontrei o processo")
               End 'fecha a aplicação ...
            End If
         End If
      Catch ex As Exception
         MsgBox(ex.ToString)
      End Try

embora eu esteja a usar isto para descobrir se existe uma 2ª instancia da minha aplicação, como ja reparaste podes usar o array de processos para tudo o qye queiras fazer .. espero ter ajudado ,,,

ya tenho de testar isso mas pra minha 1ª versão optei por 1 programa k killa  o que apaga como ja podes ter visto

isso k meteste ai penso k seja so mesmo pra 1 determinado programa ( pendente do nome do programa que introduzimos)

obrigado secalhar inda vou usar isso na minha V2.0

[]'s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora