اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search
SEMO.Pa3x

use api function TerminateProcess to kill process - استخدام دالة TerminateProcess لقتل العمليات

Recommended Posts

السلام عليكم، كما في العنوان شرح استخدام دالة TerminateProcess
لقتل العمليات..

اولا: الدوال المُستخدم بالشرح
TerminateProcess , FindWindow , GetWindowThreadProcessId , CloseHandle , OpenProcess


تصريح الدالة:

Declare Auto Function TerminateProcess Lib "KERNEL32.DLL" (ByVal hProcess As IntPtr, ByVal uExitCode As UInteger) As Boolean

 

الدالة تحتاج الى براميترات 2
الاول: مقبض العملية
الثاني: قيمة رقمية، نضع 0 لتمثل قتل العملية

فيكون الاستدعاء بالشكل العام هكذا

 

TerminateProcess(hwd, 0)


hwd= تمثل المقبض


------------------------------------------------------------
كيفية الحصول على مقبض للعمليات ؟؟
------------------------------------------------------------

هناك عدة طرق اسهلها، استخدام دالة FindWindow

تصريح الدالة:

 

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer

 


استدعاء الدالة:

 

Dim hwd As IntPtr = FindWindow(Nothing, "WindowTitle")

 

الدالة تحتاج براميترات 2
الاول: اسم كلاس النافذة بامكانك كتابة استخراج اسم الكلاس بواسطة اداة AutoIt Window Info
او اداة ++Spy التي تأتي مع فيجوال دوت نت.

البراميتر الثاني: عنوان النافذة (العنوان المكتوب فوق النافذة للبرنامج)

بأمكانك كتابة احد هذه البراميترات وتعويض البراميتر الثاني بـ Nothing
 

----------------------------------------------------------------------------------------------------

او استخدام طريقة اكثر بساطة وبدون api
------------------------------------------------------------

 

For Each x As Process In Process.GetProcessesByName("NameYourProcess")
MsgBox(x.Handle)
Next

 

بعد ان تعلمنا كيفية جلب المقبض للعملية ، نأتي الى تكملة شرحنا في استدعاء الدالة
صرح الدوال الاتية مع الستركشر الخاص بدالة OpenProcess

 

Declare Auto Function TerminateProcess Lib "KERNEL32.DLL" (ByVal hProcess As IntPtr, ByVal uExitCode As UInteger) As Boolean
 <DllImport("user32.dll", SetLastError:=True)> _
 Private Shared Function GetWindowThreadProcessId(ByVal hwnd As IntPtr, ByRef lpdwProcessId As Integer) As Integer
 End Function
 Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
 Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As ProcessAccessFlags, bInheritHandle As Boolean, processId As UInt32) As IntPtr
 <DllImport("kernel32.dll", SetLastError:=True)> _
 Private Shared Function CloseHandle(ByVal hHandle As IntPtr) As Boolean
 End Function
 <Flags>
 Public Enum ProcessAccessFlags As UInteger
 All = &H1F0FFF
 Terminate = &H1
 CreateThread = &H2
 VirtualMemoryOperation = &H8
 VirtualMemoryRead = &H10
 VirtualMemoryWrite = &H20
 DuplicateHandle = &H40
 CreateProcess = &H80
 SetQuota = &H100
 SetInformation = &H200
 QueryInformation = &H400
 QueryLimitedInformation = &H1000
 Synchronize = &H100000
 End Enum

 

استدعاء الدالة وقتل العملية:
 

 

Dim TPID, TPHWD As Integer
 
 ' Get the process ID.
 TPID = 0
 GetWindowThreadProcessId(HWND, TPID) ' Replace HWND with your handle process
 
 ' Open the process.
 TPHWD = OpenProcess(ProcessAccessFlags.Synchronize Or ProcessAccessFlags.Terminate, 0, TPID)
 
 ' Terminate the process.
 TerminateProcess(TPHWD, 0)
 
 ' Close the process.
 CloseHandle(TPHWD)

 

استبدل HWND بمقبض العملية اي:
 

 

Dim TPID, TPHWD As Integer
 
  ' Get the process ID.
  TPID = 0
  GetWindowThreadProcessId(FindWindow(Nothing, "Untitled - Notepad"), TPID) ' Replace HWND with your handle process
 
  ' Open the process.
  TPHWD = OpenProcess(ProcessAccessFlags.Synchronize Or ProcessAccessFlags.Terminate, 0, TPID)
 
  ' Terminate the process.
  TerminateProcess(TPHWD, 0)
 
  ' Close the process.

 


