WINDOWS-基础:WINDOWS常用API
1.窗口信息
- //MS 为我们提供了打开特定桌面和枚举桌面窗口的函数。
- hDesk=OpenDesktop(lpszDesktop,,FALSE,DESKTOP_ENUMERATE);
- //打开我们默认的Default 桌面;
- GetWindowText(hWnd,szWindowText,dwMaxCount);//取得编辑框中的文字
- GetWindowThreadProcessId(hWnd,&dwPID);
2.磁盘信息
- //获得系统所有磁盘的信息,包括软盘,硬盘,光盘等等;
- GetLogicalDriveStrings(dwBufferLength,lpBuffer); //获得逻辑设备的信息;
- GetVolumeInformation(lpRootPathName,lpVolumeNameBuffer,
- dwVolumeNameSize,&dwVolumeSerialNumber,
- &dwMaximumComponentLength,&dwFileSystemFlags,
- lpFileSystemNameBuffer,dwFileSystemNameSize);
- //获得磁盘卷信息,包括卷名称和格式类型;
- GetDiskFreeSpaceEx(lpRootPathName,&FreeBytesAvailable,
- &TotalNumberOfBytes,&TotalNumberOfFreeBytes);
- //探测磁盘的空间使用情况;
3.环境变量
- 从注册表中获得环境块的信息:
- RegOpenKeyEx(HKEY_LOCAL_MACHINE,RegKey,,KEY_QUERY_VALUE,&hKey);
- //打开注册表的键;
- RegEnumValue(hKey,dwIndex,EnvironVariable,
- &dwVariableLength,NULL,NULL,NULL,NULL);
- //查询我们需要的信息值;
- GetEnvironmentVariable(EnvironVariable,EnvironString,);
- //获得环境变量的字符串信息;
4.事件记录信息
- OpenEventLog(NULL,szLog);
- //打开时间日志记录;
- GetOldestEventLogRecord(hEvent,&dwThisRecord);
- //获得最新的日志信息,以便继续查找;
- ReadEventLog(hEvent,EVENTLOG_FORWARDS_READ │ EVENTLOG_SEQUENTIAL_READ,
- ,pEventLogRecord,*,&dwRead,&dwNeeded)
- //读取日志信息;
- LookupAccountSid(NULL,pSid,szName,&dwName,szDomain,&dwDomain,&SNU);
- //获取账户的SID,以便获得账户的用户名称;
- GetNumberOfEventLogRecords(hEvent,&dwTotal);
- //获得事件日志的总数;
- CloseEventLog(hEvent);
- //不要忘记关闭事件句柄;
5.网络共享
- NetShareEnum(NULL,dwLevel,(PBYTE
- *)&pBuf,MAX_PREFERRED_LENGTH,&entriesread,&totalentries,&resume);
- //列举所有的共享目录及相关信息;
- NetApiBufferFree(pBuf);//释放缓冲区;
- NetShareDel(NULL,(char *)lpShareNameW,); //删除网络共享目录;
6.网络适配器信息
- //我们要探测NIC的信息和网络流量;
- GetAdaptersInfo(&AdapterInfo,&OutBufLen);
- //获取适配器信息;
7.系统性能
- //获取系统的存储器使用情况;
- GetPerformanceInfo(&PerfInfo,sizeof(PERFORMACE_INFORMATION))
- //获取系统性能信息;
8.进程/线程/模块信息
- //在此我们使用工具帮助函数(ToolHelp32)和系统
- OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY │
- TOKEN_ADJUST_PRIVILEGES,&hToken);
- //打开进程的令牌,提升权限;
- AdjustTokenPrivileges(hToken,FALSE,&TokenPrivileges,sizeof(TOKEN_PRIVILEGES
- ),NULL,NULL);
- //将进程的权限提升到支持调试(Debug);
- CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,);
- //创建进程的快照;
- Process32First(hProcessSnap,&ProcessEntry32);
- //枚举所有进程;
- OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,ProcessEntry32.th32ProcessID);
- //打开特定进程,以查询进程相关信息;
- GetProcessTimes(hProcess,&CreateTime,&ExitTime,&KernelTime,&UserTime);
- //获取进程的时间信息;
- GetProcessMemoryInfo(hProcess,&PMCounter,sizeof(PMCounter));
- //获取进程的存储区信息;
- GetPriorityClass(hProcess);
- //获取进程的优先权;
- GetProcessIoCounters(hProcess,&IoCounters);
- //获取进程的IO使用情况;
- CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessID);
- //创建模块快照;
- Module32First(hModuleSnap, &ModuleEntry32);
- Module32Next(hModuleSnap, &ModuleEntry32);
- //枚举进程模块信息;
- CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, );
- //创建线程快照;
- Thread32First(hThreadSnap, &ThreadEntry32);
- Thread32Next(hThreadSnap, &ThreadEntry32);
- //枚举线程信息;
- OpenThread(THREAD_ALL_ACCESS,FALSE,ThreadEntry32.th32ThreadID);
- //打开线程,须自己获得此函数地址;
- TerminateProcess(hProcess,);
- //终止进程;
- SuspendThread(hThread);
- //悬挂线程;
- ResumeThread(hThread);
- //激活线程;
9.关机
- AdjustTokenPrivileges(hToken,FALSE,&TokenPrivileges,sizeof(TOKEN_PRIVILEGES),NU LL,NULL); //调整进程令牌,使其支持关机;
- ExitWindowsEx (EWX_SHUTDOWN,);//关机
- ExitWindowsEx (EWX_REBOOT,);//重启
- ExitWindowsEx ( EWX_LOGOFF ,);//注销
- LockWorkStation(); //锁定系统;
- InitiateSystemShutdown(NULL,szMessage,dwTimeout,FALSE,bSig);
- //支持到记时和消息显示的关机/重启;
- SetSystemPowerState(bSig,FALSE);//系统休眠;
10.用户信息
- NetUserEnum(NULL,dwLevel,FILTER_NORMAL_ACCOUNT,(LPBYTE*)&pBuf,
- dwPrefMaxLen,&dwEntriesRead,&dwTotalEntries,&dwResumeHandle);
- //枚举系统用户信息;
- NetUserDel(NULL,lpUserNameW); //删除指定用户;
11.系统版本信息
- GetVersionEx((LPOSVERSIONINFO)&osviex);//获取操作系统的版本信息;
- 也可以通过注册表(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
- NT\CurrentVersion)获取相关信息:
- GetTickCount();
- //获取开机时间;
- GetComputerName(szInfo,&dwInfo);
- //获取计算机名称;
- GetUserName(szInfo,&dwInfo);
- //获取计算机用户名;
- GetWindowsDirectory(szInfo,MAX_PATH+);
- //获取Windows目录;
- GetSystemDirectory(szInfo,MAX_PATH+);
- //获取系统目录;
12.文件操作
- DeleteFile(LPCTSTR lpFileName);
- //删除文件
- CopyFile(LPCTSTR lpExistingFileName,//存在的源文件
- LPCTSTR lpNewFileName,//要复制到的目标文件
- BOOL bFailIfExists
- )
- //拷贝文件
- MoveFile(LPCTSTR lpExistingFileName,//源文件
- LPCTSTR lpNewFileName//目标文件
- )
- //移动文件
- CreateDirectory(LPCTSTR lpPathName,
- LPSECURITY_ATTRIBUTES lpSecurityAttributes)
- //创建目录
- RemoveDirectory(LPCTSTR lpPathName)
- //删除目录
WINDOWS-基础:WINDOWS常用API的更多相关文章
- java基础(15):常用API(Object、String、StringBuffer)
1. Java的API及Object类 在以前的学习过程中,我们都在学习对象基本特征.对象的使用以及对象的关系.接下来我们开始使用对象做事情,那么在使用对象做事情之前,我们要学习一些API中提供的常用 ...
- JS基础:常用API
全局属性 typeof() 检测数据类型 parseInt() 从字符串解析一个整数 parseFloat() 从字符串解析一个小数 Number() 强制类型转换为数字 String() 强制类型转 ...
- appium 基础:常用api接口(2)
一.获取手机分辨率 size=driver.get_window_size()#获取手机屏幕大小,分辨率 print(size)#{'width': 720, 'height': 1280} 得到的是 ...
- java基础3.0:Java常用API
本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...
- < python音频库:Windows下pydub安装配置、过程出现的问题及常用API >
< python音频库:Windows下pydub安装配置.过程出现的问题及常用API > 背景 刚从B站上看过倒放挑战之后也想体验下,心血来潮一个晚上完成了基本的实现.其中倒放与播放部分 ...
- JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API
森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397 文章- 0 评论- 78 JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...
- Delphi一共封装(超类化)了8种Windows基础控件和17种复杂控件
超类化源码: procedure TWinControl.CreateSubClass(var Params: TCreateParams; ControlClassName: PChar); con ...
- sqlservr (708) 打开日志文件 C:\Windows\system32\LogFiles\Sum\Api.log 时出现错误 -1032 (0xfffffbf8)
在windows server 2012 standard上新安装好的SQL Server 2014,查看错误日志,发现此报错 sqlservr (708) 打开日志文件 C:\Windows\sys ...
- 1-3-2 Windows应用程序常用消息
主要内容:介绍Windows编程中常用的消息 1.WM_LBUTTONDOWN产生单击鼠标左键的消息 lParam: 低字节包含当前光标的X坐标值 X = LOWORD(lParam); 高字节包含当 ...
- windows service宿主web api使用"依赖注入"和“控制反转”的技术实践
前言 自从几年前抛弃wcf,使用web api 来做服务器端开发之后,就不再迷惑了.但是因为本来从事传统行业管理软件开发,一般都以分布式应用开发为主.纯BS还是比较少,于是比较喜欢用windows s ...
随机推荐
- 让webStorm支持自动监听编译scss文件
前提概要 今日,重装了两波系统,,,之前安装的各种环境都忘光了,重新又踩一次坑的感觉很不舒服,所以记录一下配置自动编译scss一路遇到的坑 一.webstrom run的时候控制台输出的错误中文提示乱 ...
- js引用类型的赋值
在开发中,有时候需要将数组或者对象的值赋予其他另一个变量,但是两个变量之间会相互影响,因为在将引用类型的值赋给其他变量时,赋予的其实是内存中的存储地址 var arr = [1,2,3,4,5] va ...
- 3D游戏中人物换装解决方案
换装基本上是每个网游都必须有的一个功能,每种网游的做法都各有不同,有些是换掉整个模型,有些则是通过可以换掉模型的一个部分完成.前者属于整体换,相对简单些:后者则是通过部分替换实现,目前用的比较多,本文 ...
- profiler Reserved Total
Used Total和Reserved 均是物理内存,其中Reserved是unity向系统申请的总内存,Unity底层为了不经常向系统申请开辟内存,开启了较大一块内存作为缓存,即所谓的Reserve ...
- c#file类读写
private void button4_Click(object sender, EventArgs e) { FileStream fs = File.OpenRead(textBox1.Text ...
- builder模式的新学习
builder模式的新学习 静态工厂和构造器有个共同的局限性:他们不能很好的扩展到大量的可选参数.大多数产品在牧歌可选与中都会有非零的值 对于这种类,应该使用哪种构造器或者静态方法来进行编写?程序员一 ...
- MySQL习题1 一对多实例 产品和分类
/* 需求:建立产品和分类表 1.查询每种分类的产品数量,没有产品的分类也要统计.(cname,quantity) 2.根据分类名称查询分类中的所有产品 */ -- ----------------- ...
- Jmeter-提取Json数据进行关联
1:Json后置处理器提取结果作为下一个sampler的传入参数 1.1:[线程组]->[简单控制器]->[HTTP sampler]->[Beanshell后置取样器]-> ...
- [WOJ3010] 骰子
题目描述: 骰子是一个六面分别刻有一到六点的立方体,每次投掷骰子,理论上得到\(1\)到\(6\)的概率都是\(1/6\). 有骰子一颗,连续投掷\(n\)次,问点数总和大于等于\(X\)的概率是多少 ...
- Jmeter----小技巧(3)
1.关闭启动Jmeter时出现的面板 说明:启动Jmeter的同时往往会打开一个下图所示的面板,经常不小心关掉后,导致Jmeter停止运行,偶尔写了好久的脚本没来得及保存就没了,烦恼不已 怎样避免如上 ...