using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices; //这个肯定要的
namespace WindowsApplication1
{
class win32API
{
public const int OPEN_PROCESS_ALL = 2035711;
public const int PAGE_READWRITE = 4;
public const int PROCESS_CREATE_THREAD = 2;
public const int PROCESS_HEAP_ENTRY_BUSY = 4;
public const int PROCESS_VM_OPERATION = 8;
public const int PROCESS_VM_READ = 256;
public const int PROCESS_VM_WRITE = 32;
private const int PAGE_EXECUTE_READWRITE = 0x4;
private const int MEM_COMMIT = 4096;
private const int MEM_RELEASE = 0x8000;
private const int MEM_DECOMMIT = 0x4000;
private const int PROCESS_ALL_ACCESS = 0x1F0FFF;
//查找窗体
[DllImport("User32.dll", EntryPoint = "FindWindow")]
public extern static IntPtr FindWindow(
string lpClassName,
string lpWindowName
);
//得到目标进程句柄的函数
[DllImport("USER32.DLL")]
public extern static int GetWindowThreadProcessId(
int hwnd,
ref int lpdwProcessId
);
[DllImport("USER32.DLL")]
public extern static int GetWindowThreadProcessId(
IntPtr hwnd,
ref int lpdwProcessId
);
//打开进程
[DllImport("kernel32.dll")]
public extern static int OpenProcess(
int dwDesiredAccess,
int bInheritHandle,
int dwProcessId
);
[DllImport("kernel32.dll")]
public extern static IntPtr OpenProcess(
uint dwDesiredAccess,
int bInheritHandle,
uint dwProcessId
);
//关闭句柄的函数
[DllImport("kernel32.dll", EntryPoint = "CloseHandle")]
public static extern int CloseHandle(
int hObject
);
//读内存
[DllImport("Kernel32.dll ")]
public static extern Int32 ReadProcessMemory(
IntPtr hProcess,
IntPtr lpBaseAddress,
[In, Out] byte[] buffer,
int size,
out IntPtr lpNumberOfBytesWritten
);
[DllImport("Kernel32.dll ")]
public static extern Int32 ReadProcessMemory(
int hProcess,
int lpBaseAddress,
ref int buffer,
//byte[] buffer,
int size,
int lpNumberOfBytesWritten
);
[DllImport("Kernel32.dll ")]
public static extern Int32 ReadProcessMemory(
int hProcess,
int lpBaseAddress,
byte[] buffer,
int size,
int lpNumberOfBytesWritten
);
//写内存
[DllImport("kernel32.dll")]
public static extern Int32 WriteProcessMemory(
IntPtr hProcess,
IntPtr lpBaseAddress,
[In, Out] byte[] buffer,
int size,
out IntPtr lpNumberOfBytesWritten
);
[DllImport("kernel32.dll")]
public static extern Int32 WriteProcessMemory(
int hProcess,
int lpBaseAddress,
byte[] buffer,
int size,
int lpNumberOfBytesWritten
);
//创建线程
[DllImport("kernel32", EntryPoint = "CreateRemoteThread")]
public static extern int CreateRemoteThread(
int hProcess,
int lpThreadAttributes,
int dwStackSize,
int lpStartAddress,
int lpParameter,
int dwCreationFlags,
ref int lpThreadId
);
//开辟指定进程的内存空间
[DllImport("Kernel32.dll")]
public static extern System.Int32 VirtualAllocEx(
System.IntPtr hProcess,
System.Int32 lpAddress,
System.Int32 dwSize,
System.Int16 flAllocationType,
System.Int16 flProtect
);
[DllImport("Kernel32.dll")]
public static extern System.Int32 VirtualAllocEx(
int hProcess,
int lpAddress,
int dwSize,
int flAllocationType,
int flProtect
);
//释放内存空间
[DllImport("Kernel32.dll")]
public static extern System.Int32 VirtualFreeEx(
int hProcess,
int lpAddress,
int dwSize,
int flAllocationType
);
}
}
分享到:
相关推荐
在.NET框架中,C#是一种常用的编程语言,而C++则有着广泛的应用,尤其是在系统级编程和高性能计算领域。有时我们需要在C#项目中利用已有的C++库或API,这就涉及到了跨语言互操作性。本文将详细介绍如何在C#中调用C++...
五、常用API类和方法 1. `FamilyManager`和`FamilySymbol`:用于管理族和族符号,创建和编辑族类型。 2. `View`和`ViewType`:处理视图和视图类型,如平面视图、立面视图等。 3. `Wall`、`Door`、`Window`等:直接...
这个名为"C#常用代码"的压缩包文件,很显然包含了一些C#编程中常用的代码片段或示例,可以帮助开发者快速解决日常遇到的问题,或者作为学习C#的参考资料。 在C#中,常用的知识点包括但不限于以下几个方面: 1. **...
"C# 常用类库(多年积累的精华大部分可以直接到项目开发)"这个压缩包文件很可能是某位资深开发者多年来收集和整理的C#实用类库集合,旨在为其他开发者提供直接可用的代码资源。 C#中的常用类库主要分为几个部分: 1...
"C#常用类库最新版.zip"很可能包含了一系列常用的C#类库,这些类库可以帮助开发者处理各种任务,如数据操作、网络通信、文件I/O、图形处理等。下面将对C#中的一些重要类库及其用途进行详细介绍。 1. **.NET ...
【C#编程基础】 C#(读作"C sharp")是一种面向对象的编程语言,由微软公司开发,主要用于构建Windows应用程序、Web应用以及游戏。它以其简洁、类型安全和性能高效而著称,是.NET框架的核心语言。在C#中,类是基本...
"C#常用系统维护源代码"这个主题涵盖了使用C#进行系统管理、监控和优化的各种实用代码示例。这些源代码可以帮助开发者创建高效、可靠的系统工具,提升系统维护的工作效率。 一、系统信息获取 在系统维护中,首先...
可能的方法包括收集历年高考分数数据,通过线性回归分析找出影响成绩的关键因素(如学习时间、模拟考试成绩等),然后用这个模型预测未来学生的高考表现。当然,如果数据非线性,可以使用更高阶的多项式回归或曲线...
【C#基础知识面试题解析】 在C#编程中,掌握基础是至关重要的,尤其是在面试时。以下是一些常见的C#面试问题及解答: 66. 软件开发过程一般有几个阶段?每个阶段的作用? 软件开发通常包括五个主要阶段: 1. 需求...
在C#中进行人脸识别,通常会借助开源库或SDK,如OpenCV、Emgu CV、Microsoft Cognitive Services的人脸API等。这些库提供了丰富的接口和函数,使得开发者能够快速构建人脸识别系统。 1. OpenCV与Emgu CV:这两个是...
3. 用户界面层:C#.NET提供了丰富的控件和API,可以快速构建出美观且易用的用户界面。例如,使用Windows Forms或WPF创建交互式的表单,展示客户信息,提供数据输入和查询功能。 4. 异步编程:C#.NET引入了async/...
描述中提到“个人搜集的c# 控制硬件程序,很不错”,暗示这个压缩包包含了一些C#编写的实际硬件控制代码,可能是用于不同类型的硬件设备,如PLC(可编程逻辑控制器)、手机、电子秤等。C#作为一门强大的编程语言,...
二、常用API介绍 1. **Transform组件**:是所有Unity对象的基本属性,包括位置(Position)、旋转(Rotation)和缩放(Scale)。通过Transform类,我们可以实现对象的动态移动、旋转和缩放。 2. **Camera组件**:...
C#不提供直接的线程暂停API,但可以通过共享变量或信号量(如`ManualResetEvent`)来间接实现。 例如,一个线程可能在执行到特定点时检查一个共享标志,如果该标志指示应暂停,它就会进入等待状态。其他线程可以...
标题中的"C#多年累积类库"表明这是一份包含了作者在C#编程语言中长期实践和积累的自定义类库。这些类库通常是为了提高开发效率、解决常见问题或者实现特定功能而创建的,可能包括各种实用工具类、数据处理模块、网络...
在.NET开发环境中,C#是一种常用的编程语言,而对象验证是软件开发中的重要环节,确保数据的正确性和一致性。一个有效的对象验证框架可以帮助开发者轻松地处理这些验证逻辑,提高代码的可读性和可维护性。"c#对象...
本文将基于提供的文件信息,深入探讨C#中处理JSON数据的常用技术和实践,包括从前端收集JSON数据到后端解析和操作JSON数据的全过程。 #### JSON数据在C#中的处理 ##### 前台收集JSON数据 在前端,通常使用Ajax技术...
C#中常用的HTML解析库有HtmlAgilityPack和AngleSharp,它们提供API来解析DOM树,查找特定元素,提取文本或属性值。 3. **异步编程**:为了提高爬虫效率,通常会并发处理多个请求。C#的异步编程模型(基于`async/...
### C#的6种常用集合类大比拼 #### 集合与数组的区别 - **固定大小**:数组在创建时必须指定其大小,并且这个大小在其生命周期内是不可改变的。这意味着如果需要存储的数据量发生变化,那么可能需要重新创建一个新...
在本文中,我们将深入探讨如何使用C#编程语言,基于ModBus RTU通讯协议通过RS-485接口从气象站获取数据。首先,我们需要理解RS-485是一种广泛用于工业控制系统的串行通信标准,它允许多点通信且传输距离相对较远,...