- 博客(52)
- 资源 (27)
- 收藏
- 关注
原创 eMule代码分析-托盘图标
1. 托盘图标 电驴的托盘图标的截图。相关代码的实现在CemuleDlg::OnTrayRButtonUp里面。void CemuleDlg::OnTrayRButtonUp(CPoint pt){ .............. if (m_pSystrayDlg) { m_pSystrayDlg->BringWindowToTop();
2009-12-06 17:31:00
828
转载 CListCtrl
CListCtrl是列表控件类,列表控件的每一行叫做一个item,每一列叫做一个subitem。每一行和每一列都有个ID号,可以确定唯一的单元格。最近使用了这个控件,有心得总结如下: (Dialog模式)
2009-12-04 22:30:00
2080
转载 汇编指令
一、数据传输指令 ─────────────────────────────────────── 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入
2009-08-22 23:13:00
599
转载 学会利用搜索引擎(转自看雪)
我发现初学者往往只是不知道怎么利用网络的资源,所以才会提出一些在老手看来比较“幼稚”的问题。其实在网络上“淘金”还是有技巧的,而我自己是这样寻找帮助的:(在使用MSDN搜索过,并找不到满意的答案的前提下)1、首先使用http://www.google.com例如,前段时间我想找一个对话框淡入淡出的源代码,我就在google里使用了下面的关键字:AnimateWindow 例子代码 SD
2009-08-22 22:59:00
830
转载 32位CPU寄存器
32位CPU所含有的寄存器有: 4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时
2009-08-22 22:49:00
1767
原创 Linux内核情景分析读书笔记——存储管理之地址映射全过程
Linux内核采用页式存储管理。虚拟地址空间划分成固定大小的“页面”,由CPU的MMU在运行时讲虚拟地址“映射”成某个物理内存页面的地址。由于i386 CPU对地址先进行段式映射(必须的),然后才能进行页式映射(可选的)。Linux让段式映射前后的地址一样。对于用户空间内的虚拟地址0x08048368为例,进行说明。第一. i386 CPU使用代码段寄存器CS的当前值来作为段式映
2009-08-16 15:37:00
1485
原创 三种总线
摘自汇编语言(王爽)地址总线CPU通过地址总线来制定存储单元。地址总线上能传送多少个不同的信息,CPU就可以对多少个存储单元进行寻址。地址总线的宽度决定了CPU的寻址能力。数据总线CPU与内存或其他部件之间的数据传送是通过数据总线来进行的。数据总线的宽度决定了CPU和外界的数据传送速度。数据总线的宽度决定了CPU与其他器件进行数据传送时的一次数据传送量。控制总线控制
2009-08-09 23:16:00
1278
转载 关于实模式和保护模式
首先说明实模式,虚拟模式,保护模式是X86中的概念。 我从寻址方式来说,CPU的IP(EIP)中存放的是虚地址,把一个虚地址转换为物理地址,模式不同,转换方式不同: 实模式下-虚地址到实地址转换,段寄存器左移四位与偏移相加,得到物理地址,寻址空间1M。 保护模式下--虚地址到实地址转换经过MMU,也就是分段和分页机制(具体了解这个比较复杂,但其实也
2009-08-09 23:04:00
3408
1
转载 MS-VC 使用MAP文件快速定位程序崩溃代码行
程序员,平时最担心见到的事情就是程序发生了崩溃,无论是指针越界还是非法操作,都将给我们的应用系统造成巨大的损失。但在一个大型系统的测试过程中,初期出现程序崩溃似乎成了不可避免的事。其实测试中出现程序崩溃并不可怕,反而是测试的成功。我们更为关心的是程序中的哪一行导致了系统崩溃,这样我们才能有针对性的进行改正。 在VC中,我们可以利用出现程序崩溃时VC的自动跳转,定位到出错代码行。但在大量的压力测试
2009-05-23 23:09:00
2447
原创 控制台程序中实现消息传递
http://www.codeproject.com/KB/winsdk/console_event_handling.aspx用PostThreadMessage,在线程里循环调用GetMessage或者PeekMessage接受消息,和有窗口一样
2009-04-19 21:25:00
2194
转载 session全解(转)
阅读本文章前,需要读者对以下知识有所了解。否则,阅读过程中会在相应的内容上遇到不同程度的问题。懂得ASP/ASP.NET编程 了解ASP/ASP.NET的Session模型 了解ASP.NET Web应用程序模型 了解ASP.NET Web应用程序配置文件Web.config的作用、意义及使用方法 了解Internet Information Services(以下简
2009-02-21 22:46:00
568
原创 VS2003中添加TreeView控件
VS2003的ASP.NET中没有TreeView控件,需要自行安装。http://adandelion.cnblogs.com/articles/235681.html 下载Treeview的安装包http://download.microsoft.com/download/2/9/0/290e3bc2-a238-447f-ad45-98e590b3048b/TreeViewCo
2009-02-08 15:07:00
1329
转载 挣值分析
挣值管理(Earned Value Management,EVM) 项目的挣值管理是用与进度计划、成本预算和实际成本相联系的三个独立的变量,进行项目绩效测量的一种方法。它比较计划工作量、WBS的实际完成量(挣得)与实际成本花费,以决定成本和进度绩效是否符合原定计划。所以,相对其他方法,它是更适合项目成本管理的测量与评价方法。挣值管理可以在项目某一特定时间点上,从达到范围、时间、成本
2008-08-04 16:46:00
3151
2
转载 根据盘符安全移除U盘
////////////////////// //http://www.codeproject.com/KB/system/RemoveDriveByLetter.aspx //根据盘符停止U盘 //////////////////////// BOOL CPubFunction::StopDeviceByLetter(LPCTSTR lpDisk) {
2008-08-04 10:51:00
3321
原创 设置exe程序在安全模式自启动
1.写成服务形式,在 HKEY_LOCAL_MACHINE//SYSTEM//CurrentControlSet//Control//SafeBoot 和 HKEY_LOCAL_MACHINE//SYSTEM//CurrentControlSet//Control//SafeBoot//Minimal 下加入相应的子项。设置值为Service 2.在注册表 H
2008-07-29 18:23:00
2496
2
原创 获取字节流编码(UTF8, unicode等)
参阅:《字节流编码获取原来这么复杂,但也很简单》字节流编码获取原来这么复杂http://dev.youkuaiyun.com/Develop/article/10/10961.shtmhttp://dev.youkuaiyun.com/Develop/article/10/10962.shtm鸣谢: JLCAusing System;namespace Microshaoft.Te
2008-07-29 17:37:00
4519
原创 把程序添加到开始菜单
#define REG_SHELLFODLER _T("Software//Microsoft//Windows//CurrentVersion//Explorer//Shell Folders")void CTestDlg::OnBnClickedButton7(){ // TODO: 在此添加控件通知处理程序代码 CString szLink , szPath;
2008-07-25 10:05:00
5082
1
原创 在程序中移除U盘
#include #include #include #define DWORD_PTR DWORD #define ULONG_PTR DWORD extern "C" { #include "hidsdi.h" }
2008-07-22 17:20:00
5098
2
原创 CTreeCtrl的HitTest用法
void CMyDlg::OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult){ // TODO: 在此添加控件通知处理程序代码 CPoint pt; UINT nFlags; ::GetCursorPos(&pt); ::ScreenToClient(m_cTree.m_hWn
2008-07-14 18:50:00
7038
1
原创 detours库的编译
1.5版本编译,用vs2003建一个win32工程,选lib项目。然后把所有的源文件加入进来,编译就可以了。2.1版本编译,同上,但可能出错,fatal error C1189: #error : Must define one of DETOURS_X86, DETOURS_X64, or DETOURS_IA64 在引用Detours的头文件之前补
2008-07-09 18:07:00
3163
原创 调用树控件的DeleteAllItems的问题
在对话框中使用树控件,调用树控件的DeleteAllItems()后,再调用InsertItem()添加新项目,添加后不能显示新添加的内容。解决方法如下:m_tree.SetRedraw(FALSE); //do erase and insert operationm_tree.SetRedraw(TRUE); m_tree.RedrawWindow();
2008-07-09 18:03:00
1000
原创 在服务中启动带有界面的程序
//在服务中启动带有界面的程序。BOOL RunProcess(LPCTSTR lpImage){ if(!lpImage) { return FALSE; } HANDLE hToken; if(!GetTokenByName(hToken,_T("explorer.exe"))) { retur
2008-06-17 18:51:00
1072
原创 CryptoAPI -计算md5
//输入内容的缓冲区 输出内容的缓冲区 输入内容的长度BOOL MD5Digest(PBYTE csBuffer,LPTSTR csOutBuffer,DWORD dwLen){ HCRYPTPROV hCryptProv; HCRYPTHASH hHash; BYTE bHash[0x7f]; DWORD dwHashLen= 32; //
2008-06-12 15:49:00
1420
原创 文件操作记录
方法一。这种方式无法监视到文件的修改,只有右键属性中修改文件的操作才能监视到。注册BOOL Register(HWND hWnd){ SHChangeNotifyEntry pfsne; LPITEMIDLIST pidl; if(NOERROR == SHGetSpecialFolderLocation(hWnd,CSIDL_DE
2008-06-12 14:53:00
4311
原创 枚举控件
HWND CurWindowHandle=::GetTopWindow(NULL); do { TCHAR TitleText[500]; ::GetWindowText(CurWindowHandle,TitleText,500); if(StrStr(TitleText,_T("格式化"))!=NULL) //找到格式化对话
2008-06-11 08:42:00
1412
原创 windbg指令-!drvobj
!drvobj!devobj!podev!devstack"!drvobj Driver Name | PDRIVER_OBJECT pointer" 列出这个驱动创建的所有设备。kd> !drvobj /Driver/i8042prtDriver object (82158040) is for: /Driver/i8042prtDriver Extension List: (id ,
2008-06-06 17:06:00
4330
原创 VMware+windbg 驱动的源码调试
我想要调试的驱动代码在E:/zaza/MyTestProj/drivers/example目录下,编译生成的驱动文件XX.sys和XX.pdb文件在E:/zaza/MyTestProj/drivers/example/objchk_wxp_x86/i386下面。按下面配置好winDBG调试的路径。然后把这个驱动的sys拷到虚拟机里,加载驱动。winDBG里就进入源码了。用F10单步
2008-06-06 14:16:00
2616
原创 字符串格式化
CString strDateTime;strDateTime=CTime::GetCurrentTime().Format( _T( "%Y-%m-%d %H:%M:%S" ) );
2008-06-06 11:00:00
536
原创 控件右键弹出菜单
CPoint point;::GetCursorPos(&point);CMenu menu;menu.LoadMenu(IDR_MENU_LogView);CMenu *pSubMenu=menu.GetSubMenu(0);pSubMenu->TrackPopupMenu(TPM_RIGHTBUTTON, point.x, point.y,this);
2008-06-06 10:34:00
510
原创 TAB控件
void CBasicInfoShowDlg::InitForm(){ //插入两个标签页 this->m_cTab.InsertItem(0,_T("tab1")); this->m_cTab.InsertItem(1,_T("tab2")); CRect rect; this->GetDlgItem(IDC_STATIC_Rect)->GetWindowRe
2008-06-05 17:31:00
825
原创 托盘图标
生成托盘图标在CXXXDlg中定义成员函数NOTIFYICONDATA nid;void CXXXDlg::Hiden(){ nid.cbSize = sizeof(nid); //NIF_MESSAGE表示发送控制消息 //NIF_ICON 表示显示控制栏中的托盘图标 //NIF_TIP 表示任务栏中的托盘图标有动态提示 nid.uFlag
2008-06-05 14:51:00
753
原创 利用VMWare和WinDbg调试驱动程序-配置
1 首先下载WinDbg http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.5.3.8.exe?WinDbg 安装2 打开WinDbg -> File -> Symbol File Path 设置符号文件路径 可以下载服务表安装到系统中,http://msdl.microsoft.com/download/sym
2008-05-27 18:28:00
2206
原创 去掉属性页的帮助按钮
重载CPropertySheet类,在它的OnInitDialog函数中添加 //向导模式下ID_WIZNEXT,ID_WIZFINISH, ID_WIZBACK, IDCANCEL int ids [] = ...{ID_WIZBACK ,ID_WIZNEXT, IDCANCEL};//, ID_APPLY_NOW, IDHELP }; CRect rectBtn,
2008-05-23 15:47:00
1394
原创 驱动入门-1
子系统(SubSystem) 编译器和链接程序能生成一个OS能够理解的二进制文件。在Windows中,这种格式被称为“PE”。在这种格式中,有一种概念被成为subsystem。一个子系统,连同其他在PE头中的信息,描述了如何装载一个包含入口点的可执行文件。使用VC++IDE创建工程时,编译器和连接器使用默认的预先设定的选项,我们可以创建windows应用程序,或控制台应用程
2008-05-07 17:14:00
1171
转载 缓冲策略
I/O缓冲策略 很明显的,驱动程序和客户应用程序经常需要进行数据交换,但我们知道驱动程序和客户应用程序可能不在同一个地址空间,因此操作系统必须解决两者之间的数据交换。这就就设计到设备的I/O缓冲策略。读写请求的I/O缓冲策略 前面说到通过设置Device对象的Flag可以选择控制处理读写请求的I/O缓冲策略。下面对这些缓冲策略分别做一介绍。 1、缓冲I/O(DO_BUFFERED_IO) 在
2008-05-07 16:56:00
977
原创 驱动编译
从http://www.codeproject.com/KB/system/driverdev.aspx上下载了源码part1和part2,经过修改终于编译通过。Makefile文件(从别的地方拷贝一份过来就可以了)1. example!INCLUDE $(NTMAKEENV)makefile.defSources文件TARGETNAME=exam
2008-05-04 17:50:00
1393
原创 C# 里面的编码问题
1 .NET中的String只有Unicode一种。所以编码格式的字节序列转换成String时最终都是以Unicode表示。2 System.Text.Encoding.Default是取系统的当前ANSI代码页的编码,即当前系统的编码。(在我们的机子上一般都是"gb2312")这就每次用Default读取文件流都正确,且必须用Default读取才正确的原因----其实用Encodi
2008-04-30 16:31:00
1138
使用VC的Com接口操作IE的例子
2009-06-28
asp.net1.1的treeview控件
2009-02-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人