Jump to content
Weasel

Verificar se uma aplicação é aberta

Recommended Posts

Weasel

Boas!

É o seguinte, é possível fazer uma aplicação em VB que verifique quando uma certa aplicação (sei o nome do executável, e esse não muda) para quando essa aplicação for fechada o meu programa VB executar uma certa acção ?

Se sim, como posso fazer isso ?

A ideia era o programa em Vb corria quando o computador é iniciado, e ficava "á espera" por exemplo só com um icon na Tray, e quando o programa XPTO for aberto...e depois fechado, o meu programa em VB vái executar uma certa acção.

Espero ter-me explicado bem :P

Obrigado!


Knowledge to the masses


Share this post


Link to post
Share on other sites
pedrotuga

Isso não tem directamente a ver com o executavel em si.

Terás que aceder ao sistema operativo e verificar se determinado processo está activo.

Share this post


Link to post
Share on other sites
Weasel

Isso não tem directamente a ver com o executavel em si.

Terás que aceder ao sistema operativo e verificar se determinado processo está activo.

Eu falei no executável, pois o nome do processo vai ser o nome do executável...pelo menos neste caso é...

Mas como eu posso verificar se o processo está activo, e mais importante quando é fechado novamente, porque eu só quero "agir" depois do programa ser terminado.


Knowledge to the masses


Share this post


Link to post
Share on other sites
Weasel

Eu podia por um timer a correr os processos abertos para verificar se o processo XPTO está a correr, mas isso não irá ser pesado para o sistema ?

Não existe maneira de monitorizar apenas o processo que quero ? (mesmo antes de ele estar aberto).


Knowledge to the masses


Share this post


Link to post
Share on other sites
Ziwdon

Basta veres quais os processos que estao a correr quando se inicia o PC e defines uma variavel boolean que indica se o teu programa esta a correr (que será False no inicio). Com um timer, vais verificando os processos que estao a correr e quando a tua aplicação for aberta a variavel boolean passa para True. Continuas com o timer, e quando o processo ja nao existir, como a variavel boolean está em True significa que o processo ja esteve aberto. Depois fazes executar a acção que queres.

Por exemplo...para veres se um processo esta a correr podes fazer:

Dim activo as Boolean
Dim myprocesses As Process()
myprocesses = Process.GetProcessesByName("NOME DO PROCESSO*") 'obter processos com o nome X
If myprocesses.Length > 0 Then 'se for maior que 0 então existem processos com o nome X
    activo = True 'está a correr
Else
    activo = False 'não está a correr
End If

' * O nome do processo não pode conter o '.exe'
Espero ter ajudado.

"Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)

Share this post


Link to post
Share on other sites
Weasel

Era como pensava fazer mas desconhecia esse comando para obter pelo nome, ia fazer com ciclo for, mas assim é muito mais simples e rápido, obrigado!


Knowledge to the masses


Share this post


Link to post
Share on other sites
Gooden

BOm podes por um timer e usar o code do Buttpt sempre a verificar.

Boa sorte e se kizeres manda feedback :P

Share this post


Link to post
Share on other sites
jhonatanxq
Em 21/09/2007 às 20:40, Ziwdon disse:

Basta veres quais os processos que estao a correr quando se inicia o PC e defines uma variavel boolean que indica se o teu programa esta a correr (que será False no inicio). Com um timer, vais verificando os processos que estao a correr e quando a tua aplicação for aberta a variavel boolean passa para True. Continuas com o timer, e quando o processo ja nao existir, como a variavel boolean está em True significa que o processo ja esteve aberto. Depois fazes executar a acção que queres.

Por exemplo...para veres se um processo esta a correr podes fazer:


Dim activo as Boolean
Dim myprocesses As Process()
myprocesses = Process.GetProcessesByName("NOME DO PROCESSO*") 'obter processos com o nome X
If myprocesses.Length > 0 Then 'se for maior que 0 então existem processos com o nome X
    activo = True 'está a correr
Else
    activo = False 'não está a correr
End If

' * O nome do processo não pode conter o '.exe'
Espero ter ajudado.

posso procurar mais de um processo ao mesmo tempo? estou tentando e está complicado digamos que preciso procurar 5 processos

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.