精华内容
下载资源
问答
  • Windows编程

    千次阅读 2019-01-08 22:38:24
    在进行PC程序开发的时候,我大多数首选的是Qt,但是Windows编程也很重要。下面就介绍下Windows编程的主要概念 Windows编程的主要概念 句柄 一个句柄值是指使用的一个欸一的整数值,即一个4字节(64位程序中位8...

    引言

    在进行PC程序开发的时候,我大多数首选的是Qt,但是Windows编程也很重要。下面就介绍下Windows编程的主要概念

    Windows编程的主要概念

    句柄

    一个句柄值是指使用的一个唯一的整数值,即一个4字节(64位程序中位8字节)长度的数值,来便是应用程序中的不同对象和同类对象中的不同实例。MFC中没建立一个窗口,这个窗口就会有一个窗口句柄来唯一标识它。
    但是句柄不是一个指针。

    句柄和指针之间的区别

    • 首先,指针指向系统中物理内存的地址,而句柄是windows在内存中维护的一个对象内存物理地址列表的整数索引,句柄是一种指向指针的指针。

    使用句柄的原因

    • 在windows系统中的内存管理一般会将当前处于空闲状态的对象的内存释放掉,当需要访问的时候再重新提交分配物理内存,从而导致对象的物理地址是变化的,这样就不允许系统直接通过指针来访问(物理地址不断变化)的对象。

    句柄的功能

    • 句柄是一种指向指针的指针。由于windows是一种以虚拟内存为基础的操作系统,其内存管理器经常会在内存中来回的移动对象,以此来满足各种应用程序对内存的需求。而对象的移动意味着对象内存地址的变化,正是因为如此,如果直接使用指针,在内存地址被改变后,系统将不知道到哪里去再调用这个对象。
    • windows系统为了解决这个问题,系统专门为各种应用程序腾出了一定的内存地址(句柄)专门用来记录这些变化的地址(这些内存地址就是指向指针的指针),这些内存地址本身是一直不变化的。windows内存管理器在移动某些对象之后,他会将这些对象新的内存地址传给句柄,告诉他移动后对象去了哪里。

    句柄(稳定的)---->记载着对象在内存中的地址---->对象在内存中的地址(不稳定的)---->记载着实际对象的地址。

    在这里插入图片描述

    图中实线表示初始化的情况,虚线表示在内存管理器处理之后的情况

    事件与消息

    事件(Event)是用户操作应用程序产生的动作或者Windows系统自身所长生的动作。
    消息(Message)就是告诉应用某i个事件触发了。

    消息队列与消息循环

    当一个事件发生时,Windows会为应用程序发送一条消息,并在该应用程序的消息队列中增加一条消息。该消息队列只是一个保存可应用程序所接收到的消息的优先队列。
    应用程序在一个消息循环中不断的检查消息队列,当收到一条消息时,便将其分派给接收该消息的特定窗口的过程。

    回调函数

    回调函数就是一个通过函数指针调用的函数。
    如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们便说这既是回调函数。
    回调函数不是由该函数的实现方法直接调用,而是在特定的条件或事件发生时,由另一方调用,用于对该事件或条件进行响应。

    展开全文
  • windows编程入门

    千次阅读 2019-02-14 22:26:11
    记录一下windows编程编写一个消息框,算是学习windows编程的入门级程序吧 以下代码来自:《windows游戏编程大师技巧(第二版)》 #include<Windows.h> #include<windowsx.h&...

    记录一下windows编程编写一个消息框,算是学习windows编程的入门级程序吧

    以下代码来自:《windows游戏编程大师技巧(第二版)》

    #include<Windows.h>
    #include<windowsx.h>
    #include<string>
    #include<sstream>
    /*
    WIN32_LEAN_AND_MEAN:指示编译器不要包含我们不需要的MFC内容
    */
    #define WIN32_LEAN_AND_MEAN
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow) {
    	/*
    	WINAPI:强制参数从左向右传递
    	hinstance:该参数是windows为你应用程序生成的实例句柄。实例是一个用来跟踪资源的指针或数
    	hprevinstance:该参数已经不使用,在旧版windows里,它跟踪应用程序以前的实例(就是产生当前实例的应用程序实例)
    	lpcmdline:空值终止字符串,如:test.ext one two three 则,lpcmdline = “one two three”
    	ncmdshow:在启动过程中传递给应用程序,带有如何打开主应用程序窗口的信息
    	*/
    	int a = MessageBox(NULL, "THERE CAN BE ONLY ONE!!","MY FIRST WINDOWS PROGRAM", MB_OK|MB_ICONEXCLAMATION);
    	// MessageBox常用于以不同的图标和一个或两个按钮来显示信息
    	/*
    	函数原型:
    	int
    	WINAPI
    	MessageBoxA(
    	_In_opt_ HWND hWnd,     // 信息框的父窗口,null代表桌面是父窗口
    	_In_opt_ LPCSTR lpText,  // 包含显示文本的空值终止字符串
    	_In_opt_ LPCSTR lpCaption,  // 包含显示文本框标题的空值终止字符串
    	_In_ UINT uType);    // 决定显示那种信息框
    	*/
    	return(0);
    }
    

    运行结果如下:
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • windows编程学习感悟

    千次阅读 2020-08-23 17:54:37
    windows编程学习感悟开始学习系统设计安全方向生态未来推荐 ps:这是一个感悟blog,为想学windows编程的提供一点方向,也是对自己看了一个暑假的windows书籍的一个小总结。 开始 先说一下博主的知识积累,博主是高三...


    ps:这是一个感悟blog,为想学windows编程的提供一点方向,也是对自己看了一个暑假的windows书籍的一个小总结。

    开始

    	先说一下博主的知识积累,博主是高三因为爱好学的linux,从鸟哥的linux私房菜入门
    基本能熟悉使用各种linux发行版,也在centos6上编过几个小程序,网络,java(做过游
    戏),c,c++也都略懂点,现在是个大一学生,那为啥好好的linux不搞了,开始搞windows
    了呐,这和博主的爱好有关,博主比较喜欢安全,所以喜欢研究木马啊,蠕虫啊啥的
    但是linux和windows的架构区别有很多不同,而比如kali上的metasploit的木马生成等
    都是不懂本质所以开始了windows的入坑之路,好了,我们开始进入正题
    

    学习

    	首先给想学习windows的同学打一一剂强心针,如果你想学计算机,学好windows
    肯定是有前途的,你至少能得到底下三个方面的知识1. 系统设计 2.安全知识 3.生态
    未来,别看linux现在炒的很火,但windows的用户基数在哪放着呐,接下来我就这
    三个方向给大家说一下,本人也是初学,说的不好请大家多多指正。
    

    系统设计

    	计算机系统无非就是三大块,进程,内存管理和图形界面。(堆栈哪些属于编程
    语言)windows的图形界面就不用我说了吧,占有量第一不是开玩笑的,质量相当高
    有很好的设计理念,内存管理是安全的第一道大关,windows的安全性在操作系统
    领域是相当好的,有人会说,那怎么windows天天闹病毒,闹木马,你要想想全球有
    多少人在天天给windows挖掘漏洞,懂的人都懂。有位大牛说过,在计算机领域,只有
    没人用的系统和天天被骂的系统,大家自己想吧。进程这一块,linux的posix模型比较
    简单很适合学习,但很难写出好用的东西,不够先进,写字符,计算那一块还可以,
    图形就差远了,windows这一块做的很好。当然,我夸了windows很多,也不是说win
    dows就是完美的,windows的缺点就是很复杂,而且为了保持兼容有很多臃肿的东西
    ,linux则没有这个毛病,所以说linux很适合理论,但这是不可避免的,毕竟windows
    是个商业系统为了功能性,和保持兼容,这些都是无法减少的。至于硬件,linux和
    windows差不多,我以后有时间再写
    

    安全方向

    	这是今天的主题,也是我最初学习windows的原因,我也是从小白一路上来的,刚
    开始也是在网上复制别人的脚本恶搞,但慢慢的不满足了,想要学习更深的东西,于
    是接触了kali,就那个专业搞渗透的linux系统发行版,在哪期间我学了神器metasploit
    ,wireshark,nmap等等,也看了很多书,如metasploit渗透测试魔鬼训练营等等,但
    慢慢你会发现用工具局限性太大了,你要完全按照书上的设置去搞,成功率还不高
    而且遇到了问题发现自己基础知识的欠缺很严重,根本无法彻底的解决。于是我就
    开始转向了基础的学习。
    	学了一段时间后,发现了自己以前走的都是弯路,真的。感觉以前自己太依赖工具
    了,工具只不过是个辅助而已,对于真正的大神来说,即使没有工具,自己也能写出
    来,我不是说工具不重要,只是哪一个才是本质,比如修车师傅和修车工具,修车师
    傅如果没有扳手的确很难干活,但他可以用别的东西去代替。而且随着学习,你还能
    开阔视野,以前只知道盗关键文件,如/etc/password.txt(linux上的)密码文件但是
    你在windows上这是行不通的,一有加密,即便你要用彩虹表爆破,那也很费时间,你
    会学到一些经典方法,键盘记录,界面欺骗,等等。虽然现在没有那么容易了,但衍
    生出来的手段也基本从这里面出来的,而这些你肯定要会windows编程,(是win32)
    如界面欺骗,界面你总要自己写吧。而且你会了解很多windows用户不知道的东西,
    知识不对等的好处就不用我说了吧。还有很多,就不一一赘述了
    

    生态未来

    	因为win32编程是com的基础,你学会了win32,学com,ump不敢说三天速成,但
    比别人快一倍肯定没问题,我估计我还说少了,然后你再看工具类的书就是水到渠成
    你知道该看啥,一本几百页的书几天就能看完,其实很多时候程序员都是这样的,
    程序员哪有时间天天看那么厚的书,还要写程序,基础的书精读,很多工具书都是
    查读,但你知识储备不够就是另一个故事了。
    	还有别的,我就不说了。自己看吧,说太多你们也记不住。
    

    推荐

    	写了这么多,很多人想学有可能不知道看什么书,简单推荐两本。更多的可以自行
    百度。c/c++:<<c++ primer plus第六版>>,windows:《windows程序设计第五版》
    别看第六版,第六版是讲c#的,还有《windows核心编程第五版》这些都是要精读
    今天的blog就写到这了,该吃饭看书,兄弟们,下次见。
    
    展开全文
  • windows编程_远程注入安全

    千次阅读 2020-07-16 11:24:20
    windows编程_远程注入安全

    远程注入

    1.向目标进程中申请内存
    2.向目标内存中写入shellcode(没有特征码,但编码麻烦)
    3.创建远程线程执行shellcode
    –>
    dll:获取dll的路径,然后加载dll

    dll的加载
    1.静态调用,通过在我们程序中添加头文件,以lib文件来完成调用
    2.动态调用,一个dll即可

    dll导出函数

    法1:添加def文件

    EXPORTS
    CeShi()
    

    法2:

    extern "C" {
    			_declspec(dllexport)void _stdcall CeShi() 
    			{
    				MessageBox(NULL, NULL, NULL, NULL)
    			}
    
    		}
    

    这样导出的dll有名称粉碎

    调用约定 特点 传参方式 平栈 例子
    _stdcall 标准 栈传参 函数内部 大部分windowsapi
    _cdecl C 栈传参 函数外部 wsprintf
    _fastcall 快速 寄存器传承
    _thiscall 类的thiscall调用约定 使用ecx传递this指针
    加载dll

    1.将目标dll加载到我们的进程

    char *p=R"(\t\r\n)"  //去除转义
    HMODULE hDLL=LoadLibraryA(R"(路径)");
    

    2.计算dll中导出函数的地址

    PFN_FOO lpFOO=(PFN_FOO)GetProcAdress(hDll,"CeShi');
    

    3.执行函数

    lpFoo()
    

    实现远程注入,创建远程线程,加载loadlibrary,loadlibrary函数就在kernel32,大家的kernel32是一样的,所以这个loadlibrary在kernel32里的位置差是固定的,利用固定位位置差,实现加载loadlibrary。

    展开全文
  • Windows程序内部运行机制--Windows编程课程学习笔记 二. MFC框架程序分析--Windows编程课程学习笔记 三. 简单绘图--Windows编程课程学习笔记 四. 文本编程--Windows编程课程学习笔记 五. 菜单编程-...
  • Windows编程经典书籍

    千次阅读 2018-11-28 15:40:07
    本人是刚刚开始学习windows编程的,感觉看雪学院的大牛很NB.想找一些书籍来看学习学习,可是不知道看哪些书好.驱动,对菜鸟们来说真是一个很深奥的话题,所以 ,我找来了这篇文章供大家分享,以后大家发现什么好书就在楼下...
  • Windows编程实现俄罗斯方块

    千次阅读 2017-07-05 11:33:16
    Windows编程实现俄罗斯方块
  • 1. Windows 编程基础:开发环境和开发过程。 2. Windows事件驱动模型和消息机制。 3. Windows的资源:图标、光标、菜单、位图等。 4. Windows绘图:图形和文字的显示。 5. 对话框和控件。 6. 静态库和动态库。 ...
  • 用C语言进行Windows编程入门

    千次阅读 多人点赞 2019-08-19 11:13:21
    用C语言进行Windows编程入门 本文对一般教程或网上有的(如C语言语法等基础)不深入介绍,对初学者易造成疑惑误解或难以找到的内容进行较详尽的介绍。 学习C语言很久了,一直面对控制台应用程序(Win32 Console ...
  • windows编程之Windows Shell 编程

    千次阅读 2017-04-11 16:26:38
    这里仅仅是记录下该资源,推荐到下文列出的连接进行... 看过一些对windows 外壳的扩展程序,在使用上一般都是直接利用windows的外壳API做一些工作,因为外壳操作需要一些比较专业的知识,因此,大部分编程人员特别是
  • windows编程书籍推荐

    2015-03-28 16:23:25
    本文从3个维度列出了学习《windows程序设计》的经典书籍,自己留个底也希望能对大家有所...windows编程基础类: 《windows程序设计》 《深入浅出MFC》 《windows图形编程》 《win32系统编程》 《win32多线程程序设
  • 这一章开篇语对我有很大的启迪,一直对Windows下编程有着畏难心理。...而现在受到这本书的启发,对Windows编程 的畏惧少了一些,也有了一些学习计划: 1.窗体界面 -> Win32\MFC (简单了解界面消息处理机制吧
  • 这篇文章,我们通过一个最简单的Windows程序,大体感知一下Windows编程。完成我们在Windows编程中的“HelloWorld”。
  • Windows编程学习路线

    千次阅读 2014-09-21 00:23:42
    本文主要给大家介绍关于我们在学习Windows编程方面需要用到的书籍     这里只讲关于Windows编程方面的书籍,范围也在其左右.  Start:   1. 用于入门C语言的书籍   《C程序设计》 - 谭浩强   很多...
  • Windows编程之双进程守护

    千次阅读 2017-12-26 20:25:39
    Windows编程之双进程守护Windows编程之双进程守护 需求分析 设计原理 相关函数 设计详细 方法1 方法2 项目测试情况 方法1 方法2 总结 需求分析设计实现双进程守护程序,当两个进程同时运行时,关闭其中任意一个,另...
  • windows socket编程(20) windows 串口编程(2) windows 流媒体编程(12) windows 编程(19) windows 网络编程(5) Ndis 网络驱动编程(28) 文学杂谈(3) 算法优化(6) 视频 图像处理(32) OpenCv(4) c c++(42
  • Windows编程入门-设备环境句柄

    千次阅读 2017-02-19 21:25:50
    Windows编程获取设备句柄的两种方法
  • MFC Windows 编程符号

    千次阅读 2013-11-15 16:31:04
    MFC Windows 编程符号  这些符号也是 MFC 支持文件的组成部分,但它们支持标准的 Windows 应用程序功能和操作。 这些符号主要用于菜单。 当在菜单编辑器中处理菜单时,这些符号将出现在与公共菜单命令关联的...
  • Windows编程中Palette有什么作用?? 为什么我创建了灰度色调调色板还是可以输出其他颜色的字? 还请大神们帮忙解释一下Windows逻辑调色板的作用和用法哈
  • windows编程经典书籍

    千次阅读 2013-12-22 15:53:41
    本人是刚刚开始学习windows编程的,感觉看雪学院的大牛很NB.想找一些书籍来看学习学习,可是不知道看哪些书好. 驱动,对菜鸟们来说真是一个很深奥的话题,所以 ,我找来了这篇文章供大家分享,以后大家发现什么好书就在...
  • Windows编程C++之句柄

    千次阅读 2016-02-01 16:15:19
    窗口是windows编程的核心,那什么是窗口?此时浮现在你脑中窗口的应该是这个样子的 这种类型的窗口叫做应用窗口或者主窗口,窗口内部的区域叫做client area,是由用户自己的程序管理的,窗口外的区域是由OS管理的。...
  • windows编程怎样屏蔽Ctrl+alt+delete?有个函数只对XP有效,有没有对win7有效的?
  • Windows编程初步

    千次阅读 2005-03-29 10:19:00
    Windows编程初步 目前来说Windows已经家喻户晓,它的历史是Microsoft历史上最辉煌的一页.人们现在已经基本上使用Windows操作系统,因此在编程方面我们有必要从DOS环境编程向Windows编程转变.本文将向大家介绍Windows...
  • windows 编程的学习次序

    千次阅读 2013-02-17 12:48:33
    如何学习Windows编程 经常有初学者询问如何学习Windows编程? 很多人从MFC开始学习,结果常常是一头雾水,知难而退;也有人毅力坚强,熬过了MFC的阵痛期,最后却是知其然而不知其所以然,并且思维被限制在MFC的...
  • MingW环境下的windows编程

    千次阅读 2013-09-06 00:01:12
    一般在进行windows编程时都使用vc++精简版,其插入菜单,图片等资源等更简单,且vc中对中文有更好的支持,win7下安装的Mingw中文并不能很好地显示,有光标显示的位置和光标实际位置不符的问题。 MingW创建windows...
  • Windows编程捕获特定窗口及键盘鼠标消息模拟一、简介二、使用到的API简介三、获取Windows记事本的编辑区窗口的句柄并模拟输入操作1、分析2、代码一3、代码二四、后记 一、简介 窗口是Windows的核心组件,Windoows下...
  • windows编程独立程序音量控制或选择?怎么选择前台的应用程序发声,所有后台和系统不发声?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,389
精华内容 29,755
关键字:

windows编程