摘要:
测试环境:Win7 64位 + VC 6.0最近玩一款网页游戏,想着自己做个模拟辅助用用,于是下载了一个大漠插件,但是各种注册就是不成功,通过查阅网上各位前辈的资料,终于将问题解决,现将方法分享给大家,如有什么不正确的地方还请大家指正。注意的几点:1、大漠插件必须要注册之后才能使用。2、注册时要保证dm.dll,在你要注册的路径下。3、使用大漠函数时,要加上dm.h头文件首先,大漠的DLL,不是普通的DLL,它是一个Active x插件,必需要注册之后才能使用,注册是否成功可以用dm.GetBasePath() 函数看看能否获得正确的路径,获取不到表示注册不成功。1、建立一个MFC对话框工程, 阅读全文
摘要:
首先来看一下CreatProcess函数的原型:BOOL CreateProcess( LPCWSTR lpApplicationName, //指定可执行文件的文件名 LPCWSTR lpCommandLine, //指定可执行文件的运行参数 LPSECURITY_ATTRIBUTES lpProcessAttributes, //进程安全属性 LPSECURITY_ATTRIBUTES lpThreadAttributes, //线程安全属性 BOOL bInheritHandles, //指定当前进程中的可继承句柄是否可以被新的进程继承 DWORD dwCreationFlags,//指 阅读全文
摘要:
做个笔记,如有理解错误,还请指正,参考了《高质量程序设计指南 c++/c语言》作者:林锐 韩永泉 阅读全文
摘要:
引用moreeffectivec++中的解释: 指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢? 首先,要认识到在任何情况下都不能用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。 “但是,请等一下”,你怀疑地问,“这 阅读全文
摘要:
一个程序的栈空间是连续的一块区域。且随着函数调用不断的向上生长(向低地址方向增长),为了理解栈结构,画了个简单的栈结构图,不是很完整,寄存器环境的保护未体现,这个程序就是一个累加和的函数调用,本人也是初学者,如果有理解错误,还望指正,谢谢。 阅读全文
摘要:
刚学习不太理解GetCommandLine函数的作用,所以网上搜索了一下,做个笔记,理解不一定准确,还望大家指点。 win32可执行程序分为两种类型,基于控制台(Consol-based)的和基于窗口(Windows-based)的。基于控制台程序它的入口函数是传统的main,基于窗口的则是WinMain。这两个入口函数一大区别是对于命令行参数的处理。WinMain函数原型为:int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)窗口应用程序的运行需... 阅读全文
摘要:
要设置图标文件分这么几步:首先要定义图标文件,就是32*32或16*16大小的ICO文件。在程序的.RC文件下进行定义:#define IDI_APP_ICON100(图标文件的ID号)IDI_APP_ICON ICON“图标文件的位置”通常图标文件我们就放到资源文件夹中。然后我们还需要在头文件中定义一下:IDI_APP_ICONequ100.第三步在定义窗口类结构体时装载图标文件:invoke LoadIcon,NULL,IDI_APP_ICON movwnd.hIcon,eax movwnd.hIconSm,eax首先是加载图标文件,hIcon和hIconSm都是图标句柄,前一个是用以指. 阅读全文
摘要:
switch多分支结构根据case语句的不同一般分为一下几种情况:一、在case语句小于3条时效率跟if……else的执行效率差距不大,不同的是switch是把所有的判断集中放到一起,判断完成后直接跳到相应case语句的地址处,而if……else结构则是每一个判断后紧跟着相应的语句。这里我们主要分析的是case语句大于3条的情况,我们以下面的程序为例分析一下case值有序线性的switch结构(case差值不能大于6):其对应的反汇编代码如下:Switch结构运行时,会制作一个case语句地址数组,即case表,里面存放着每条case语句的首地址,上图中红色框内的地址,数组下标就用case语句 阅读全文
摘要:
对于scanf函数,它将参数视为一个地址,将键盘输入的字符传到这个地址中去,通常我们都是用的&地址的符号,事实上如果一个值恰好是一个地址的话,不加&也一样可以的:如下例(测试环境为Win7 64位):#include void main(){ int n = 0x18ff48; int m = 0x18ff44; //查看此时n,m的地址和值printf("%x:%x\r\n",&n,n); printf("%x:%x\r\n",&m,m); scanf("%p",n); scanf("%p& 阅读全文
摘要:
1、 补码和求补运算补码:对于一个带符号的数来说,正数三码合一(原码、反码、补码都一样);负数的反码为其原码除符号位以外的各位按位取反,负数的补码是先取反然后加一,不要忘了负数的符号位为1。求补运算与补码的区别在于,求补运算时不考虑是否有符号位,所有的位都要取反,最后加一,它求得的结果不是求这个数的补码,而是这个数相反数的补码。以0-0xFF之间数的减法为例: X-Y=X+(-Y)=X+(0x100-Y)-0x100 Y+Y(反)=0xFF Y+Y(反)+1=0x100由以上三个式子可以推导出,neg(Y)=0x100-Y=Y(反)+1,即X-Y=X+NEG(Y)。注:1)这里我们要区分一个反 阅读全文