- 博客(42)
- 资源 (8)
- 收藏
- 关注
原创 uses-permission和permission的区别
Permission是Manifest中的一个类,标注了很多权限,当应用程序需要利用系统中其他程序的功能时候,就需要在xml中标注本Application中的权限。 我们在Manifest配置Persmission是会发现有两个Permission,分别为permission和uses-permission,它们两个的的区别:1.意义不一样:是官方定义的权限,是调用别人的东西的时候
2016-10-12 16:11:49
8658
1
原创 windows服务操作
在平时的开发的过程中会涉及到一些系统服务或用户自定义服务的操作.下面主要从两方面简单讲述服务的操作:一. 对现有服务的操作: 1.任务的服务操作第一步必须打开服务管理对象: OpenSCManager(); 2.通过"服务显示名称"(Display Name)获取"服务名称"(Service Name): GetServiceKeyName();显示名称可以
2013-04-01 14:04:35
981
原创 基于VS2008的Wireshark开发环境的搭建
一.编译环境的搭建1.1 下载安装Cygwin下载地址:http://www.cygwin.com/setup.exe 介绍:cygwin是一个在windows平台上运行的unix模拟环境,提供了基于Win32的unix工具集,是cygnus solutions公司开发的自由软件。它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特
2012-09-11 14:14:04
5690
1
原创 数组名
数组名是一个比较特殊的存在.我们都知道的就是数组名是数组的首地址,初学的可以把它理解成指针,通过指针操作可以获取数组内容; 但它跟指针还是有区别的:指针是一个变量,指向一块空间,同时指针本身也存储在某个空间;而数组名是符号地址常量,在编译时求值并存在编译器的符号表里面,其值就是个内存地址,可以认为程序没有给其分配空间,数组名只是代表了那个数组空间; char ch[100
2012-06-08 10:37:36
848
原创 粗谈pcap_next_ex()
pcap_next_ex(pcap_t* p,struct pcap_pkthdr** pkt_header,const u_char** pkt_data)功能: 从interface或离线记录文件获取一个报文参数: p: 已打开的捕捉实例的描述符 pkt_header: 报文头 pkt_data: 报文内容返回值: 1: 成功
2012-05-25 11:51:29
26784
4
原创 Win32DLL源码换编译器
之前用VC6写了个数据包解码的DLL,框架比较简单,里面全部是字符串的拆分组合解析!前几天想把这些代码转到VS2008上面去编译!用VS直接创建了个空的DLL工程,然后把原有代码全部添加到新的工程里面(包括模块定义文件def)!编译通过,完全没问题! 用Dependency Walker一看,发现问题了!导出函数列表是空的!打开工程找到模块定义文件,里面没问题啊!全部导出函数都在!重新编译
2012-05-22 17:17:33
927
原创 使用动态光标
静态光标文件*.cur既可以定义在资源文件,也可以动态加载,但动态光标*.ani只能通过文件方式使用LoadCursorFromFile函数装入!
2012-03-25 18:07:39
1418
转载 C程序为例内存分布详解
附程序分布图:程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)— 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静
2012-03-04 11:29:31
790
原创 fatal error C1088
今天用VC6编译一个原来的工程,出现链接错误: fatal error C1088: Cannot flush compiler intermediate file: 'C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\a12072ex': No space left on device 之类的错误. 报错的原因居然是C盘空间不足!!...-_-|||
2011-10-24 11:25:43
5171
2
原创 BSTR与CString之前的转换
一. BSTR是进行COM编程时试用的字符串类型,对BSTR类型变量进行复制有两种方式: 1. CString提供的转换函数,CString::AllocSysString来进行转换:CString str("Hockey is Best!");BSTR bs
2011-10-17 11:30:07
770
原创 DAMAGE: after Normal block (#) at 0x....错误分析
在大量试用动态内存分配时很容易发生错误,譬如:,发现这个问题时,我很郁闷,因为这个bug不是经常出现的!经过大量的数据去测试,才发现这样的问题,根据不断的重复调试,最后定位到delete;new和delete的代码行很简单;就一行代码,问题出现在这里,应该就是内存操作出现问题
2011-09-08 14:41:42
7573
2
原创 判断系统中的CPU 是Little endian 还是Big endian 模式
Little endian 和Big endian 是CPU 存放数据的两种不同顺序。对于整型、长整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节);而Little endian 则相反,
2011-07-04 11:10:12
2708
原创 格式化固定长度字符串,格式化字符串里显示百分号
一. 在编程过程中经常需要格式对齐,这就需要把字符串格式成固定长度: 1: C++提供了setiosflags()来设置输出格式,setw(int)设置输出宽度: cout cout
2011-05-17 17:02:00
12564
原创 删除Internet缓存
<br /> 用浏览器浏览网页时,所有的网页资源其实都已经下载到本地,浏览器会把这些网页资源统一放到一个文件夹"Temporary Internet Files"里.可以通过查看"Internet临时文件"查看到所有的网页资源.以IE浏览器为例:依次打开 工具-Internet选项,"常规"页签里有个"Internet临时文件","设置"按钮里可以查看,移动,删除这些临时文件.<br /> IE缓存避免了网页占用过多内存,下次再浏览这些网页时就可以直接从缓存中读取,不需要重新下载,加快浏览速度
2011-04-20 11:52:00
2577
转载 Windows Socket五种I/O模型
如果你想在Windows平台上构建服务器应用,那么I/O模型是你window 服务器平台必须考虑的。Windows操作系统提供了选择(Select)、异步选择(操作系统 window selectWSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口wsaasyncselect wsaeventselect overlap(Completion Port)共五种I/O模型。每一种模型均适用于一种特定的complet port 适
2011-02-15 17:28:00
1016
原创 __declspec(dllexport) 和 __declspec(dllimport))
一. DLL 中导出函数的声明有两种方法:(1).采用模块定义(.def)文件声明,def文件为连接器提供了有关被连接程序的导出,属性及其他信息 说明: 1.LIBRARY语句说明.def文件相应的DLL; 2.EXPORTS语句后列出要导出函数的名称。可以在.def文件中的导出函数名后加@n,表示要导出函数的序号为n; 3.def 文件中的注释由每个注释行开始处的分号 ";" 指定,且注释不能与语句共享一行。(2). 在函数声明中加上__declspec(
2011-02-12 17:30:00
846
原创 ShellExecute详解
<br />ShellExecute()功能: 运行一个外部程序,并对外部程序有一定的控制.<br />原型:<br /> HINSTANCE ShellExecute( HWND hwnd, <br /> LPCTSTRlpOperation,<br />
2011-01-19 11:06:00
1289
原创 变量名
<br />1.变量: 用来标识一块内存区域,这块区域一般可以更改;<br />2.变量名: 一个标识符,用来指代一块内存区域,即变量;使用变量可以让我们以区域,块为单位操作内存,提高效率;<br /> 在机器代码中是不会出现变量名的;变量名是让程序员操作内存用的!<br /> 对于编译器,它会收集我们的变量名:<br /> int a: 编译器的工作: 1.为变量分配4字节的内存空间; 2.把变量名保存进符号表; 3.用这个符号表的索引对应实际的空间;<br /> 如果出现b =
2010-09-26 16:05:00
1936
原创 修改VC工程名称
<br />按照下面三步就可以修改VC工程的名称:<br />1.将原来的工程文件(.dsp文件)重命名为新的工程名;<br />2.用记事本打开工程文件,将工程文件中出现的原有工程名改成新的工程名,包括资源文件;<br />3.修改资源文件(.rc)的名称;
2010-09-25 16:15:00
838
转载 (转载)VC 操作 OutLook的方法
<br />//vc 好像msdn里面对这个说的不是很清楚,vb道是有实例,和vc很类似拉可以参考的。<br />我是在mfc里面实现的 <br />首先在stdafx.h里面加入如下:<br />#import "C:/Program Files/Common Files/Microsoft Shared/OFFICE11/mso.dll" rename_namespace("Office"), named_guids<br />#import "C:/Program Files/Microsoft O
2010-08-17 16:06:00
1927
原创 32位高低字节拆分与合并
<br /> 在MFC中一个32位整数基本都包括高字节数据和低字节数据;<br /> 1. 可以利用LOWORD()和HIWORD()获取它的高字节数据和低字节数据:<br /> int nLow = LOWORD(lParam);<br /> int nHig = HIWORD(lParam);<br /> 2.也可以利用MAKELONG()宏来讲两个16位数合并成32位数:<br /> WORD one = 200;<br /> WORD two = 300
2010-08-16 15:37:00
9823
原创 在release版本调试程序
<br /> 有时候程序在Debug版本下能够正常运行.而在release版本下就会出现问题.所以有时候需要在release版本下调试程序;<br /> 设置步骤:<br /> 1.Project->setings->C/C++,"Optimization"组合框选择"Default"选项;<br /> 2."Debug info"组合框选择"Program DataBase for Edit and Continue";<br /> 3.在"Link"选项卡中选中"Generate deb
2010-08-12 12:02:00
639
原创 #pragma命令详解
#pragma命令的作用: 是设定编译器的状态或者是指示编译器完成一些特定的动作. 格式: #pragma 参数 1.#Pragma message(“消息文本”) :在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。 2.#pragma code_seg( ["section-name"[,"section-class"] ] ) : 设置程序中函数代码存放的代码段,当我们开发驱动程序的时候就会使用到它。 3.#pragma once :
2010-06-11 11:12:00
729
原创 VC6调试时弹出find resource对话框
调试程序时会经常弹find resource对话框出现这种情况基本都是按F11调试时和调试到系统函数时出现的; F10是Step Over,也就是有函数的时候直接执行完。 F11是Step Into,也就是有函数的时候跟进去单步执行。 在调试到系统函数处时,按F11想跟进去,可是工程中根本就没有记实现系统函数的源代码(也就是find resource对话框需要你找的文件),系统当然要手动的找到那个文件了。
2010-05-31 17:33:00
1240
原创 PreTranslateMessage解析
virtual BOOL PreTranslateMessage( MSG* pMsg );功能: 在消息被分派到Windows的TranslateMessage和DispatchMessage函数之前进行转换。参数: pMsg指向一个MSG结构,其中包含了要处理的消息。返回值: 如果消息被转换但是不会被分派,则返回非零值;如果消息没有被转换并且要被分派,则返回0。
2010-05-28 17:19:00
968
原创 判断字符串中的中文字符
中文字符是按照双字节编码的;也就是说一个中文字符占两个字节;通过判断当前字符是否是双字节边个的前一个字节就可以判断字符串中是否有中文汉字;函数: BOOL IsDBCSLeadByte( BYTE TestChar );功能: 判断TestChar是否是双字节编码的前一个字节;代码如下: void main(){ char ch[] = "I am 校
2010-05-27 17:01:00
1059
原创 数组名作为函数参数
函数名作为函数参数的形式: 1.void fun1(char *a,int length); //数组名 { for(int i = 0; i cout } 2.void fun2(char a[],int
2010-05-27 12:10:00
2668
原创 CListctrl扩展样式
调用DWORD SetExtendedStyle(DWORD dwNewStyle )函数设置CListCtrl的扩展样式;dwNewStyle指定的扩展样式 LVS_ALIGNLEFT //以图标向左对齐 LVS_EX_GRIDLINES //绘制表格 LVS_EX_SUBITEMIMAGES
2010-05-25 15:39:00
1711
原创 清空internet临时文件夹Temporary Internet Files
在XP平台上,直接调用DeleteFile()函数是不能删除临时文件夹里面的文件的!需要调用FindFirstUrlCacheEntry()和FindNextUrlCacheEntry()查找Internet Cache的入口,获取缓存文件夹里文件的信息,然后调用DeleteUrlCacheEntry()删除指定文件名的缓存文件; 添加头文件:wininet.h添加引入库: Win
2010-05-17 13:57:00
2585
原创 route命令详解
route命令可以查看和修改本机的路由表;1.route print :查看本机的路由信息;2.route ADD :添加路由 route ADD 157.0.0.0 MASK 255.0.0.0 157.55.80.1 METRIC 3 IF 2 157.0.0.0 :destination(网段地址->路由的网络目标地址,目标地址可以是一个 IP 网络地址(其中网
2010-03-19 14:56:00
2048
原创 多网卡FTP测试,绑定本地IP地址
如果您有多个接口并为每个接口配置了一个默认网关,那么默认情况下 TCP/IP 将根据接口速度自动计算接口跃点数。此接口跃点数将成为所配置的默认网关的路由表中的默认路由的跃点数。最高速度的接口具有默认路由的最低跃点数。这样,只要在多个接口上配置多个默认网关,就会使用最快速度的接口将通信转发到其默认网关。如果相同速度的多个接口具有相同的最低接口跃点数,那么根据绑定顺序,将使用第一个网络适配器的
2010-03-19 12:01:00
4705
原创 netstat -an 中State说明
LISTEN : 侦听来自远方TCP端口的连接请求;SYN-SENT : 在发送连接请求后等待匹配的连接请求;SYN-RECEIVED : 在收到和发送一个连接请求后等待对连接请求的确认;ESTABLISHED : 代表一个打开的连接,数据可以传送给用户; FIN-WAIT-1 : 等待远程TCP的连接中断请求,
2010-03-16 13:53:00
871
原创 SPY++实例应用-对不知道WindowName的控件的操作
1.利用SYP++查看WIFITRAY程序的主窗口,打开Properties查看Window Caption:WIFI TRAY,ClassName:#32770 (Dialog)HWND hParWnd = ::FindWindow("#32770","WIFI TRAY"); //查找主窗口的句柄2.利用SYP++查看WIFITRAY程序的主窗口上的一个Window Caption为
2010-02-26 10:03:00
1272
原创 ASCII码表完整版
ASCII码表完整版ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符 0 NUT 32 (space) 64 @ 96 、1 S
2010-02-26 09:52:00
436
原创 改变工具栏的背景色,刷新工具栏
1.添加WM_ERASEBKGND()消息响应函数OnEraseBkgnd(CDC* pDC);{ CRect rect; CPaintDC dc(this); GetClientRect(rect); //获取客户区的大小 pDC->FillSolidRect(rect,RGB(100,100,180); //填充背景色 return true;
2010-01-28 11:53:00
970
原创 PeekMessage
只有一种情况需要使用PeekMessage来建立消息队列,那就是PeekMessage之后会有一段时间执行某项工作,然后才正式消息循环,但是消息循环之前可能会有别的线程向你的线程发送消息过来,此时就要预先建立消息队列。
2010-01-21 09:48:00
455
原创 (转)串口通讯中的DCB结构
typedef struct _DCB { // dcb DWORD DCBlength; // sizeof(DCB) DWORD BaudRate; // current baud rate 指定当前的波特率 DWORD fBinary: 1; // binary mode, no
2010-01-20 16:18:00
519
原创 (转)使用Visual C++进行串口通信编程
利用Visual C++在windows环境下设计异步串行通信程序可以使用不同的方法。一种方法可以使用windows系统提供的串行口API函数;另一种方法可以直接使用Microsoft公司提供的ActiveX控件MSCOMM.OCX。利用MSCOMM.OCX控件进行串行口程序设计相对比较简单,只要对该控件的属性、事件和方法进行设置和操作,就能完成简单的串行通信功能。而直接使用windows系统提供
2010-01-20 16:10:00
1183
原创 EASY_SIZE:控件随窗口变化自由调整大小
1.设置对话框属性:Styles->Broder:Resizing2.添加#include"easysize.h"3.在对话框类定义的最前面添加DECLARE_EASYSIZE(注意:没有分号)4.在对话框的OnInitDialog消息函数中添加:OnInitDialog(){ CDialog::OnInitDialog(); ........
2009-12-29 14:24:00
4564
原创 带复选框的CTreeCtrl响应复选消息
1.在对话框中添加CTreeCtrl控件并勾选Check Boxes选项,为CTreeCtrl控件添加CTreeCtrl变量m_tree;2.为CTreeCtrl控件添加NM_CLICK消息响应函数OnClickTree();代码如下:OnClickTree(NMHDR* pNMHDR, LRESULT* pResult) { CPoint point; UINT uFl
2009-12-29 13:14:00
8876
1
系统架构师历年真题答案2009-2017(word版,无水印)
2018-12-17
MediaTest,media player
2010-10-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人