على سبيل المثال طبقت على المفكرة
اي سؤل اني موجود
تحياتي

 

 

تم بحمد الله ، SEMO.Pa3x

:38:

  • Thanks 1

شارك هذه المشاركه


رابط المشاركه
شارك

السلام عليكم ورحمة الله 

موضوع في غاية الاهمية 

انا عندي كود يقوم بإغلاق جميع العمليات اللي شغاله على الحاسب تمام .. وده كويس وفعال // لكن انا عايز الغي كل العمليات على الجهاز ما عدا كذا وكذا وكذا .

مع العلم اني اشتغل على الاكسيس 

 

شارك هذه المشاركه


رابط المشاركه
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • محتوي مشابه

    • بواسطه adnan gharbi
      السلام عليكم ورحمة الله
      كيف يمكن كتابة كود بحث بين تاريخين في الريبورت فيور علما اني استخدمت هذا الكود ولم ينجح
      Me.FixReportBindingSource.Filter = " FixDate >= '" & dtFrom.Value & "' and FixDate <= '" & dtTo.Value & "'"
    • بواسطه SEMO.Pa3x
      السلام عليكم ورحمة الله وبركاته..
      اليوم سأشرح لكم الدالة StrConv ولأي الامور تستخدم.
      الدالة حصرا تتعامل مع النصوص ( String ) ووضيفتها التحويل بين الاحرف الانجليزية ( كبير , صغير )
       
      الدالة تأخذ 3 براميترات:
      البراميتر القيمة الوصف vbUpperCase 1 تحويل جميع الحروف الى حروف كبيرة vbLowerCase 2 تحويل جميع الحروف الى حروف صغيرة vbProperCase 3 تحويل الحرف الاول من كل كلمة الى كبير وباقي حروف الكلمة الى حروف صغيرة vbUnicode 64 تحويل النص الى سلسلة الـ UNICODE vbFromUnicode 128 تحويل النص من سلسلة UNICODE الى تنسيقات اخرى مثال:
      StrConv ("officena semo pa3x", 1) Result: "OFFICENA SEMO PA3X" StrConv ("OFFICENA SEMO PA3X", 2) Result: "officena semo pa3x" StrConv ("OFFICENA SEMO PA3X", 3) Result: "Officena Semo Pa3x"  
      الاستخدام في الاستعلام يكون:

       
      الاستخدام في داخل محرر الـ VBA يكون:
      StrConv([CategoryName],3)  
      تحياتي للجميع..
      SEMO.Pa3x
       
    • بواسطه SEMO.Pa3x
      السلام عليكم ورحمة الله وبركاته..
      في الوضع الطبيعي الاكسس يعطينا فقط مجموعة الوان عند تنسيقها في الكود
       
      Constant Value Description vbBlack 0x0 Black vbRed 0xFF Red vbGreen 0xFF00 Green vbYellow 0xFFFF Yellow vbBlue 0xFF0000 Blue vbMagenta 0xFF00FF Magenta vbCyan 0xFFFF00 Cyan vbWhite 0xFFFFFF White  
      ولكن كثيراً ما نريد ان نقوم بإختيار الواناً غير التي موجودة في الاعلى مثلا اللون الفسفسوري غير موجود في القائمة.
      قمنا باخذ قيمة اللون الفسفوري من احد برامج تعديل الصور وليكن مثلا الفوتوشوب
      لكن احيانا تواجهنا مشاكل ورسائل مزعجة من الاكسس عند وضع الالوان عن طريق VBA
      مثلا انا دائما ماكانت تصادفني رسالة مزعجة Expected Array عندما اقوم بوضع اللون بالصورة الاتية:
       
      txt_name.BackColor = RGB(20,30,60) تظهرلي هذه الرسالة:
       

       
      فكرت في تحويل اللون من HEX الى OLE ، وقد تم تغيير اللون بنجاح وبدون اي رسائل خطأ
       
      Public Function HEX2OLE(ByVal hexValue As String) As Long Dim R, G, B As Long If Left(hexValue, 1) = "#" Then hexValue = Replace(hexValue, "#", "") R = CByte("&H" & Left(hexValue, 2)) G = CByte("&H" & Mid(hexValue, 3, 2)) B = CByte("&H" & Mid(hexValue, 5, 2)) HEX2OLE = CLng(R + (G * 256) + (B * 65536)) End Function  
      بالتوفيق للجميع.
      HEX_2_OLE.accdb
    • بواسطه SEMO.Pa3x
      السلام عليكم, هذا جدول يوضح لكم تنسيقات الارقام في الاكسس كالعملة وغيرها. ارجو ان يفيدكم.
       
      انواع التنسيقات
      "5" التنسيق لعدد موجب
      "-5" التنسيق لعدد سالب
      "0.5" التنسيق لعدد عشري
      "0" التنسيق الخاص بالصفر
      Zero-length string ("")
      5
      -5
      0.5
      0
      0
      5
      -5
      1
      0
      0.00
      5.00
      -5.00
      0.50
      0.00
      #,##0
      5
      -5
      1
      0
      $#,##0;($#,##0)
      $5
      ($5)
      $1
      $0
      $#,##0.00;($#,##0.00)
      $5.00
      ($5.00)
      $0.50
      $0.00
      0%
      500%
      -500%
      50%
      0%
      0.00%
      500.00%
      -500.00%
      50.00%
      0.00%
      0.00E+00
      5.00E+00
      -5.00E+00
      5.00E-01
      0.00E+00
      0.00E-00
      5.00E00
      -5.00E00
      5.00E-01
      0.00E00
      "$#,##0;;\Z\e\r\o"
      $5
      $-5
      $1
      Zero
       
       
       
      بالتوفيق للجميع
    • بواسطه SEMO.Pa3x
      السلام عليكم..
      موديول لـ InputBox لجعل الكتابة تظهر على شكل نجوم لمساعدتك في حماية كلمات السر او ماشابه.
       
      '---------------------------------- 'API CONSTANTS FOR PRIVATE INPUTBOX '---------------------------------- Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _ ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _ (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long Private Declare Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" _ (ByVal hDlg As Long, ByVal nIDDlgItem As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, _ ByVal lpClassName As String, ByVal nMaxCount As Long) As Long Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long 'Constants to be used in our API functions Private Const EM_SETPASSWORDCHAR = &HCC Private Const WH_CBT = 5 Private Const HCBT_ACTIVATE = 5 Private Const HC_ACTION = 0 Private hHook As Long '---------------------------------- 'PRIVATE PASSWORDS FOR INPUTBOX '---------------------------------- '//////////////////////////////////////////////////////////////////// 'Password masked inputbox 'Allows you to hide characters entered in a VBA Inputbox. ' 'Code written by Daniel Klann 'March 2003 '//////////////////////////////////////////////////////////////////// Public Function NewProc(ByVal lngCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Dim RetVal Dim strClassName As String, lngBuffer As Long If lngCode < HC_ACTION Then NewProc = CallNextHookEx(hHook, lngCode, wParam, lParam) Exit Function End If strClassName = String$(256, " ") lngBuffer = 255 If lngCode = HCBT_ACTIVATE Then 'A window has been activated RetVal = GetClassName(wParam, strClassName, lngBuffer) If Left$(strClassName, RetVal) = "#32770" Then 'Class name of the Inputbox 'This changes the edit control so that it display the password character *. 'You can change the Asc("*") as you please. SendDlgItemMessage wParam, &H1324, EM_SETPASSWORDCHAR, Asc("*"), &H0 End If End If 'This line will ensure that any other hooks that may be in place are 'called correctly. CallNextHookEx hHook, lngCode, wParam, lParam End Function Function InputBoxDK(Prompt, Title) As String Dim lngModHwnd As Long, lngThreadID As Long lngThreadID = GetCurrentThreadId lngModHwnd = GetModuleHandle(vbNullString) hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID) InputBoxDK = InputBox(Prompt, Title) UnhookWindowsHookEx hHook End Function  
      الاستدعاء بهذا الشكل:
       
      Call: InputBoxDK("Enter your Password.", "Password Required")  
      الحقوق لاصحابها
      بالتوفيق للجميع
      حسنين
  • المتواجدين الان   0 اعضاء متواجدين الان

    لايوجد اعضاء مسجلون يتصفحون هذه الصفحه

×
×
  • اضف...