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

Cybernavigator

[vb.net 2005] vigiar janelas

7 mensagens neste tópico

boas noits

como faco isto?

ver se uma janela está aberta (ver se o programa esta a correr) se sim nao faz nd, se nao, abre o programa. eu sei abrir o programa, n sei eh ver se esta aberto.

obgdo desde ja.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

   Dim procs As Process()
        Dim proc As Process
        Dim i As Integer = 0

        ' get an array of all processes named "app" on server "serverName"



        procs = Process.GetProcessesByName("sigdin 2003")

        ' go through each proc named "app" and wait for it to exit
        For Each proc In procs

            i += 1
            If i > 1 Then

                MessageBox.Show("O SIGDIN já se encontrar a correr." & vbCrLf & "E aconcelhavel que não use dois ao mesmo tempo", "SIGDIN", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
                proc.Kill()
                Application.ExitThread()
                Application.Exit()
            End If
        Next

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O meu prob é um pouco mais complicado do k isto, pk o prgrama abre duas janelas, e ambas têm o nome parecido...

O stress eh k o nome do programa eh "c:\pasta\bot\card.exe"

e o nome da outra é "c:\pasta\bot\cardgli.exe", pensei em criar um batch e definir o titulo, mas nao sei pk o vb nao me ker abrir o batch...

Então adiei um pouco este projecto...

Olha, já agora vê se me consegues ajudar no outro tópico de criar imagens, tá a dar cabo de mim, não saio da sepa torta...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O melhor nesse caso é criares um mutex e procurares por ele quando inicias o programa.

Tens aqui um exemplo.

EDIT: só reparei agora que queres VB.NET. Tens aqui outro exemplo em VB.NET.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado, vou postar aki o source k está lá no site... Está muito verde pra eu perceber  :cheesygrin: (ok piada fraca)

'DLL Function Calls

Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (ByVal lpMutexAttributes As Long, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

'variable constant to match if the mutex exists
Private Const ERROR_ALREADY_EXISTS = 183&

'Application Variable Declarations
Public Const AppVer = "MyApp v1.1"
Dim mutexvalue As Long

'*the following code would go in the starting function of your application
'either the main() or form_load() depending on how your application works

'Create an individual mutex value for the application
mutexvalue = CreateMutex(ByVal 0&, 1, AppVer)

'If an error occured creating the mutex, that means it
'must have already existed, therefore your application
'is already running
If (Err.LastDllError = ERROR_ALREADY_EXISTS) Then

'Inform the user of running the same app twice
MsgBox "The application is already running."

'Terminate the application via the reference to it, its hObject value
CloseHandle mutexvalue
End If 

*Editado*

Fui só eu k não percebi nada disto?  :nono1: :rant_01:

*editado*

E eu só reparei agora k editas-te, deixo aki o novo code pra ver se pesco mais alguma coisa. (corrijo, pra ver se pesco alguma coisa  :wallbash: )

'DECLARATIONS
Imports System.Threading

'Form level declaration
Dim objMutex As Mutex

'CODE

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

        objMutex = New Mutex(False, "SINGLE_INSTANCE_APP_MUTEX")
        If objMutex.WaitOne(0, False) = False Then
            objMutex.Close()
            objMutex = Nothing
            MessageBox.Show("Instance already running")
            End
        End If
        'if you get to this point it's frist instance
           'continue with app

     
    End Sub

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