c#中如何隐藏进程

 时间:2024-10-13 00:43:20

1、使用C#编制计算机程序非常方便,是微软推出的一种计算机编程语言,常用来编制针对台式机、笔记本类设备的电脑程序

c#中如何隐藏进程

2、C#编程语言主要用于Windows系统的程序编制,对于Windows系统桌面上的窗口的各种特性都可以实现其效果,比如程序进程、任务栏显示等等

c#中如何隐藏进程

3、在C# winform 应用程序中,实现在窗体处于最小化时,隐藏该程序的任务栏图标,在托盘上显示该程序的图标的功能非常简单,只需针对窗体属性赋值即可

c#中如何隐藏进程

4、操作起来就是直接针对窗体属性进行处理,代码示例如下:this.ShowInTaskbar = false;//隐藏任务栏标签this.notifyIcon1.Visible = true;//显示托盘图标代码中的this就是指当前窗体

c#中如何隐藏进程

5、如果需要将任务管理器中的程序进程进行隐藏,相对就要复杂些,主要用到Windows系统API的一些函数方法,通过给程序发生消息实现

c#中如何隐藏进程

6、代码示例如下,其中p_HandlePtr为获取的需要处理的进程的句柄:I艘绒庳焰ntPtr _ControlIntPtr = p_Ha荏鱿胫协ndlePtr; int _ItemCount = WindowsAPI.Win32API.SendMessage(p_HandlePtr, 0x1004, 0, 0); WindowsAPI.Win32API.ProcessAccessType _Type; _Type = WindowsAPI.Win32API.ProcessAccessType.PROCESS_VM_OPERATION | WindowsAPI.Win32API.ProcessAccessType.PROCESS_VM_READ | WindowsAPI.Win32API.ProcessAccessType.PROCESS_VM_WRITE; IntPtr _ProcessIntPtr = WindowsAPI.Win32API.OpenProcess(_Type, 1, (uint)m_ProcessID); IntPtr _Out = IntPtr.Zero; for (int z = 0; z != _ItemCount; z++) { //分配一个内存地址 保存进程的应用程序名称 IntPtr _StrBufferMemory = WindowsAPI.Win32API.VirtualAllocEx(_ProcessIntPtr, 0, 255, WindowsAPI.Win32API.MEM_COMMIT.MEM_COMMIT, WindowsAPI.Win32API.MEM_PAGE.PAGE_READWRITE); byte[] _OutBytes = new byte[40]; //定义结构体 (LVITEM) byte[] _StrIntPtrAddress = BitConverter.GetBytes(_StrBufferMemory.ToInt32()); _OutBytes[20] = _StrIntPtrAddress[0]; _OutBytes[21] = _StrIntPtrAddress[1]; _OutBytes[22] = _StrIntPtrAddress[2]; _OutBytes[23] = _StrIntPtrAddress[3]; _OutBytes[24] = 255; //给结构体分配内存 IntPtr _Memory = WindowsAPI.Win32API.VirtualAllocEx(_ProcessIntPtr, 0, _OutBytes.Length, WindowsAPI.Win32API.MEM_COMMIT.MEM_COMMIT, WindowsAPI.Win32API.MEM_PAGE.PAGE_READWRITE); //把数据传递给结构体 (LVITEM) WindowsAPI.Win32API.WriteProcessMemory(_ProcessIntPtr, _Memory, _OutBytes, (uint)_OutBytes.Length, out _Out); //发送消息获取结构体数据 WindowsAPI.Win32API.SendMessage(p_HandlePtr, 0x102D, z, _Memory); //获取结构体数据 WindowsAPI.Win32API.ReadProcessMemory(_ProcessIntPtr, _Memory, _OutBytes, (uint)_OutBytes.Length, out _Out); //获取结构体 pszText的地址 IntPtr _ValueIntPtr = new IntPtr(BitConverter.ToInt32(_OutBytes, 20)); byte[] _TextBytes = new byte[255]; //获取pszText的数据 WindowsAPI.Win32API.ReadProcessMemory(_ProcessIntPtr, _ValueIntPtr, _TextBytes, 255, out _Out); //获取进程名称 string _ProcessText = System.Text.Encoding.Default.GetString(_TextBytes).Trim(new Char[] { '/0' }); //释放内存 WindowsAPI.Win32API.VirtualFreeEx(_ProcessIntPtr, _StrBufferMemory, 0, WindowsAPI.Win32API.MEM_COMMIT.MEM_RELEASE); WindowsAPI.Win32API.VirtualFreeEx(_ProcessIntPtr, _Memory, 0, WindowsAPI.Win32API.MEM_COMMIT.MEM_RELEASE); if (_ProcessText == m_ProcessName) { WindowsAPI.Win32API.SendMessage(p_HandlePtr, 0x1008, z, 0); } }

c#中如何隐藏进程
  • win10电脑系统查看端口的操作方法
  • centos系统无法ping通网络
  • Deepin 怎样定时关机
  • win10开机默认启动系统有多个win10系统怎么办
  • 光驱位置磁盘显示可以删除
  • 热门搜索
    名人故事手抄报 手抄报版面设计模板 六一儿童节手抄报内容 向英雄致敬手抄报简单 关于中国梦的手抄报 关于黄河的手抄报 普通话手抄报图片 植树节手抄报资料 妇女节手抄报内容 小学二年级手抄报