سفارش تبلیغ
بررسی مالکیت دامنه هاست ایران
دانشمند هنگامی که نمی داند، از فراگرفتن خجالت نکشد . [امام علی علیه السلام]

آموزش ویژوال بیسیک با حامد

 
 

برای اینکه بخواهید از اجرای مجدد یک برنامه جلوگیری کنید میتوانید از کد زیر استفاده کنید:

Private Sub Form_Load()
   If App.PrevInstance Then
       MsgBox "This program already in use.", vbCritical
       End
   End If
End Sub

ولی کد بالا مشکلی که داره اینه که وقتی شما برنامه رو به یک پوشه یا شاخه دیگر کپی می‌کنید، و یا اسم آن را عوض میکنید برنامه باز هم اجرا میشه و کد کارایی نداره. برای حل این مشکل می‌توانید از کد زیر استفاده کنید. البته این کد، کد حرفه‌ای نیست. ولی برای جلوگیری کردن از اجرای مجدد مناسب است: 

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long

Private Sub Form_Load()
Dim haN As Long, l As Long, s As String

   If App.PrevInstance Then
       MsgBox "This program already in use.", vbCritical
       End
   End If

haN = Val(GetSetting("Project1", "Project1", "Project1"))

If haN <> Me.hwnd And haN <> 0 Then
    l = GetWindowTextLength(haN) + 1
    s = String(l, 0)
    GetWindowText haN, s, l
    s = Left(s, l - 1)

    If s = Me.Caption Then
       MsgBox "This program already in use.", vbCritical
       End
    End If

End If

SaveSetting "Project1", "Project1", "Project1", Str(Me.hwnd)

End Sub

در این کد عنوان فرم خیلی تاثیر داره. باید سعی کنید از عنوانی برای فرم خود استفاده کنید، که در برنامه‌ی دیگری استفاده نشده باشد.







بازدیدهای امروز: 1  بازدید

بازدیدهای دیروز:6  بازدید

مجموع بازدیدها: 17745  بازدید


» ?پیوندهای روزانه «
» لوگوی دوستان من «
» فهرست موضوعی یادداشت ها «
» اشتراک در خبرنامه «