View Full Version : سوال: اجرا نشدن دو فرم همزمان
Ninja-Assassin
چهارشنبه 13 شهریور 1392, 16:56 عصر
ســـــلام
من میخوام یه برنامه رو که exe میکنیم فقط یکبار اجرا شه یعنی همزمان دو بار اجرا نشه
من با این کد اینکارو کردم..
Private Sub Form_Initialize()
If App.PrevInstance = True Then
MsgBox "This Program Is Running", 16, "Error"
End
End If
End Sub
ولی وقتی برنامه رو یه جا دیگه کپی میکنم یا همون جا کپی میکنم نامشو عوض میکنم دو تا اجرا میشه
من میخوام با کپی کردن تغییر نام اصلا برنامه دو بار اجرا نشه
ممنوووووون
Mr'Jamshidy
چهارشنبه 13 شهریور 1392, 17:09 عصر
فکر میکنم مشکل شما با جستجو حل میشه
مدت زیادی نیست در این مورد بحث شده و به نتیجه هم رسیده
raminshahmoradi
چهارشنبه 13 شهریور 1392, 17:38 عصر
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (lpMutexAttributes As Any, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
Private Declare Function ReleaseMutex Lib "kernel32" (ByVal hMutex As Long) As Long
Const ERROR_ALREADY_EXISTS = 183&
Private Sub Form_Load()
Call run
End sub
Sub run()
Dim hmt&
hmt = CreateMutex(ByVal 0&, 1, App.Title)
If Err.LastDllError = ERROR_ALREADY_EXISTS Then
msgbox " barname egra ast "
ReleaseMutex hmt
CloseHandle hmt
End
End If
mehran901
پنج شنبه 14 شهریور 1392, 16:40 عصر
و البته به شکل زیر هم میشه :
Option Explicit
Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Const InstanceCode = "A8F500EA:D54F:210F:ED0A:F4A5A20C038C" 'instance delkhah
Public Function PrevInstance() As Boolean
If FindWindow(vbNullString, ByVal InstanceCode) Then
PrevInstance = True
Exit Function
End If
CreateWindowEx 0&, "STATIC", InstanceCode, 0&, 0&, 0&, 0&, 0&, 0&, 0&, App.hInstance, 0&
PrevInstance = False
End Function
Private Sub Form_Load()
If PrevInstance Then
MsgBox "Another instance is running.", vbCritical, "Error"
End
End If
End Sub
Ninja-Assassin
شنبه 16 شهریور 1392, 13:28 عصر
ممنووووووون الان دیگه دو بار اجرا نمیشه مرسیییییی واقعا :X
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.