AJUDA COM CODIGO [PROCESSO]

FROSTYNHO 03/01/2011 00:10:58
#360898
to usando o seguinte codigo num timer:

Dim myprocesses As Process()
Dim PROCESSOPENED As Boolean = False
myprocesses = Process.GetProcessesByName([Ô]calc[Ô])
If myprocesses.Length > 0 Then
msgbox([Ô]Rodando[Ô])
else
msgbox([Ô]Fechado[Ô])
end if


esse codigo verifica se um processo ta aberto ou nao, porem eu preciso que ele exiba a msgbox apenas 1 vez e que ainda continue verificando se o programa esta aberto, tentei de varias formas que achei que dava certo e nada...
alguem sabe uma maneira de fazer isso?
des de ja vlw galera
RODRIGOFERRO 03/01/2011 01:59:54
#360901
Resposta escolhida
vamos la eu fiz assim e deu certo aqui ! na primeira parte usando um botao !


Public Class Form1

Dim blnMensagemNegativo As Boolean
Dim blnMensagemPositivo As Boolean
Dim blnProcessoRodando As Boolean

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

For Each processo As Process In Process.GetProcesses()

[ô]Verifica se o Notepad esta aberto
If processo.ProcessName = [Ô]notepad[Ô] Then

[ô]diz que ele esta rodando e envia a mensagem
blnProcessoRodando = True
EnviaMensagem()
Exit Sub

End If

Next processo

[ô]se ele nao saiu da sub ele nao encontrou o processo entao ele diz que o processo nao esta rodando e chama as messagebox
blnProcessoRodando = False
EnviaMensagem()

End Sub

Private Sub EnviaMensagem()

If blnProcessoRodando = True And blnMensagemPositivo = False Then

[ô]aqui verifico se o processo esta rodando e se a mensagem nao foi dada
[ô]dai eu troco os valores, mensagem positivo sim e mensagem negativo nao
MessageBox.Show([Ô]O processo esta rodando !!![Ô])
blnMensagemPositivo = True
blnMensagemNegativo = False

End If

If blnProcessoRodando = False And blnMensagemNegativo = False Then

[ô]aqui verifico se o processo não esta rodando e se a mensagem nao foi dada
[ô]dai eu troco os valores, mensagem negativo sim e mensagem positivo nao
MessageBox.Show([Ô]O processo não esta rodando !!![Ô])
blnMensagemNegativo = True
blnMensagemPositivo = False

End If

End Sub

End Class



e se for trabalhar com ele dentro de um timer, coloque assim



Public Class Form1

Dim blnMensagemNegativo As Boolean
Dim blnMensagemPositivo As Boolean
Dim blnProcessoRodando As Boolean

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Timer1.Start()

End Sub

Private Sub EnviaMensagem()

Timer1.Stop()

If blnProcessoRodando = True And blnMensagemPositivo = False Then

[ô]aqui verifico se o processo esta rodando e se a mensagem nao foi dada
[ô]dai eu troco os valores, mensagem positivo sim e mensagem negativo nao
Application.DoEvents()
MessageBox.Show([Ô]O processo esta rodando !!![Ô])
blnMensagemPositivo = True
blnMensagemNegativo = False

End If

If blnProcessoRodando = False And blnMensagemNegativo = False Then

[ô]aqui verifico se o processo não esta rodando e se a mensagem nao foi dada
[ô]dai eu troco os valores, mensagem negativo sim e mensagem positivo nao
Application.DoEvents()
MessageBox.Show([Ô]O processo não esta rodando !!![Ô])
blnMensagemNegativo = True
blnMensagemPositivo = False

End If

Timer1.Start()

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

For Each processo As Process In Process.GetProcesses()

[ô]Verifica se o Notepad esta aberto
If processo.ProcessName = [Ô]notepad[Ô] Then

[ô]diz que ele esta rodando e envia a mensagem
blnProcessoRodando = True
EnviaMensagem()
Exit Sub

End If

Next processo

[ô]se ele nao saiu da sub ele nao encontrou o processo entao ele diz que o processo nao esta rodando e chama as messagebox
blnProcessoRodando = False
EnviaMensagem()

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Timer1.Stop()

End Sub

End Class


o Codigo esta comentado.

Abraços
FROSTYNHO 03/01/2011 02:34:12
#360903
cara é isso mesmo!!! muito obrigado!
Tópico encerrado , respostas não são mais permitidas