منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : [عنوان معدل] طلب كود process list
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
اريد كود لو فى برنامج معين مفتوح مروعى يظهر رساله كذا.exe مفتوح اقفل كذا.exe وى حاول مره اخرى وى المشروع مايفتحش لاغايت ماالبرنامج التانى يقفل
اخي الكريم حاول ان تبحث عن
process list vb.net
او
تبحث في فكرة API Findwindow
http://www.pinvoke.net/default.aspx/user32.findwindow
™ like VB ™ كتب :اريد كود لو فى برنامج معين مفتوح مروعى يظهر رساله كذا.exe مفتوح اقفل كذا.exe وى حاول مره اخرى وى المشروع مايفتحش لاغايت ماالبرنامج التانى يقفل

هل تقصد تمنع تشغيل متعدد لنفس التطبيق بمعنى Single Instance به GUID متطابق...
اذا نعم فهناك خاصية موجودة ضمن خصائص مشاريع vb.net في التاب الخاص Application ضع اشارة في صندوق Make single instance application

كود :
[align=left]Private Shared Sub Main()
    Using mutex As New Mutex(False, "Global\" + appGuid)
        If Not mutex.WaitOne(0, False) Then
            MessageBox.Show("Instance already running")
            Return
        End If
        Application.Run(New Form1())
    End Using
End Sub
[/align]
قم بفتح وليكن Notepad ثم قم بتشغيل البرنامج المرفق سوف يطلب منك غلق ال Notepad أولا
المثال مصمم ب 2012 إذا لم يكن لديك قم بفتح form1.vb والإطلاع على الكود
من بعد أذنكم جميعاً
أخي أستبدل كود Form1 بالكود التالي (طبعاً مع أستبدال كذا.exe بأسم البرنامج)
كود :
Public Class Form1


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Do Until IsProcessRunning("كذا.exe") = False
            If MessageBox.Show("Please close كذا.exe before opening this program.", "Error!", MessageBoxButtons.OKCancel, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1) = Windows.Forms.DialogResult.Cancel Then
                End
            End If
        Loop
    End Sub


    Public Function IsProcessRunning(ByVal processName As String) As Boolean
        Dim Prc As Process() = Process.GetProcesses()
        processName = processName.Replace(".exe", "")
        Dim running As Boolean = False
        For Each P As Process In Prc
            If P.ProcessName = processName Then
                running = True
                Exit For
            End If
        Next
        Return running
    End Function
End Class
Raggi Tech كتب :اخي الكريم حاول ان تبحث عن
process list vb.net
او
تبحث في فكرة API Findwindow
http://www.pinvoke.net/default.aspx/user32.findwindow
جزاك الله كل خير اخى
newbie2vb كتب :هل تقصد تمنع تشغيل متعدد لنفس التطبيق بمعنى Single Instance به GUID متطابق...
اذا نعم فهناك خاصية موجودة ضمن خصائص مشاريع vb.net في التاب الخاص Application ضع اشارة في صندوق Make single instance application

كود :
[align=left]Private Shared Sub Main()
    Using mutex As New Mutex(False, "Global\" + appGuid)
        If Not mutex.WaitOne(0, False) Then
            MessageBox.Show("Instance already running")
            Return
        End If
        Application.Run(New Form1())
    End Using
End Sub
[/align]
جزاك الله كل خير اخى
amgadtamer كتب :قم بفتح وليكن Notepad ثم قم بتشغيل البرنامج المرفق سوف يطلب منك غلق ال Notepad أولا
المثال مصمم ب 2012 إذا لم يكن لديك قم بفتح form1.vb والإطلاع على الكود

Aly El-Haddad كتب :من بعد أذنكم جميعاً
أخي أستبدل كود Form1 بالكود التالي (طبعاً مع أستبدال كذا.exe بأسم البرنامج)
كود :
Public Class Form1


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Do Until IsProcessRunning("كذا.exe") = False
            If MessageBox.Show("Please close كذا.exe before opening this program.", "Error!", MessageBoxButtons.OKCancel, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1) = Windows.Forms.DialogResult.Cancel Then
                End
            End If
        Loop
    End Sub


    Public Function IsProcessRunning(ByVal processName As String) As Boolean
        Dim Prc As Process() = Process.GetProcesses()
        processName = processName.Replace(".exe", "")
        Dim running As Boolean = False
        For Each P As Process In Prc
            If P.ProcessName = processName Then
                running = True
                Exit For
            End If
        Next
        Return running
    End Function
End Class
جزاك الله كل خير اخى
تم الحل
يا اخي تفضل هذا الكود المختصر من برمجتي
طبعا هذا الكود تضعه في الفروم لود
قم بتشغيل موجة الاوامر ثم شغل برنامجك
كود :
Dim pro() As Process = System.Diagnostics.Process.GetProcessesByName("cmd")
        Dim check As Boolean = pro.Length

        If check = True Then
            MsgBox(" الرجاء اغلاق موجه الاوامر ")
            Me.Close()
        Else

        End If