بستن برنامه با استفاده از مسیر
باسلام
من چطور میتونم یه نرم افزار رو با استفاده از مسیر نرم افزار ببندم؟
توجه داشته باشید که چون برنامه در هنگام خروج log تولید میکنه واسه همین نمیخوام برنامه از طریق task manager کیل یا بسته بشه
تاکیدم بر روی مسیر برنامه هست چون از این برنامه دو تا رو سیستم نصب شده و هنگامیکه هر دو برنامه باز هست من میوام یکی از اونهارو با استفاده از مسیر برنامه ببندم
ممنون میشم راهنماییم کنید.
نقل قول: بستن برنامه با استفاده از مسیر
نقل قول:
نوشته شده توسط
ali190
باسلام
من چطور میتونم یه نرم افزار رو با استفاده از مسیر نرم افزار ببندم؟
توجه داشته باشید که چون برنامه در هنگام خروج log تولید میکنه واسه همین نمیخوام برنامه از طریق task manager کیل یا بسته بشه
تاکیدم بر روی مسیر برنامه هست چون از این برنامه دو تا رو سیستم نصب شده و هنگامیکه هر دو برنامه باز هست من میوام یکی از اونهارو با استفاده از مسیر برنامه ببندم
ممنون میشم راهنماییم کنید.
اول لیست پروسه های در حال اجرا رو بدست میارید. بعد سعی میکنید بازشون کنید که ببینید مسیر فایل اجرایی شون چیه.
هر کدوم که با دسترسی مناسب کار ما باز شدنی باشن رو باز می کنید و چک می کنید که آیا مسیر فایل اجرایی شون اونی که میخواهید هست یا نه.
اگر همون مسیر بود بهش فرمان بسته شدن میدید، بزرگی و کوچیکی حروف در مسیر مهم نیست ولی حتما مسیر کامل باشه چون دارید با مسیر کامل مقایسه می کنید، در مسیر نباید موارد نسبی مثل \..\ باشه :
Private Const MAX_PATH As Long = 260
Private Const PROCESS_QUERY_INFORMATION As Long = &H400
Private Const PROCESS_VM_READ As Long = &H10
Private Const PROCESS_TERMINATE As Long = &H1
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Function GetModuleFileNameExW Lib "psapi.dll" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFilename As Long, ByVal nSize As Long) As Long
Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function EnumProcesses Lib "psapi.dll" (ByRef lpidProcess As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32.dll" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Sub CloseApp(ByVal path As String)
Dim idProcess() As Long
Dim cbNeeded As Long
Dim cbSize As Long
Dim i As Integer
Dim lastIndex As Integer
Dim handle As Long
Dim filenameLength As Long
ReDim idProcess(0 To 1000)
Dim filenameBuffer() As Byte
Dim filename As String
Do
cbSize = 4 * (UBound(idProcess) + 1)
If EnumProcesses(idProcess(0), cbSize, cbNeeded) = 0 Then
MsgBox "Error"
Exit Sub
End If
If cbNeeded < cbSize Then
Exit Do
End If
ReDim idProcess(0 To UBound(idProcess) + 1000)
Loop While True
lastIndex = cbNeeded \ 4 - 1
For i = 0 To lastIndex
handle = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ Or PROCESS_TERMINATE, 0, idProcess(i))
If handle <> 0 Then
ReDim Preserve filenameBuffer(0 To MAX_PATH * 2)
filenameLength = GetModuleFileNameExW(handle, 0, VarPtr(filenameBuffer(0)), MAX_PATH * 2)
If filenameLength > 0 Then
ReDim Preserve filenameBuffer(0 To filenameLength * 2 - 1)
filename = filenameBuffer
If StrComp(filename, path, vbTextCompare) = 0 Then
TerminateProcess handle, 0
End If
End If
CloseHandle handle
End If
Next
End Sub
Private Sub Command1_Click()
CloseApp "c:\Windows\System32\calc.exe"
End Sub
نقل قول: بستن برنامه با استفاده از مسیر
سلام
کدی که گذاشتید کار نمیکنه
نقل قول: بستن برنامه با استفاده از مسیر
نقل قول:
نوشته شده توسط
ali190
سلام
کدی که گذاشتید کار نمیکنه
با برنامه ماشین حساب ویندوز امتحان کردید یا مسیر خاص برنامه خودتون؟
نقل قول: بستن برنامه با استفاده از مسیر
برنامه ماشین حساب رو هم نمیبنده باهمون مسیر
نقل قول: بستن برنامه با استفاده از مسیر
نقل قول:
نوشته شده توسط
ali190
برنامه ماشین حساب رو هم نمیبنده باهمون مسیر
مسیر برنامه ماشین حساب که در سیستم شما همونه؟ درسته؟
می توانید بین سطر TerminateProcess handle, 0 و If قبلش یک MsgBox با متن دلخواه قرار بدید که ببینیم پروسه رو پیدا می کنه ولی نمیتونه ببندتش یا اصلا پیداش نمی کنه.
نقل قول: بستن برنامه با استفاده از مسیر
نقل قول: بستن برنامه با استفاده از مسیر
برای بستن برنامه با کدهای api می شه مثل hwnd و یا عنوان پنجره برنامه! ولی احتمال می دم خواسته شما اینه که برنامتون زمانی اجراست دوبار اجرا نشه ؟! ک فک کنم باید پراپرتیس برنامه رو دستکاری کنی! چون توی دات نت این مورد توی پراپرتیس پروژه است.
اگر هم که منظورتون بستن برنامه غیر هست که کدهای api بیشترین کاربرد رو داره. (FindWindow, ...)
https://barnamenevis.org/showthread....ه-خارجی
http://www.vbforums.com/showthread.php?515476-RESOLVED-VB6-Close-window-by-its-window-name
حالا سوال اینجاست که چرا از طریق آدرس؟!؟
نقل قول: بستن برنامه با استفاده از مسیر
سلام
چون من از اون برنامه در دو جای ویندوزم نصب کردم و میخوام فقط یک برنامه که طبیعتا با آدرسش منحصر به فرد میشه بسته بشه