临汾山东漯河饰品美体美文
投稿投诉
美文创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品
漯河衢州
兴义眉山
桂林阳泉
玉溪简阳
山东遂宁
永城新余
梧州洛阳
泸州温州
临汾清远
营口常熟
浙江大连
桐乡宜昌

正确的记事本打开方式能渲染图像还能

2月6日 相见欢投稿
  金磊发自凹非寺量子位报道公众号QbitAI
  渲染3D图像,一个记事本就够了。
  最近,GitHub上一名叫KyleHalladay的小哥,便上传了这样一个项目,用记事本来渲染图像。
  效果是这样的:
  立方体旋转、阴影变化,还挺有内味的。
  还有贪吃蛇效果的:
  那么,小哥是如何拿记事本,就做到这些效果的呢?
  正确的记事本打开方式
  据小哥介绍,所有的输入和渲染效果,都是在记事本中完成。
  在此之前,需要做一些设置工作。
  首先,是将键盘事件(KeyEvent),发送到正在运行的记事本。
  这里就要用到VisualStudio提供的一个叫Spy的工具,可以列出组成给定应用程序的所有窗口。
  Spy显示了要找的记事本子窗口是编辑窗口。
  一旦我知道了这一点,就只需要搞清楚Win32函数调用的正确组合,用来获得该UI元素的HWND,然后将输入发送过去。
  得到的HWND是这样的:
  HWNDGetWindowForProcessAndClassName(DWORDpid,constcharclassName){HWNDcurWndindow(0);0argmeanstogetthewindowatthetopoftheZordercharclassNameBuf〔256〕;while(curWnd!NULL){DWORDcurPDWORDdwThreadIdGetWindowThreadProcessId(curWnd,curPid);if(curPidpid){GetClassName(curWnd,classNameBuf,256);if(strcmp(className,classNameBuf)0)returncurWHWNDchildWindowFindWindowEx(curWnd,NULL,className,NULL);if(childWindow!NULL)returnchildW}curWndGetNextWindow(curWnd,GWHWNDNEXT);}returnNULL;}
  一旦拿到了正确的控件HWND,在记事本的编辑控件中绘制一个字符,便是使用PostMessage向它发送一个WMchar事件的问题。
  接下来,就是建一个内存扫描器(MemoryScanner),这里要用到一个叫做CheatEngine的工具。
  基本算法如下:
  FOREACHblockofmemoryallocatedbyourtargetprocessIFthatblockiscommittedandreadwriteenabledScanthecontentsofthatblockforourbytepatternIFWEFINDITreturnthataddress
  内存扫描程序需要做的第一件事,就是遍历进程分配的内存。
  因为Windows上每个64位进程的虚拟内存范围是相同的,所以需要制作一个指向地址0的指针,然后使用VirtualQueryEx获取目标程序的虚拟地址信息。
  将具有相同内存属性的内容页,组织到MEMORYbasicinformation结构中,因此,可能是VirtualQueryEx为给定地址返回的结构包含超过1页的信息。
  一旦有了第一个MEMORYbasicinformation结构,在内存中进行迭代只需要将当前结构的BaseAddress和RegionSize成员添加到一起,并将新地址提供给VirtualQueryEx以获得下一组连续的页面。
  charFindBytePatternInProcessMemory(HANDLEprocess,constcharpattern,sizetpatternLen){charbasePtr(char)0x0;MEMORYBASICINFORMATIONmemIwhile(VirtualQueryEx(process,(void)basePtr,memInfo,sizeof(MEMORYBASICINFORMATION))){constDWORDit0x1000;constDWORDpagereadwrite0x04;if(memInfo。SmemInfo。Protectpagereadwrite){searchthismemoryforourpattern}basePtr(char)memInfo。BaseAddressmemInfo。RegionS}}
  然后,是在进程内存中,搜索字节模式(BytePattern)的工作,此处需要一个叫做ReadProcessMemory的工具。
  一旦内存被复制到本地可见的缓冲区,搜索字节模式就很容易了。
  charFindPattern(charsrc,sizetsrcLen,constcharpattern,sizetpatternLen){sizetcurPos0;while(curPoscharFindBytePatternInProcessMemory(HANDLEprocess,constcharpattern,sizetpatternLen){MEMORYBASICINFORMATIONmemIcharbasePtr(char)0x0;while(VirtualQueryEx(process,(void)basePtr,memInfo,sizeof(MEMORYBASICINFORMATION))){constDWORDit0x1000;constDWORDpagereadwrite0x04;if(memInfo。SmemInfo。Protectpagereadwrite){charremoteMemRegionPtr(char)memInfo。BaseAcharlocalCopyContents(char)malloc(memInfo。RegionSize);SIZETbytesRead0;if(ReadProcessMemory(process,memInfo。BaseAddress,localCopyContents,memInfo。RegionSize,bytesRead)){charmatchFindPattern(localCopyContents,memInfo。RegionSize,pattern,patternLen);if(match){uint64tdiff(uint64t)match(uint64t)(localCopyContents);charprocessPtrremoteMemRegionPreturnprocessP}}free(localCopyContents);}basePtr(char)memInfo。BaseAddressmemInfo。RegionS}}
  需要注意的是,记事本将屏幕上的文本缓冲区作为UTF16数据存储,因此提供给FindBytePatternInMemory()的字节模式也必须是UTF16。
  更多细节描述,可以参考文末的参考链接。
  更多的记事本玩法
  当然,关于记事本的别样玩法,还有好多。
  例如,有拿记事本完成快排的可视化。
  还有用记事本自制绘图软件的。
  那么,你还有更炫酷的记事本玩法吗?
  欢迎在评论区留言推荐
  参考链接
  khalladayrenderwithnotepadblog20200520RenderingWithNotepad。html:
  完
  量子位QbitAI头条号签约
  关注我们,第一时间获知前沿科技动态
投诉 评论 转载

适合小个子发型以下女生这样剪最显高有没有听过你看起来很高你的比例好好这样令小个女孩心情愉悦的话语~除了穿搭是门艺术,能让你看不出实际矮度外,发型也是个很好的修饰道具,让我们来看看不同身高的女孩适合什么样的发长吧……幼儿园女孩发型可爱甜心中长发最萌幼儿园的小女孩怎么梳中长发发型?小孩子的发型虽然看上去简单,做起来技术性不是很高,符合小女孩年龄的中长发发型中,适合幼儿园小女孩的造型是怎么样的呢?一起去学学看吧齐刘海中……奔跑我十共铸辉煌当清晨的光辉洒向我们青春的笑脸,当落日的余晖投影出我们勤奋的模样,我们宛如那天穹下翱翔的鸟儿,目标高远,斗志昂扬!海阔凭鱼跃,天高任鸟飞。青葱的岁月里,我们乘风破浪……北北的脚踏车北北和小伙伴们在胡同里树叶哗哗沙沙翻响的大树的荫凉下吹泡泡的时候,左邻家的大宇哥突然骑着一辆崭新的脚踏车出来了。大宇哥优哉游哉地骑了两圈停在大树下之后,早就看得发呆的小伙……怎么用鸡蛋做面膜1、鸡蛋蜂蜜粗盐材料:鸡蛋1个,蜂蜜一勺、粗盐半勺制作方法:用筷子或者鸡蛋分离器把鸡蛋清弄出来,然后用12的蛋清倒入面膜碗假如盐半勺,打至起泡后再加入蜂蜜搅匀,洁面……如果没吵过架就没资格结婚当我们放弃努力,不再把对方硬塞进心中完美伴侣形象的模子,而是因为了解对方,随之在心中刻画出对方真实的模样,那么这时,两人的关系就从爱上幻想进入到爱上对方了。到了这个阶段,再兴高……绒羽绒服是什么意思冬季购买衣服的时候总会看见羽绒衣服的标牌上有90绒、95绒、85绒这种标识,那么90绒羽绒服是什么意思呢?接下来就让她时代的小编给大家详细介绍一下。感兴趣的伙伴快来了解一下吧。……简历不该出现的十大问题校园招聘中最受欢迎的简历简历不该出现的十大问题简历是给用人单位留下对你的第一印象,如果你的简历出现了问题的话,可能就留下不好的印象或是完全没有印象,你也不可能获得面试的机会。以下是求职简历不该出现的十……存在离线发票不能上报汇总怎么处理存在离线aclasstaghrefwiki10576IFaMZ8a1。html发票a不能上报汇总怎么解决?可以在联网的状态下,先上传离线发票,再进行上报汇总。具体操作方式如下:……正确的记事本打开方式能渲染图像还能金磊发自凹非寺量子位报道公众号QbitAI渲染3D图像,一个记事本就够了。最近,GitHub上一名叫KyleHalladay的小哥,便上传了这样一个项目,用记事本来……创业的艰难与不易表现在哪里呢想赚钱必须做好吃苦的创业的艰难与不易表现在哪里呢?想赚钱必须做好吃苦的准备孟子曰:天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤。成语中有一句艰难困苦,玉汝于成,意思都是说创业的艰难与……我微信有个好友可我还是找不到合作方我该如何让1082个好友成为我的人脉圈呢?与强势IP合作如何避免品牌黑洞呢如何在同事和老板面前塑造一个专业的职场人设呢?最近为了筹备一个神秘新项目,做了一个小……
圆脸适合什么发型圆脸女生发型设计蔻依早秋女装系列融合男装与运动风格的全新时尚小谗猪与聪明狗自制去黑眼圈眼膜大全不花钱的去黑眼圈小妙招价格便宜和贵的面膜有什么区别中长发怎么扎好看减龄甜美马尾辫发型戴假发的好处和坏处与办公区的上司说上司相互间的坏话为风水免费领流量方法分享这家健身房年开出家店估值亿元小心不及时和员工签订劳动合同要付双倍或更多工资自媒体是什么为什么生意一直好的店铺近几年持续下降兵家必争的戈兰高地有哪些特殊战略意义?这些你未必知道性爱技巧更容易深入的性爱技巧过年跪拜礼的起源是哪里拜年行跪拜礼的正确方法孕妇生下龙凤胎,大家为儿女双全庆祝,大夫真不是双胞胎别再空难刷屏,人生无常,享受美好旅行才是生活本真听兔子说话投准练习说课稿材料先做力量训练还是有氧纯力量训练能减肥吗小孩喝生水有什么危害换个角度观察作文实体店如何做好抖音宣传推广抖音上怎么包汽车防晒罩的使用方法

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找