VC&MFC
xyjnufop
这个作者很懒,什么都没留下…
展开
-
另类挂钩-RING3数据包监视
另类挂钩 RING3数据包监视前几天朋友让帮忙写一个RING3程序来监视TCP包并做数据包分析本来想HOOK ws2_32!WSASend/Send/WSARecv/Recv,后来发现网上的方法都非常挫,尽是不稳定的HEADER INLINE和修改内存~用SPI之类的,又很麻烦于是自己写了一种方式实现,非常简单,隐蔽,而且在RING3下应该算是最底层的数据包拦截点了~目前实现了对HTTP包的过滤和转载 2010-05-05 23:39:00 · 989 阅读 · 0 评论 -
服务管理器 小结
写了两天 终于把这个服务管理工具给写好了,这也算是我的一个VC程序了。现在发现其实一般的用VC没什么难的,只不过这个适应的过程有点长,比用.NET长好多啊,之前已经包装过一个视频卡的程序了。呵呵,看来是适应了,不过要深入,还是有一段很长的路的要走,比如要适应多线程,还有能够很流畅的写网络程序,这些东西,都还只是一点皮毛而已,而且我对Windows的理解也是不够的,慢慢来吧。 刚刚原创 2009-10-25 19:57:00 · 634 阅读 · 0 评论 -
DLL 导入的两种方式
1、隐式链接:隐式链接的特点是由编译器完成对DLL的加载和程序结束时对DLL的卸载工作,如果程序结束时如果还有其他应用程序使用该DLL,那么系统会使DLL的使用计数减1,当DLL的使用计数降为0时,会将DLL从内存中删除。★优缺点:隐式链接DLL的方法简单实用,但缺少灵活性。■使用方法:使用隐式链接DLL开发时,首先,需要将DLL的引入库文件(*.lib--编译生成DLL时,会一起生成的)与应用程原创 2009-10-23 16:30:00 · 7730 阅读 · 0 评论 -
动态库
这个东西其实没什么好记录的,随便记下吧 Windows操作系统平台:动态链接库:dll类型,静态链接库:lib类型;1、动态库简介:动态链接库可以看成是一种仓库,一种资源的集合:函数,变量,类,资源……都可以由动态链接库来导出。2、动态库与静态库的区别:a、静态库中的代码会直接塞到EXE中,而动态库则可以被EXE动态的加载或卸载;b、静态库中不能再包含其他的动态或静态库,而动原创 2009-10-22 09:32:00 · 623 阅读 · 0 评论 -
WinSock---WSAAsyncSelect IO模型和select模型的比较
关于WSAAsyncSelect IO模型和 select模型的比较。个人认为一个是被动的,一个是被动的。 WSAAsyncSelect IO模型 是基于事件的。也就是说用 WINSOCK_API_LINKAGE int WSAAPIWSAAsyncSelect( SOCKET s, HWND hWnd, u_int wMsg, long lEvent原创 2009-10-12 23:48:00 · 1414 阅读 · 0 评论 -
开机自启动
windows 有许多伴随开机启动的程序。这些程序很多都是通过设置注册表的响应的键值来实现的。 用代码说话 CFileDialog fileDlg(TRUE); fileDlg.m_ofn.lpstrTitle ="添加程序到开机自启动"; fileDlg.m_ofn.lpstrFilter = "Exe File(*.exe)/0*.exe/0All File(*.*)/原创 2009-10-12 21:18:00 · 336 阅读 · 0 评论 -
进程间通信
每个进程一启动,系统就给进程分配了4G的内存空间,所有线程所需的空间都在这个4G中,进程通信有四种方式剪贴板匿名管道命名管道邮槽剪贴板操作。剪贴板是一块全局的内存,所有的进程都是可以访问它的.剪贴板的数据时延迟提交的。数据复制1.打开剪贴板(OpenClipboard());2.清空剪贴板(当前进程拥有剪贴板) (EmptyClipboard());3.设置剪贴板数据 (S原创 2009-10-13 19:30:00 · 372 阅读 · 0 评论 -
VC中常常碰到的链接错误总结
学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。 初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为: unresolved e转载 2009-10-11 22:00:00 · 399 阅读 · 0 评论 -
Windows Socket五种I/O模型(一)——选择模型(Select)
如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)共五种I/O模型。每一种模型均适用于一种特定的应用场景。程序员应该对自己的应用需求非常明确,而且综合考虑转载 2009-10-08 23:03:00 · 501 阅读 · 0 评论 -
DLL 注入进程
进程注入有很多方式,其中有一种利用远程线程技术来实现进程的注入。这个方式能实现主要是因为 DLL 动态加载的函数原型和线程函数的原型非常相像,所以这两个函数的指针式可以兼容的。 HMODULE LoadLibrary( LPCTSTR lpFileName);DWORD WINAPI ThreadProc(LPVOID lpParameter);在 调用 HANDLE C原创 2009-10-23 22:10:00 · 803 阅读 · 0 评论 -
rundll32 执行DLL中的某个函数
rundll32 命令可以执行DLL中的某个函数 先写个DLL文件 Mydll.cpp BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ){ Messag原创 2009-10-25 17:00:00 · 1315 阅读 · 0 评论 -
DLL remote Inject
void InjectDLL(DWORD PID,char *Path) { DWORD dwSize; HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,false,PID); dwSize=strlen(Path)+1; LPVOID lpP转载 2010-05-05 22:58:00 · 880 阅读 · 0 评论 -
如何获取及其的公网IP
VC++没有提供专门的相关函数,但是可以通过访问一个查询IP的网页来获取本机的公网IP。给你找了个小例子你看下吧,不过得修改下之后移植到你的程序中: TCHAR szTempFile [MAX_PATH];UINT nResult=GetTempFileName (szTempPath, _T ("~ex"),0,szTempFile);int ret=URLDownloa原创 2010-03-29 20:49:00 · 614 阅读 · 0 评论 -
Windows shell 介绍
想调用 explorer 的文件列表控件,搞了半天被很多SH开头的函数搞晕。。。查下,都是shellWindows外壳(Windows Shell),作为Windows API的组成部分,不仅允许应用程序访问操作系统shell提供的功能,还对之有所改进和增强。它位于16位Windows下的shell.dll中,以及32位Windows下的shell32.dll中(Windows 95则原创 2009-10-29 01:42:00 · 515 阅读 · 0 评论 -
几个操作系统的概念
线程上下文:老是看到线程上下文切换,到底会切换什么呢,包括:1,Instruction pointer 执行到那条指令2,用户和核心态堆栈指针3,指向这个线程所在的地址空间的指针 page table directory 一个线程的优先级 有进程和线程自身的优先级共同决定进程的虚拟地址空间每个进程的用户态地址空间是相互独立的在32位机上的虚拟地址空间有4G核心态地址原创 2009-10-28 16:38:00 · 515 阅读 · 0 评论 -
VC2008转到VC2005
VS2008 工程转为 VS2005 工程!1、用记事本打开 VS2008 的项目解决方案,也就是扩展名为 .sln 类型的文件,例如: Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C转载 2009-10-27 02:20:00 · 1200 阅读 · 0 评论 -
资源管理器 小结
没用过VC写程序的人,用它写程序真是太累来了,折腾了两天一个简单的资源管理器出炉,虽然辛苦,但还是值得的。小结一下这个程序在界面方面主要用了 CListCtrl和CTreeCtrl,这两个空间用来显示一些目录,文件。两天的时间没白费,把这两个控件使用方式大概弄明白了。现在发现有很框架的思想都是很相像的。 这个东西主要比较麻烦的是 对文件的遍历,和文件属性的操作。 大概用到下面这原创 2009-10-28 01:44:00 · 453 阅读 · 0 评论 -
如何改变CTreeView中的 CTreeCtrl的样式
想做个资源管理器,所以要用到 CTreeCtrl,不过我用了CTreeView,但是这个重来都没有注意过样式,今天有点头大,不过还是解决了。 要想有折叠按钮,在控件创建好之后用 SetWindowLong()去设置就好了。 SetWindowLong(GetTreeCtrl().m_hWnd,GWL_STYLE,GetWindowLong(GetTreeCtrl().m_h原创 2009-10-27 16:54:00 · 1791 阅读 · 0 评论 -
CTreeCtr使用
因为想写一个资源管理器,先用一下树形控件吧CTreeCtr new 了之后还要调用Create函数之后才能使用,在这个之后往往要一个CImageList对象与之共同使用。 SHFILEINFO 这个结构用于存储 一些文件的信息(资源管理器中会用到) DWORD_PTR SHGetFileInfo( LPCTSTR pszPath, DWORD dw原创 2009-10-26 15:17:00 · 1118 阅读 · 0 评论 -
如何判断通过WSAAsyncSelect 注册的事件中,发生的是那个
When one of the nominated network events occurs on the specified socket s, the application window hWnd receives message wMsg. The wParam parameter identifies the socket on which a network event has oc原创 2009-10-07 12:37:00 · 443 阅读 · 0 评论 -
关于多线程API
#include #include using namespace std;DWORD WINAPI ThreadProc1(LPVOID lpParameter);DWORD WINAPI ThreadProc2(LPVOID lpParameter);int index=0;int totleTickts=100;int saledTickts原创 2009-10-05 20:13:00 · 624 阅读 · 0 评论 -
vc operate profilestring
in software ,always there have a profile string need to stored ,may be it used as UI params,or in other way. some times SE will store its in *.ini file or regisiter table. so I give some demo原创 2009-09-13 16:45:00 · 386 阅读 · 0 评论 -
VC operate FIledlg
对话框的一些属性设置在 m_ofn 成员中设置 CFileDialog openFileDlg(TRUE); openFileDlg.m_ofn.lpstrTitle=(LPCWSTR)"我的打开文件对话框"; openFileDlg.m_ofn.lpstrFilter=(LPCWSTR)"文本文件(*.txt)/0*.txt"; openFileDlg.m_ofn.原创 2009-09-13 16:42:00 · 393 阅读 · 0 评论 -
SDK Write & Read File
#include #include #include #include using namespace std;void PrivateWriteFile();void PrivateReadFile();int main(){ PrivateWriteFile(); PrivateReadFile(); return 0;}原创 2009-09-13 00:10:00 · 245 阅读 · 0 评论 -
VC5
1,创建插入符:void CreateSolidCaret( int nWidth, int nHeight );//创建插入符void CreateCaret( CBitmap* pBitmap );//创建位图插入符void ShowCaret( );//显示插入符void HideCaret( );//隐藏插入符static void PASCAL SetCaretPos( POINT po原创 2009-07-07 22:29:00 · 524 阅读 · 0 评论 -
VC4
画图操作1. 获取DC 使用全局函数 ::GetDC(HWND),2. MoveToEx(HDC,int X,int Y,LPPOINT lpPoint) , Updates the current position to the specified point and optionally return the previous position.3.LineTo(HDC hd原创 2009-07-04 10:16:00 · 602 阅读 · 0 评论 -
VC之美化界面篇
本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:1. 大致了解MFC框架的基本运作原理;2. 熟悉Windows消息机制,熟悉MFC的消息映射和反射机制;3. 熟悉OOP理论和技术;本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。 1. 美化界面之开题篇相信使用过《金山毒霸》、《瑞星杀毒》软件的读者应该转载 2009-07-07 09:50:00 · 403 阅读 · 0 评论 -
VC3
user application class inherit from CWinApp, and CWinApp inherit from CWinThread, CWinThread inherit from CcmdTarget , so user application class have behaviour and member fileds of CcmdTarget and C原创 2009-06-27 08:47:00 · 455 阅读 · 0 评论 -
VC1
第一章学习总结,每个应用程序都有一个自己的消息队列,应用程序先把消息发给OS,OS在转发到相应的线程。创建窗体过程:1.声明一个WNDCLASS 变量 wndcls,2.给wndcls 设置一些属性(好比给一款车子设计外观,功能之类的---是一款哦,而不是一个),一个线程或程序中可以有多个WNDCLASS变量,从而可以在一个线程或程序中Create多种类型的窗口。3.注册wnd原创 2009-06-24 19:30:00 · 336 阅读 · 0 评论 -
VC高字节位、低字节位
VC中高位 低位 MAKEWORD 宏 平台:SDK 这个宏创建一个被指定变量连接而成的WORD变量。返回一个WORD变量。 (注:typedef unsigned short WORD;) WORD MAKEWORD( BYTE bLow, //指定新变量的低字节序; BYTE bHigh //指定新变量的高字节序; );比如 WORD wor原创 2009-08-27 17:15:00 · 1070 阅读 · 0 评论 -
SDK 注册表 读写
#include #include #include #include using namespace std;void RegWrite();void RegRead();int main(){ RegWrite(); RegRead(); return 0;}void RegWrite(){ HKEY hKEY;原创 2009-09-13 20:52:00 · 567 阅读 · 0 评论 -
error LNK2001: unresolved external symbol _WinMain@16
VC 6中 老是有这个问题,貌似是 工程类型不对, 入口函数地址找不到,预先设置中的不对 一,问题描述error LNK2001: unresolved external symbol _WinMainᤐdebug/main.exe:fatal error LNK 1120:1 unresolved externals error executing link.exe;二,产生这个问题可原创 2009-10-05 16:10:00 · 403 阅读 · 0 评论 -
WinSock---WSAAsyncSelect IO模式小结
在使用WSAAsyncSelect之前 一般要先自定义一个用户消息,然后在 WSAAsyncSelect 中设定 在socket发生某个事件时,发送指定消息给的某个窗口,然后在这个消息处理函数中处理事件信息,关于事件处理函数中的参数信息(即消息 附带的参数)可以看如何判断通过WSAAsyncSelect 注册的事件中,发生的是那个 WSAAsyncSelect 函数用来请求原创 2009-10-07 23:14:00 · 371 阅读 · 0 评论 -
WinSock学习笔记(二)
与socket有关的一些函数介绍1、读取当前错误值:每次发生错误时,如果要对具体问题进行处理,那么就应该调用这个函数取得错误代码。 int WSAGetLastError(void ); #define h_errno WSAGetLastError()错误值请自己阅读Winsock2.h。2、将主机的unsigned long值转换为网络字节顺序(3转载 2009-10-06 22:42:00 · 219 阅读 · 0 评论 -
几个用于线程同步对象的区别
互斥对象和事件对象属于内核对象,利用内核对象进行线程同步,速度较慢,但利用互斥对象和事件对象这样的内核对象,可以在多个进程中的各个线程间进行同步。 关键代码段是工作在用户方式下,同步速度较快,但在使用关键代码段时,很容易进入死锁状态,因为在等待进入关键代码段时无法设定超时值。原创 2009-10-06 11:42:00 · 312 阅读 · 0 评论 -
关键代码段 Critical Section
Critical Section ObjectsA critical section object provides synchronization similar to that provided by a mutex object, except that a critical section can be used only by the threads of a single proc原创 2009-10-06 11:26:00 · 378 阅读 · 0 评论 -
Event对象
Event可用于线程同步。 Event可分为 人工重置和系统重置 两种, 如果是人工重置的event对象,所有等待该Event对象的线程在该event对像 有信号后,所有线程都编译可执行状态,也就是线程的代码可以往下走。如果是系统重置的Event对象,那么所有等待该对象的线程中只有一个线程的代码可以往下走,其余的继续等待该对象。 创建Event对象的原型 H原创 2009-10-06 10:23:00 · 284 阅读 · 0 评论 -
基于TCP的socket程序
服务端: #include #include #include using namespace std;void main(){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup(原创 2009-10-01 21:46:00 · 326 阅读 · 0 评论 -
WinSock学习笔记(一)
Socket(套接字)◆先看定义:typedef unsigned int u_int;typedef u_int SOCKET;◆Socket相当于进行网络通信两端的插座,只要对方的Socket和自己的Socket有通信联接,双方就可以发送和接收数据了。其定义类似于文件句柄的定义。◆Socket有五种不同的类型:1、流式套接字(stream socket)定义:转载 2009-10-06 22:40:00 · 211 阅读 · 0 评论 -
一点异步Socket的总结
1. 加载socket库 。。。。可以用AfxSocketInit()2.产生一个socket对象,并绑定到某个IP地址。 m_socket=socket(AF_INET,SOCK_DGRAM,NULL); sockaddr_in bindAddr; bindAddr.sin_family=AF_INET; bindAddr.sin_port=htons(5000)原创 2009-10-06 09:28:00 · 405 阅读 · 0 评论