Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Sprawdzenie, czy program jest już uruchomiony
bogdan




Typ: neutral
Postów: 46
Zarejestrowany: Nov 2003
Sprawdzenie, czy program jest już uruchomiony

Witam.
Jak można sprawdzić czy program jest już uruchomiony ? Próbowałem takiego wyrażenia :
If (UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0) Then, ale nie na wszystkich platformach działa (pod NT wywala się błędem). Jeżeli ktoś zna inny sposób to byłbym wdzięczny za podpowiedź. Pozdrawiam Bogdan


_____________________________________________
Bogdan

17-03-2005 08:43
Pokaż profil bogdan  Wyślij email do bogdan   
Piotr T




Typ: neutral
Postów: 176
Zarejestrowany: May 2004

Proszę bardzo gotowy moduł sprawdzający

Module Module1
    REM Moduł uruchamiający program główny pod warunkiem
    REM że nie jest on już uruchomiony w procesie
    REM -----------------------------------------------------------------

    ' deklaracja pobierająca nazwę komputera
    Private KOMPUTER As String = System.Environment.MachineName.ToString
    REM -----------------------------------------------------------------



    Sub Main()
        'Application.DoEvents()
        REM wejście do funkcji sprawdzającej uruchomienie programu
        If Procesy(KOMPUTER) = False Then
            MessageBox.Show(Application.ProductName & " jest już uruchomiony", _
            System.Environment.UserDomainName.ToString & _
            " dla: " & System.Environment.UserName.ToString, _
            MessageBoxButtons.OK, MessageBoxIcon.Error)
        Else
            REM jeśli wszystko OK -  to uruchom program
            Dim Forma As New Form1()
            'Application.DoEvents()
            Application.Run(Forma)
        End If

    End Sub

    Private Function Procesy(ByVal _
    Nazwakomputera As String) As Boolean
        '--------------------------------------------------------------------------------------------
        REM ROLA: sprawdzenie czy w procesie program                 
        REM            nie jest uruchomiony więcej niż jeden raz           
        '--------------------------------------------------------------------------------------------
        REM deklaracja tablicy procesów
        Dim nazwaProcesu() As Process
        Dim licznik, P As Integer

        REM zerujemy licznik
        P = 0

        REM przypisujemy do zmiennej PRC procesy dla danej nazwy komputera
        nazwaProcesu = Process.GetProcesses(Nazwakomputera)

        REM włączamy przerwanie
        Application.DoEvents()

        REM kontrolujemy wszystkie procesy
        REM w tablicy
        For licznik = 0 To UBound(nazwaProcesu)

            REM jeśli nazwa procesu pokrywa się z nazwą programu
            REM to zwiększamy licznik o jeden
            If nazwaProcesu(licznik).ProcessName.ToString = Application.ProductName Then
                P += 1
            End If
        Next

        REM jeśli licznik będzie większy od jeden to znaczy że program jest już uruchomiony
        If P > 1 Then
            Return False
        Else
            Return True
        End If

    End Function


_____________________________________________
Visual Basic.NET - Mercedes dla programistów

17-03-2005 09:42
Pokaż profil Piotr T  Wyślij email do Piotr T   Odwiedź stronę Piotr T  
bogdan




Typ: neutral
Postów: 46
Zarejestrowany: Nov 2003

Dziękuję za szybką odpowiedź. Pozdrawiam Bogdan


_____________________________________________
Bogdan

17-03-2005 11:40
Pokaż profil bogdan  Wyślij email do bogdan   
Wszystkich odpowiedzi: 2 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1