السلام عليكم
اردت ان اعرف كيف يمكن عمل جمع للprocess و ال threads الموجودة على الكمبيوتر
انا لاحظت وجود Api
Process32First
Process32Next
ولكن لا اعرف استخدامهم
وكيف يكمن اغلاقها واغلاق اى برنامج من رقم ال process
وبالتوفيق للجميع
وشكرا مقدما
السلام عليكم
اردت ان اعرف كيف يمكن عمل جمع للprocess و ال threads الموجودة على الكمبيوتر
انا لاحظت وجود Api
Process32First
Process32Next
ولكن لا اعرف استخدامهم
وكيف يكمن اغلاقها واغلاق اى برنامج من رقم ال process
وبالتوفيق للجميع
وشكرا مقدما
لو استعملت محرك البحث للمنتدى لوجدت ماتريد
اخى الكريم
انا طلبت طريقة تجميع كل ال process اللى بتم فى الكمبيوتر وعرفت الطريقة الحمد لله عن طريق دوال processfirst32 ,processnext32
انا اريد كيفية اغلاق process من برنامج فى vB
عن طريق رقم ID او عن طريق اسمه زى ال task bar تماما
وشكرا للرد على الموضوع
هذا الموضوع مكرر في أغلب أقسام اللغات في الفريق وفي أغلب المنتديات العربية وغير العربية ! وما زال هناك من يسأل نفس السؤال -الذي تساقطت أسنانه - في عام 2007 ..
إستخدم التابع TerminateProcess والذي يتطلب الحصول على Process Handle وهذا يمكنك الحصول عليه بإستدعاء التابع OpenProcess بشرط وجود Process ID. لاحظ أنك قد تحتاج لبعض الصلاحيات Privilege أثناء التعامل مع بعض الـ Processes (راجع MSDN بخصوص هذه الصلاحيات ) ..
أما إن كان لديك إسم البرنامج فعليك الحصول على الـ Process ID من خلال العملية السابقة Process Enumration والتي إستخدمت فيها Tool Help API باستدعاء التوابع (processfirst32 ,processnext32 ) ...
اقتباسزى ال task bar تماما
تقصد Task Manager ؟ هو لا يستخدم ToolHelp API بل يستدعي Native API ..
"First they ignore you, then they laugh at you, then they attack you, then you win"
===
اقتباسحُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا
هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا
الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا
القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ
لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ
البردوني "أبو تمام وعروبة اليوم" 1971
===
اقتباسعبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــمو تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم
ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم
أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟
ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا
البردوني "نحن و الحاكمون "
اولا الموضوع لم تتساقط اسنانه ولاحاجة ولو فعلا انتهى كان فى حد رد عليا من الاول او كنت وجدت موضوع بالسابق مكتوب دا يدل ان القليل اللى عارف الموضوع
وثانيا الموضوع دا مهم بالنسبة لى جدا
وشكرا لردك
بالنسبة ل API اللى انت ذاكرها انا حصلت على كل شئ خاص بال process سؤاء process ID او اسم البرنامج
ومحتاج بس انى اقفل اى برنامج من خلال اى حاجة منهم ID , process name
وشكرا ليك وجارى التجربة
جربت ولم تفلح اى تجربة لاغلاق اى PROCESS عن طريق الدوال السابقة
انا استدمتها كالاتى
بعد الحصول على ال HANDLE
من خلال
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long Private Declare Function GetCurrentProcess Lib "kernel32" () As Long Const PROCESS_QUERY_INFORMATION = 1024 Const PROCESS_VM_READ = 16 Private Sub Form_Load() Dim uHOS, hosam uHOS = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, (pROCESSid)) hosam GetExitCodeProcess(uHOS, 1) TerminateProcess uHOS, hosam End Sub
دى الطريقة اللى انا استخدمتها ولم تفلح
وياريت المساعدة الضرورية فى الموضوع دا
أنا أعرف طريقة سهلة بالwmi
On Error Resume Next
For Each Process In GetObject("winmgmts://").ExecQuery("select * from Win32_Process where Name='" & ProcessName & "'")
Process.Terminate
NextProcessName هو اسم البرنامج الذي تريد انهائه
اقتباساولا الموضوع لم تتساقط اسنانه ولاحاجة ولو فعلا انتهى كان فى حد رد عليا من الاول او كنت وجدت موضوع بالسابق مكتوب دا يدل ان القليل اللى عارف الموضوع
لا . الموضوع فعلاً تساقطت أسنانه لانه موضوع ليس بالجديد وقد قيل فيه ما يكفي منذ عدة سنوات و أي محاولة بحث بسيط في النت ستجد معها العديد من النتائج لما تريد .. حتى في منتديات الفريق العربي تم مناقشة مثل هذا الموضوع من قبل كم سنة ....
ما علينا ....
عندما تريد إستخدام أي تابع من توابع الـ API ينبغي عليك أن تقرأ بتمعن ما ذكر في MSDN عنها و حين تواجه مشكلة بعد إستخدامها فعند ذلك يجب عليك أن تعيد النظر بكل كلمة مذكورة في MSDN ...
إذاً دعنا سوية نرجع لما ذكر هنا TerminateProcess
اقتباسhProcessA handle to the process to be terminated.
The handle must have the PROCESS_TERMINATE access right. For more information, see Process Security and Access Rights.
في حين أن الكود الذي إستخدمته
uHOS = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, (pROCESSid))
أود الإشارة لنقطة ذكرتها في ردي السابق وهي أنه مع بعض الـ process وإن إستخدم الطريقة السابقة فانك ستحتاج لصلاحيات أكثر حتى تتمكن من إنهاءها ...
---
طبعاً هناك عدة طرق لإنهاء process ما ومنها ما ذكرها الأخ DreamNet .
تم تعديل هذه المشاركة بواسطة cipher في 17 يونيو 2007 في 15:32
"First they ignore you, then they laugh at you, then they attack you, then you win"
===
اقتباسحُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا
هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا
الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا
القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ
لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ
البردوني "أبو تمام وعروبة اليوم" 1971
===
اقتباسعبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــمو تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم
ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم
أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟
ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا
البردوني "نحن و الحاكمون "
هذا الموضوع مغلق.