Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

duduml

saber se a aplicação esta a ser usada

Mensagens Recomendadas

duduml

Pessoal,

há maneira de saber se um programa esta a ser utilizado ou não???  :eek:

Já pesquisei, no entanto...nada encontrei....  :nono1:

Obrigado!

CUMPS


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Se a ideia é evitar que se possa correr mais do que uma instância, na página "My Project", algures, tens um visto que diz: "Make single instance application", ou algo parecido.

Check it.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

:hmm:

Não, a ideia é mesmo ver se o utilizador esta a usar a aplicação, se não, bloquear ou terminar a sessão...mas só preciso mesmo de saber, como detectar isso...

CUMPS


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Sendo assim, acho que podes ir lá testando processos:

        If Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName).Length > 1 Then
            MsgBox("Já estou a correr. Bochecho!")
            End
        End If

Se ao apanharmos todos os processos com o nome do processo actual (o da aplicação) e essa array nos for devolvida com mais do que 1 elemento significa que já lá anda um a mais: o actual, mais o que já lá estava = 2


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

Sendo assim, acho que podes ir lá testando processos:

        If Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName).Length > 1 Then
            MsgBox("Já estou a correr. Bochecho!")
            End
        End If

Se ao apanharmos todos os processos com o nome do processo actual (o da aplicação) e essa array nos for devolvida com mais do que 1 elemento significa que já lá anda um a mais: o actual, mais o que já lá estava = 2

Lamento, mas o array não passa de 0...e não aparece "Bochecho!"...

Já tentei inventar, mas não resolvo nada...

CUMPS


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tuntankamon

O que pretendes fazer é detectar se o utilizador está a utilizar a aplicação, ou seja clicar com o rato, mover o rato, ou inserir dados com o teclado...

Se é isso não é tão simples como isso, deves ter algumas variáveis (flags) de controlo, que verificam se existiu movimento do rato na tua aplicação, e se foi pressionada alguma tecla. Deves ter uma outra que define o tempo de inactividade máximo e outra que veifica o tempo decorrido desde o último movimento, e que em cada movimento,key press, faças reset à variavel que define o tempo decorrido...

Não sei se deu para entender  :)

Basicamente:

Utilizador faz login,

Inicias um timer a correr de 5 em 5 segundos por exemplo

tempoMax= 3 minutos (180 segundos)

tempoDecorrido = 0

Controlas os eventos MouseMove e KeyPress/Down no(s) Form(s) se ocorrem

tempoDecorrido = 0

Por cada tick (5 segundos)

tempoDecorrido += 5

Se tempoDecorrido >= tempoMax Então Fazes Logout

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

É isso mesmo que eu quero....mas é um bocado trabalhoso estar a fazer isso tudo...dessa maneira...

era por isso que eu queria algo do género que o Ribeiro mandou...

Obrigado  r00tfixxxer!!! :)

CUMPS


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tuntankamon

Mas o que o ribeiro disse era só para verificar se a aplicação está a correr, não estou a ver como sabes se o utilizador está a utilizar ou não...  :hmm:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

o que eu percebi do código do ribeiro é que quando o array apssa-se de 1, significava que haveria mais que um processo da aplicação a correr, logo, estava em uso...

era muito melhor! imagina projectos gigantes....fazer pelo teu método, é complicadíssimo...

Cumps


"use windows, você merece!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Tuntankamon

Não te estou a perceber...

É assim, se queres limitar mais do que uma instância da aplicação a correr, tens a opção no Project Settings, e não precisas de nada desse código, que o que faz é verificar se existe mais do que um processo da mesma aplicação a correr.

Se queres bloquear a aplicação devido a inactividade, tens a minha opção.

Se queres terminar a aplicação por ocupar demasiada memória, isso já é outra conversa.

Por isso o que prentedes fazeR?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duduml

"Se queres bloquear a aplicação devido a inactividade, tens a minha opção."

é isso mesmo....mas não há mesmo outra maneira???

"É assim, se queres limitar mais do que uma instância da aplicação a correr, tens a opção no Project Settings, e não precisas de nada desse código, que o que faz é verificar se existe mais do que um processo da mesma aplicação a correr." não posso usar isto para o que quero??

CUMPS


"use windows, você merece!"

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.