C#做辅助的常用API
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;
//查找窗体
public extern static IntPtr FindWindow(
string lpClassName,
string lpWindowName
);
//得到目标进程句柄的函数
public extern static int GetWindowThreadProcessId(
int hwnd,
ref int lpdwProcessId
);
public extern static int GetWindowThreadProcessId(
IntPtr hwnd,
ref int lpdwProcessId
);
//打开进程
public extern static int OpenProcess(
int dwDesiredAccess,
int bInheritHandle,
int dwProcessId
);
public extern static IntPtr OpenProcess(
uint dwDesiredAccess,
int bInheritHandle,
uint dwProcessId
);
//关闭句柄的函数
public static extern int CloseHandle(
int hObject
);
//读内存
public static extern Int32 ReadProcessMemory(
IntPtr hProcess,
IntPtr lpBaseAddress,
byte[] buffer,
int size,
out IntPtr lpNumberOfBytesWritten
);
public static extern Int32 ReadProcessMemory(
int hProcess,
int lpBaseAddress,
ref int buffer,
//byte[] buffer,
int size,
int lpNumberOfBytesWritten
);
public static extern Int32 ReadProcessMemory(
int hProcess,
int lpBaseAddress,
byte[] buffer,
int size,
int lpNumberOfBytesWritten
);
//写内存
public static extern Int32 WriteProcessMemory(
IntPtr hProcess,
IntPtr lpBaseAddress,
byte[] buffer,
int size,
out IntPtr lpNumberOfBytesWritten
);
public static extern Int32 WriteProcessMemory(
int hProcess,
int lpBaseAddress,
byte[] buffer,
int size,
int lpNumberOfBytesWritten
);
//创建线程
public static extern int CreateRemoteThread(
int hProcess,
int lpThreadAttributes,
int dwStackSize,
int lpStartAddress,
int lpParameter,
int dwCreationFlags,
ref int lpThreadId
);
//开辟指定进程的内存空间
public static extern System.Int32 VirtualAllocEx(
System.IntPtr hProcess,
System.Int32 lpAddress,
System.Int32 dwSize,
System.Int16 flAllocationType,
System.Int16 flProtect
);
public static extern System.Int32 VirtualAllocEx(
int hProcess,
int lpAddress,
int dwSize,
int flAllocationType,
int flProtect
);
//释放内存空间
public static extern System.Int32 VirtualFreeEx(
int hProcess,
int lpAddress,
int dwSize,
int flAllocationType
);
}
} 顶起......
补充模拟键盘API
public static extern void keybd_event(
byte bVk, //虚拟键值
byte bScan, //硬件扫描码
int dwFlags,//动作标识 这里是整数类型0 为按下,2为释放
int dwExtraInfo//与键盘动作关联的辅助信息 这里是整数类型 一般情况下设成为 0
);
//调用方法:
// keybd_event((byte)Keys.LWin, 0, 0, 0); //按下LWIN
// keybd_event((byte)Keys.D, 0, 0, 0); //按下D
// keybd_event((byte)Keys.LWin, 0, 2, 0); //释放LWIN
// keybd_event((byte)Keys.D, 0, 2, 0); //释放D 再补充个发送消息的API
可以后台发送
private static extern bool SendMessage(
IntPtr hWnd, //目标窗口句柄
int msg, //消息
int wParam, //附加的消息特定的信息
IntPtr lParam //附加的消息特定的信息
); 学习学习!!!~~~~~
页:
[1]