اطلاعیه

Collapse
No announcement yet.

آموزش ساخت taskmgr ویندوز در زبان vb.net

Collapse
X
 
  • Filter
  • زمان
  • Show
Clear All
new posts

  • آموزش ساخت taskmgr ویندوز در زبان vb.net

    شاید همیشه براتون مهم بوده باشه که بدونید taskmgr ویندوز چطوری ساخته شده و بخواید خودتون با اون رو خودتون بسازید

    البته تو این یکی موضوع برنامه های قوی زیاد داریم که قوی ترین اونها process hacker هستش

    برای ساختن یک Taskmanager می تونیم از هم کد های خود vb.net ( Getprocess ) استفاده کنیم هم از Win32_class فرقی نداره

    هر دو گزینه رو شرح می دم

    اول از همه یک متغیر از نوع process تعریف می کنیم

    کد:
    Dim process as new process()

    حالا با استفاده از حلقه For each میایم حلقه ای رئ ایجاد می کنیم که پروسه ها در یک لیست باکس بیوفتن

    کد:
        For Each a In process.GetProcesses()
    
          On Error Resume Next
    
          lstProcesses.Items.Add(a.ProcessName)
    
          lstProcesses.Items(0).SubItems.Add(a.Id.ToString())
          count += 1
    
        Next

    خط اول که همون حلقه هست

    خط دوم رو میزاریم که اگه یکی از مشخصات پروسه ها نبودند برنامه بخاطرش متوقف نشه خطا بده

    خط سوم میاد نام پروسه ها رو در listview می اندازه

    خط چهارم اوومدم ID مربوط به پروسه رو هم در column بعدی اون listview آورددم

    ما می تونیم از طریق این متغیر a که شامل لیست پروسه ها میشه دیگر جزئیات مربوط به اون رو که نمونش همین ID هست یا همون PID رو بدست بیاریم

    اما از property های اون می تونیم این موارد زیر رو هم بهش اضافه کنیم


    a.Container
    a.ExitCode
    a.ExitTime
    a.Handle
    a.HasExited
    a.Id
    a.MachineName
    a.MainModule
    a.MainWindowTitle
    a.PriorityBoostEnabled
    a.PriorityClass
    a.ProcessName
    a.Responding
    a.SessionId
    a.Site
    a.StandardError
    a.StandardInput
    a.StandardOutput
    a.StartInfo
    a.StartTime
    a.Threads
    حالا می خوایم از لیست وقتی یکی از پروسه ها رو انتخاب می کنیم اون رو end کنیم

    خوب کد زیر رو بکار می بریم

    کد:
    For Each Process As ListViewItem In lstProcesses.SelectedItems
    
    System.Diagnostics.Process.GetProcessById(lstProcesses.SelectedItems(0).SubItems(1).Text()).Kill()
    
    Next
    این کد باید داخل یک دکمه با اسم مثلا end process بزارید دقت کنیم من گفتم که id پروسه ی انتخابی در لیست باکس رو end کن


    اما اگر کمی هم فکر کنیم ایده های جالبی به نظرمون میاد

    مثلا یادم میاد خیلی وقت پیش ( این به این معنیه که من خیلی وقته اینا رو می دونم ) یکی از دوستان که صاحب کافی نت بود می گفت من هر کاری می کنم باز این ملت taskmanager رو بالا میارن منم اومدم براش یک کار خیلی کوچیکی انجام دادم

    کد زیر رو براش نوشتم و اونرو د ر اصل در وسط حلقه زدم

    کد:
                If a.ProcessName = "Taskmgr.exe" Or p.ProcessName = "Taskmgr" Then
                    a.Kill()
                End If
    اینجا میگه که اگر پروسه ای با اسم taskmgr اجرا شد اون رو فورا kill کن

    البته هرچند این کار باعث شد سیستم اون بنده خدا هنگ کنه ولی برای خودم جالب بود

    همچنین شما می تونید از این کد برای Start کردن یک process استفاده کنید

    کد:
    Process.Start("nameprose.exe")

    =================================================
    =================================================

    روش بعدی هم که از طریق WMI ویندوز هست

    که در اینجا بهش اشاره کردیم

    استفاده از رفرنس زیر

    کد:
    Imports System.Management
    انتخاب متود مورد نظر از طریق زبان WQL و انتصاب اون به متغیر

    کد:
        
    Dim strLocal_service As String = "SELECT * FROM Win32_process"
    تعریف این متغیر از نوع ابجکت ManagementObjectSearcher

    کد:
        Dim sysservice_Searcher As New ManagementObjectSearcher(strLocal_service)

    و استفاده از حلقه for each جهت لیست کردن نام پروسه ها

    کد:
        Dim i As Integer
        For Each servicelist As ManagementObject In sysservice_Searcher.Get()
          lstProcesses.Items.Add(servicelist("name").ToString)
    
          i = i + 1
    
        Next
    دیگر property های مربوط به این کلاس رو تو لیست زیر مشاهده می کنید .


    string Caption;
    string CommandLine;
    string CreationClassName;
    datetime CreationDate;
    string CSCreationClassName;
    string CSName;
    string De******ion;
    string ExecutablePath;
    uint16 ExecutionState;
    string Handle;
    uint32 HandleCount;
    datetime InstallDate;
    uint64 KernelModeTime;
    uint32 MaximumWorkingSetSize;
    uint32 MinimumWorkingSetSize;
    string Name;
    string OSCreationClassName;
    string OSName;
    uint64 OtherOperationCount;
    uint64 OtherTransferCount;
    uint32 PageFaults;
    uint32 PageFileUsage;
    uint32 ParentProcessId;
    uint32 PeakPageFileUsage;
    uint64 PeakVirtualSize;
    uint32 PeakWorkingSetSize;
    uint32 Priority;
    uint64 PrivatePageCount;
    uint32 ProcessId;
    uint32 QuotaNonPagedPoolUsage;
    uint32 QuotaPagedPoolUsage;
    uint32 QuotaPeakNonPagedPoolUsage;
    uint32 QuotaPeakPagedPoolUsage;
    uint64 ReadOperationCount;
    uint64 ReadTransferCount;
    uint32 SessionId;
    string Status;
    datetime TerminationDate;
    uint32 ThreadCount;
    uint64 UserModeTime;
    uint64 VirtualSize;
    string WindowsVersion;
    uint64 WorkingSetSize;
    uint64 WriteOperationCount;
    uint64 WriteTransferCount;


    کمی کامل تر هست این کلاس ها همیشه

    سوالی بود بپرسید تا گرمم
    ...
Working...
X