View Full Version : بستن يك برنامه ديگر
aleas2
چهارشنبه 01 خرداد 1392, 10:27 صبح
دوستان این سوالی میپرسم احتمالش خیلی زیاده که قبلا در موردش زیاد بحث شده باشه متن مناسبی به ذهنم نرسید که جستجو کنم !
1- چطور میتونم توسط یه برنامه یه برنامه ديگه رو کامل ببندم؟(لطفا توضیحات کامل ممنون میشم)
2- چطور میتونم چک کنم ببینم برنامه مورد نظرم در حال اجرا هست یا نه؟
amiralex
چهارشنبه 01 خرداد 1392, 10:47 صبح
در مورد سوال اولت تاپيكهاي زيادي وجود داره
اما درمورد سوال دومت من هم با برنامم همين مشكل و داشتم كه وقتي يوزرهاي مختلفي لوگين ميكردن مشخص نبود چه كسي الان لوگين كرده و برنامه توسط چه كساني در حال اجراست
بنابراين اين كار رو كه در اين تاپيك توضيح دادم رو انجام دادم و به نتيجه مورد نظرم رسيدم
http://barnamenevis.org/showthread.php?395700-%D8%A8%D8%B3%D8%AA%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AF%D8%B1-%D8%AA%D9%85%D8%A7%D9%85-%D8%B3%D9%8A%D8%B3%D8%AA%D9%85-%D9%87%D8%A7-2
aleas2
چهارشنبه 01 خرداد 1392, 10:58 صبح
برنامه من در شبکه نیست در یک کامپیوتر هست، فقط میخوام بفهمم در حال حاضر برنامه مورد نظرم در حال اجرا هست یا نه
vbhamed
چهارشنبه 01 خرداد 1392, 12:17 عصر
سلام
اگر برنامتون فرم داشته باشه و Caption فرم مشخص باشه ميشه فهميد و بستش
Private Sub Form_Load()
On Error Resume Next
Dim i%
For i = 0 To 20
AppActivate "Calculator"
If Err Then
MsgBox "برنامه باز نيست"
Exit For
End If
DoEvents
Next
If Err = 0 Then
SendKeys "%{F4}"
DoEvents
End If
End Sub
تابع AppActivate يك برنامه رو از روي Caption اون فعال ميكنه و اگر چنين برنامه اي وجود نداشته باشه خطا ميده كه با استفاده از مديريت خطا ميتونيم اين موضوع رو نيز بفهميم
كار دستور DoEvents و حلقه For اينه كه چند بار كار فعالسازي رو انجام ميدن تا مطمئن بشيم آخه ممكنه در لحظه چك كردن سيستم شديدا مشغول باشه
مبین رنجبر
چهارشنبه 01 خرداد 1392, 12:28 عصر
راه حل تکنیکی استفاده از API است. :
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_CLOSE = &H10
Dim CloseIt As Long
CloseIt = FindWindow(vbNullString, "Calculator To Be Closed")
PostMessage CloseIt, WM_CLOSE, CLng(0), CLng(0)
اگر هم برنامه مورد نظر فرم و Caption نداره میتونید با استفاده از Tasklist لیست پروسس های فعال رو بگیرید و اگر در لیست وجود داشت با استفاده ار دستور Taskkill اون رو end کنید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.