windowsapi函数:Windows API一日一练(93)GetSaveFileName函数

前面介绍了如何样打开选择文件读取对话框当你设计软件Software需要让用户选择保存时就需要让用户去选择自己合适文件名称来保存那么就需要使用到保存文件对话框也就是APIGetSaveFileName下面就来演示如何样使用这个API  GetSaveFileName声明如下:WINCOMMDLGAPI BOOL APIENTRY GetSaveFileNameA(LPOPENFILENAMEA);W... [阅读全文]

windowsapi函数:Windows API一日一练(92)GetOpenFileName函数

  当用户想选择打开以前保存文件时就需要使用到选择文件对话框其实在WindowsAPI里已经有这样完美对话只需要简单就可以使用了而不需要写大堆其它代码下面就来演示下如何使用文件选择对话框  GetOpenFileName声明如下:WINCOMMDLGAPI BOOL APIENTRY GetOpenFileNameA(LPOPENFILENAMEA);WINCOMMDLGAPI BOOL APIE... [阅读全文]

windowsapi函数:Windows API一日一练(91)GetProcessMemoryInfo函数

  当大家打开Windows任务管理器时就会看到每个进程使用内存分布情况往往会发现有些进程占用大量内存在这种情况也是种异常情况可以作为是否恶意软件Software标志的下面就来使用APIGetProcessMemoryInfo来获取内存使用情况  GetProcessMemoryInfo声明如下:BOOLWINAPIGetProcessMemoryInfo(    HANDLE Process, ... [阅读全文]

windowsapi函数:Windows API一日一练(90)GetGlyphOutline函数

  中西文化差异导致在电子信息里处理也大不相同在英文里只需要26个字母就可以显示所有文章了而在中文里需要最基本就有2000多个对于些在嵌入式软件Software里要显示那么就得手动去构造所有图形这是个比较大工作量如果让每个厂家都去完成这个任务显然是不可能面对着大量嵌入式用户需求那么就需要解决中文字模图形问题毕竟大家经常使用Windows最先想到肯定是如何样把里面提取图形出来生成自己需要几个字库下面... [阅读全文]

windowsapi函数:Windows API一日一练(89)OpenProcess函数

  这年来流氓软件Software特别多面对这种非常恶心软件Software让大家非常痛苦正是在这种环境的下众多客户需要强大查杀这种流氓软件Software工具如果让你来开发个查杀这种病毒软件Software你会如何做呢?当然是先把电脑里所有进程遍历出来然后把每个进程详细信息显示给用户让用户决定自己那些进程可以运行那些不可以运行或者根据当前进程信息再跟根据病毒库里特征码进行比较就可以标识那些是可疑... [阅读全文]

windowsapi函数:Windows API一日一练(88)EnumProcesses函数

  当你开发软件Software在用户那里运行出错了想如何办呢?当然是希望把出错时候运行环境信息生成报表然后再Email回来查看了这里就介绍个可以把当时运行环境进程全部找到然后可以输出每个进程信息当然这个也可以使用到杀病毒软件Software里用来查看可疑进程信息  EnumProcesses声明如下:BOOLWINAPIEnumProcesses (    DWORD * lpidProcess... [阅读全文]

windowsapi函数:Windows API一日一练(87)CreateProcess函数

  人们需要处理信息越来越复杂往往在个应用里是处理不完因此就出现多个应用协同处理同件事情当然多个应用分开处理也是比较容易开发并且让应用复杂难度迅速降低比如在开发个银行交易系统有个报表生成主然后还有很多小区别报表生成这样就需要从主里创建小报表进行运行创建进程运行需要使用CreateProcess来实现  CreateProcess声明如下:WINBASEAPIBOOLWINAPICreateProc... [阅读全文]

windowsapi函数:Windows API一日一练(86)GetClipboardData函数

前面介绍如何样把数据放到剪贴板里面那么又是如何样从剪贴板里面获取数据出来呢?当然还是需要使用其它API来获取剪贴板里数据获取剪贴板里数据时是不知道当前剪贴板里是否有数据也不知道剪贴板里数据格式是什么那么下面就来解决这两个问题先使用IsClipboardFormatAvailable来获取剪贴板里格式是否可以处理接着使用OpenClipboard打开剪贴板然后使用GetClipboardData来获... [阅读全文]

windowsapi函数:Windows API一日一练(85)OpenClipboard函数

多个软件Software的间进行数据共享是非常重要难以想像编辑软件Software没有CTRL+CCTRL+V功能是多么不方便很多操作就是拷贝动作就是为了数据共享剪贴板共享是Windows里比较重要功能比如很多采集数据软件Software为了方便导数据到excel里面就可以使用剪贴板功能还有即见即所得界面导到word里面也可以使用剪贴板功能  OpenClipboard声明如下:WINUSERAP... [阅读全文]

windowsapi函数:Windows API一日一练(84)FlushInstructionCache函数

  般都是在运行前已经编译好因此修改指令机会比较少但在软件Software防破解里倒是使用很多当修改指令的后如何样才能让CPU去执行新指令呢?这样就需要使用FlushInstructionCache来把缓存Cache里数据重写回主内存里去让CPU重新加载新指令才能执行新指令下面就来学习下使用这个来实现跳到个静态里执行而不是直接地这个  FlushInstructionCache声明如下:WINBA... [阅读全文]

windowsapi函数:Windows API一日一练(83)GetModuleFileName函数

  在开发软件Software过程里经常需要把数据保存到当前执行文件路径下面或者读取当前执行文件路径下些配置信息这时就需要从当前模块里获取所在目录路径以便进行固定位置操作文件要解决这个需求就需要APIGetModuleFileName来获取模块所在路径  GetModuleFileName声明如下:WINBASEAPIDWORDWINAPIGetModuleFileNameA(    __in_o... [阅读全文]

windowsapi函数:Windows API一日一练(82)LoadLibrary函数

  随着软件Software规模扩大要求功能也是越来越多开发人员参和也是越来越多因此软件Software功能划分就成为了现代软件Software工程重大任务还有软件Software开发并行性也越来越重要为了解决这些问题大家都会看到IT硬件发展非常迅速功能也越来越复杂但硬件中发展明显提高在于采用IC方式来实现复杂功能也就是把大部份功能集成到起只要给出些引脚就可以实现产品了而软件Software中有没... [阅读全文]

windowsapi函数:Windows API一日一练(81)FormatMessage函数

在开发软件Software过程里经常要做工作就是调试许多问题出现不但是逻辑问题还有可能是对API不熟悉或者某种条件下API会出错那么这些出错原因是什么呢?通常只获取到码也就是通过GetLastError得到当然可以根据这个码去查找MSDN就可以知道出错原因但有时在客户那里并没有MSDN那么就需要把API出错信息显示出来或者写到LOG里去这时就需要FormatMessage把出错码详细原因显示出来 ... [阅读全文]

windowsapi函数库:Windows API一日一练(80)MultiByteToWideChar函数

  在软件Software使用过程中经常碰到乱码情况那么乱码原因是什么呢?其实很多情况下就是集区别也就是说同个数字代表区别意思在Windows里目前主要有ANSI和UNICODE方式如果在UNICODE方式里直接显示ANSI串是出现乱码同样在ANSI里也不能显示UNICODE串而是要进行相互转换才能显示正确串在NT以后操作系统里Windows底层已经全部改为UNICODE方式如果还是使用ANSI话... [阅读全文]

windowsapi函数库:Windows API一日一练(79)GlobalMemoryStatusEx函数

  在开发软件Software过程中经常会碰到区别用户PC系统配置不样比如有些用户系统内存配置比较差这样处理大量数据时就不能把大量数据读取到内存里处理了而又有些用户内存比较多或者是机器比较新那么就可以加载大量数据到内存里处理这样可以随着系统更新软件Software处理能力能大幅地提高性能这样就需要了解系统配置信息了最重要资源的内存就是最需要了解需要GlobalMemoryStatusEx来了解内存... [阅读全文]

windowsapi函数库:Windows API一日一练(78)HeapAlloc函数

  前面已经介绍两个分配内存个全局内存分配个是私有内存分配在进程私有内存里分配里又有两种分配情况种上基于栈式内存分配另种是基于堆内存分配在c里使用堆内存分配是使用HeapAlloc来实现也就是实现操作符分配内存时会调这个  HeapAlloc声明如下:WINBASEAPI__bcount(dwBytes)LPVOIDWINAPIHeapAlloc(    __in HANDLE hHeap,   ... [阅读全文]

windowsapi函数库:Windows API一日一练(77)VirtualAlloc函数

  上次学习了全局内存分配在Windows里内存管理是分为两部份全局内存是系统管理内存因而所有进程都可以访问内存而每个进程又有自己内存空间这就是虚拟内存空间了而虚拟内存空间比较大当物理内存不足时系统会把虚拟内存数据保存到硬盘里这样只要硬盘空间足够大每个进程就可以使用3G内存虚拟内存分配可以作为里分配内存主要方式比如大量数据缓冲区动态分配内存空间使用VirtualAlloc来分配内存速度要比全局内存... [阅读全文]

windowsapi函数库:Windows API一日一练(76)GlobalAlloc函数

在Windows系统里有项功能非常实用就是剪贴板功能它能够从个里和另个进行数据交换功能也就是说两个进程上是可以共享数据要实现这样功能Windows系统在底层上有相应支持就是高端地址内存是系统内存这样就可以区别进程进行共享数据了因此GlobalAlloc来分配系统内存让区别进程实现共享数据也就是剪贴板功能可以在个进程内分配内存在另个进程里访问数据后删除内存  GlobalAlloc声明如下:HGLO... [阅读全文]

windowsapi函数库:Windows API一日一练(75)SystemParametersInfo函数

  面对华丽Windows桌面工作心情或许好很多但是久了总会失去兴趣总想定期地更新桌面图片软件Software开发人员又面对这样需求了需要如何样去做呢?努力去找API吧到目前为止还有很多变桌面图片软件Software并且还能很挣钱其实设置桌面图片需求在目前数码相片处理软件Software也有现实需求比如当你去旅游回来后想把照片当作桌面图片就可以在处理图片时就设置为桌面图片这样就需要使用Parame... [阅读全文]

windowsapi函数库:Windows API一日一练(74)GetSystemInfo函数

有次我正在开发个视频压缩而压缩算法是需要非常高效也就是需要使用到CPU多媒体指令在X86领域里目前主要有两家CPU就是INTEL和AMD它们多媒体指令是不样为了区分这种区别指令就需要GetInfo来获取CPU信息然后再区别动态连接库来进行多媒体数据压缩  GetInfo声明如下:WINBASEAPIVOIDWINAPIGetInfo(    __out LPSYSTEM_INFO lpInfo  ... [阅读全文]

windowsapi函数库:Windows API一日一练(73)GetVersionEx函数

Windows发展还是非常快速从Win95到Win98再到Win2000和XP系统每个系统功能也有所区别要想在里区别区别系统就需要获取系统版本信息比如XP里有防火墙而其它以前系统里没有带有但有时编写了个服务器或者编写BT又需要设置个端口对外面接收连接因此在XP系统里就需要设置防火墙端口而在XP以前系统里就没有必要设置端口了这样需求就可以使用GetVersionEx来区分区别系统  GetVersi... [阅读全文]

windowsapi函数库:Windows API一日一练(72)GetUserName函数

  随着系统安全性加强每个系统里越来越多区别帐号登录假如你正在开发个上网安全软件Software让区别用户有区别上网权限这样就需要识别当前用户是什么帐号登录了然后再作出权限分配还有出错时也需要对当前帐号进行记录下来区别帐号有区别权限有些磁盘是不允许操作面对这些需求就需要使用GetUserName  GetUserName声明如下:WINADVAPIBOOLWINAPIGetUserNameA ( ... [阅读全文]

windowsapi函数库:Windows API一日一练(71)GetComputerName函数

当你在个大公司里面当个网络管理员时发现成千上万个电脑需要你去管理时如何去区分这些电脑呢?那肯定是通过计算机名称而这个网络管理员又需要你开发套软件Software它可以把所有电脑名称自动地上报给他面对这样需求就可以使用下面GetComputerName来获取计算机名称并通过网络传送给管理员  GetComputerName声明如下:WINBASEAPIBOOLWINAPIGetComputerNam... [阅读全文]

windowsapi函数库:Windows API一日一练(70)GetSystemTime和GetLocalTime函数

  时间是个非常重要信息比如写LOG时就需要把时间输出来跟踪是什么时候出错或者当你开发个银行交易系统时就要记录当前交易时间以便后面可以输出报表打印给信用卡用户根据区别需求可能需要使用区别时间目前有UTC和本地时间UTC是格林威治时间也就是全球标准时间本地时间就是相对于UTC而言比如中国北京是在东8区相对于UTC就多了8个小时般使用到时间都是使用本地时间也就是GetLocalTime  GetTim... [阅读全文]

windowsapi函数库:Windows API一日一练(69)GetTickCount函数

  时间计时也不是越精确越好有时只需要有个计时就行了这样就可以使用毫秒级别计时GetTickCount这个是记录了系统启动以来时间毫秒当超过49.7天这个值变为从0开始也就是说49.7天是个周期当区别两次调时就返回两次时间差值  GetTickCount声明如下:WINBASEAPIDWORDWINAPIGetTickCount(    VOID    );  例子如下:#001 //般时钟计时#... [阅读全文]

windowsapi函数库:Windows API一日一练(68)QueryPerformanceCounter函数

  精确时间计时有时候是非常必要比如播放多媒体时视频和音频时间同步还有在测试代码性能时也需要使用到非常精确时间计时还有测试硬件性能时也需要精确时间计时这时就需要使用QueryPerformanceCounter来查询定时器计数值如果硬件里有定时器它就会启动这个定时器并且不断获取定时器值这样定时器精度就跟硬件时钟晶振样精确  QueryPerformanceCounter和QueryPerforma... [阅读全文]

windowsapi函数库:Windows API一日一练(66)CreateWaitableTimer和SetWaitableTimer函数

用户感觉到软件Software好用就是可以定时地做些工作而不需要人参和进去比如每天定时地升级病毒库定时地下载电影定时地更新游戏里人物要想实现这些功能就可以使用定时器APICreateWaitableTimer和SetWaitableTimer来实现了这对API创建时钟是比较精确可以达到100倍10亿分的秒  CreateWaitableTimer和SetWaitableTimer声明如下:WINB... [阅读全文]

windowsapi函数:Windows API一日一练(44)wsprintf函数

接着上面再继续实现更加强大线程类从上面C++类里可以看到要在静态里使用类成员就需要获取this指针也就是通过CreateThread里把类this指针传送进来这样在ThreadProc里参数lpParameter就是this指针了因此把参数lpParameter转换为CThread类指针这样就可以使用类成员在这个例子里使用wsprf来格式化线程ID输出来下面就来详细地分析例子吧  wsprf声明如... [阅读全文]

windowsapi函数:Windows API一日一练(43)WaitForSingleObject函数

  上面已经介绍如何样创建个简单线程在那里就需要使用WaitForSingleObject它是用来做什么呢?其实它是用来实现等待线程结束它机理是这样通知Windows操作系统现在我进入睡眼状态当我关注对象条件是否满足如果满足了就吵醒我在那里关注对象是线程是否退出这是个条件测试如果不等待线程关闭就去删除线程资源就会出错使用前面线程是简单些但它不合适复用现在就使用C++类来封装个比较好用类这样就可以很... [阅读全文]

windowsapi函数:Windows API一日一练(42)CreateThread函数

随着时代发展计算机技术发展得很快CPU已经从单核心到多核心转变也就是个CPU里具备了同时做多件事情能力而不是过去分时复用了而是实实在在地做多件事情因此开发软件Software也进入了个新时代就是多线程软件Software开发时代如何合理地分配多个线程同时运行是提高软件Software效率关键原因了比如像网络游戏客户端里就可以使用个线程不断地更新游戏界面分配另外个线程不断地发送和接收网络数据这样CP... [阅读全文]
1 共1条 分1页