C/C++/VC
文章平均质量分 54
fengrx
认真!谦虚!真诚!守信!
展开
-
像VB一样在VC中隐式调用COM(VC的后期绑定方式)
1.创建COM对象(comdll.classname)IDispatch* CreateClassComDispatch(BSTR sClassName){ CLSID clsid; IUnknown *pUnk; IDispatch *pDisp; HRESULT hr; CLSIDFromProgID(sClassName, &cls原创 2009-03-29 08:18:00 · 1610 阅读 · 0 评论 -
CRC-32(crc32)算法
static const unsigned long crctab[256] ={ 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, 0xe0d5e91eL, 0x97d2d原创 2009-04-14 15:30:00 · 1493 阅读 · 0 评论 -
C实现的动态字符串操作
方法声明(dstring.h):/**************************************************************************** * Dynamic strings ****************************************************************************//*原创 2009-04-16 08:29:00 · 1491 阅读 · 0 评论 -
进程间通信_共享内存类_C++实现
忘记是从哪里整理的一个类了,但非常好用,可以将其放在自己的项目中实现不同进程间数据的通信。 头文件:/******************************************************************++ File Name : FFMClass.h++ Description: 共享內存類---------------------原创 2009-04-13 13:39:00 · 11595 阅读 · 7 评论 -
揭开病毒的奥秘 DLL的远程注入技术详解
DLL的远程注入技术是目前Win32病毒广泛使用的一种技术。使用这种技术的病毒体通常位于一个DLL中,在系统启动的时候,一个EXE程序会将这个DLL加载至某些系统进程(如Explorer.exe)中运行。这样一来,普通的进程管理器就很难发现这种病毒了,而且即使发现了也很难清除,因为只要病毒寄生的进程不终止运行,那么这个DLL就不会在内存中卸载,用户也就无法在资源管理器中删除这个DLL文转载 2009-04-03 10:18:00 · 793 阅读 · 0 评论 -
ARC4算法(加密)
#include "StdAfx.h"#include "Arc4EnDe.h"CArc4EnDe::CArc4EnDe(void){}CArc4EnDe::~CArc4EnDe(void){}void CArc4EnDe::fz_arc4init(fz_arc4 *arc4, BYTE *key, DWORD keylen){ unsigned int t原创 2009-03-30 17:06:00 · 7325 阅读 · 2 评论 -
md5算法(加密)
算法实现:/* Constants for MD5Transform routine */enum{ S11 = 7, S12 = 12, S13 = 17, S14 = 22, S21 = 5, S22 = 9, S23 = 14, S24 = 20, S31 = 4, S32 = 11, S33 = 16, S34 = 23, S41 = 6, S42 = 10,原创 2009-04-15 13:41:00 · 805 阅读 · 0 评论 -
检测内存泄漏的方法
1.在头部加入1.1方式1:#ifdef _DEBUG#define DEBUG_MALLOC(s) _malloc_dbg(s, _NORMAL_BLOCK, __FILE__, __LINE__)#define malloc(s) DEBUG_MALLOC(s)#include #define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, _原创 2009-04-21 12:57:00 · 1236 阅读 · 0 评论 -
aes算法
头文件方法定义:typedef struct fz_aes_s fz_aes;struct fz_aes_s{ /* For aes IV is first 16 bytes of string/stream data so we must know whether IV is not yet set (first iteration of encrypt) o原创 2009-04-24 19:38:00 · 3552 阅读 · 0 评论 -
使用DLL在进程间共享内存_如何在多进程中用共享DLL
共享数据DLL允许进程以类似于Windows 3.1 DLL共享数据的方式访问读写数据,多个进程都可以对该共享数据DLL进行数据操作,达到共享数据的目的。在WIN32中为建立共享内存,必须执行以下步骤: 首先创建一个有名的数据区。这在Visual C++中是使用data_seg pragma宏。使用data_seg pragma宏必须注意数据的初始化: #pragma data_seg("MYSE转载 2009-04-26 11:28:00 · 5599 阅读 · 0 评论 -
将一个正整数分解为一系列不重复的整数的和
原贴:http://topic.csdn.net/u/20090428/20/f00f6c2b-8d5f-4d68-bb89-ccc466552a67.html int res[20]; int len; void fun (int high, int num) //num为待分解数,high是分解子数中的最大值{ if (num == 0)转载 2009-04-29 09:00:00 · 999 阅读 · 0 评论 -
野指针概念
“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为 用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。 “野指针”的成因主要有两种: (1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它原创 2009-04-29 12:56:00 · 627 阅读 · 0 评论 -
C、C++不定参数的使用
原帖:http://blog.csdn.net/arong1234/archive/2008/05/18/2456455.aspx 不定参数当年做为C/C++语言一个特长被很多人推崇,但是实际上这种技术并没有应用很多。除了格式化输出之外,我实在没看到多少应用。主要原因是这种技术比较麻烦,副作用也比较多,而一般情况下重载函数也足以替换它。尽管如此,既然大家对它比较感兴趣,我就简单总结一下它的转载 2009-04-29 08:34:00 · 16825 阅读 · 0 评论 -
24节气与任意年的阳历日期对应的转换公式
原帖:http://topic.csdn.net/u/20090423/12/c0b89706-82e4-4206-be8f-7689d8691bf1.html C、C++ code#include #include static const double x_1900_1_6_2_5 = 693966.08680556;double get_solar_term( int转载 2009-04-29 08:41:00 · 1541 阅读 · 0 评论 -
创建指向某一路径的虚拟磁盘
方法1CMD命令:Subst Z: c:/temp //创建虚拟磁盘I,目标路径为c:/temp 方法2API代码:DefineDosDevice(0,"Z:","c:/temp"); //创建DefineDosDevice(DDD_REMOVE_DEFINITION,"Z:",NULL); //删除原创 2009-04-29 08:51:00 · 830 阅读 · 0 评论 -
将一个文本文件内容反序打印出来(包含中文时)
原贴:http://topic.csdn.net/u/20090428/16/29e6157d-df3c-4762-9b3d-230b205b0828.html #include #include #include #include #include #include char* read_file(char*filename);char* text_rever转载 2009-04-29 09:03:00 · 1099 阅读 · 0 评论 -
如何自动安装CA证书
原帖:http://blog.csdn.net/superdiablo/archive/2009/03/14/3990484.aspx 安装CA证书手工双击运行证书文件即可,但是中间会弹出一些确认对话框。如何自动完成安装的整个过程而不用用户干预呢?下面的代码给出了一个可行的方案。const CLSID CLSID_CEnroll = {0x127698E4,0xE730,0x4E5转载 2009-04-29 11:25:00 · 7830 阅读 · 0 评论 -
得到CPU信息和内存信息
CPU和内存信息的代码吧 函数定义: CString DetectCPUType(); CString DetectMemoryType(); 变量: // CPU type CString m_sCPUNameString; CString m_sCPUIdenti转载 2009-04-29 12:16:00 · 862 阅读 · 0 评论 -
函数指针、指针函数 概念
指针函数:本身就是一个函数,只是其返回值或者其参数是指针变量 函数指针:本身已经是一个指针,只是其指向一个函数原创 2009-04-29 13:03:00 · 416 阅读 · 0 评论 -
VB调用VC DLL的参数问题
问题示例如下,假设VB中申明一个DLL中的导出函数为: Public Declare Function SomeFunc Lib "test.dll" Alias "SomeFunc" (ByVal name As String) As Long 那么VC做的DLL中的导出函数原型是什么? 因为VB中的String都是UNICODE串,本人想当然地认为DLL导出函数应该这样写: e转载 2009-04-29 19:27:00 · 904 阅读 · 0 评论 -
堆和栈的区别 概念
一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)—> 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap)—> 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)转载 2009-04-30 13:05:00 · 500 阅读 · 0 评论 -
开阔思路的小程序
原帖:http://topic.csdn.net/u/20081103/16/a3fd2fe3-7cb9-4cd9-b644-119fb78b5bf7.html #include int main() { const short int c1 = 49920; const int c2 = 1073742008; int (*pf)() = (in转载 2009-05-04 14:36:00 · 695 阅读 · 0 评论 -
IP地址的倒序输出
#include #include #include static char * IpReverse(char *psIp){ int niIpLen, niLen; char delim[] = "."; char * p = NULL; char *psIpTmp = NULL; niIpLen = strlen(psIp);转载 2009-05-04 11:34:00 · 1640 阅读 · 0 评论 -
让命令行程序执行完后不退出方法
void main() { system("pause"); return; }原创 2009-04-30 13:14:00 · 5533 阅读 · 0 评论 -
钩子中向窗口发送消息、操作窗口无反应的问题解决方法(Hook dll ShowWindow HWND)
#pragma data_seg("HOOKDLLSHARE")HHOOK g_hKeyBoard;HWND g_hWnd=NULL;#pragma data_seg()#pragma comment(linker,"/SECTION:HOOKDLLSHARE,RWS") //在def文件中添加SECTIONS HOOKDLLSHARE Read Write Shar原创 2009-05-07 11:25:00 · 1925 阅读 · 0 评论 -
在directshow里如何设置图像的分辨率
//用IAmStreamConfig::SetFormat() // 具体看一下CMediaType的用法。 // 给个例子: IAMStreamConfig * psc = xxx; AM_MEDIA_TYPE * pmt = 0; VIDEOINFOHEADER * vinfo =原创 2009-05-06 09:28:00 · 4659 阅读 · 0 评论 -
VC6.0中gdiPlus的使用以及一个小例子
1.GDIPlus需要下载sdk开发包2.在tool,option,direction,include files下设置头文件路径.../MICROSOFT SDK/INCLUDE,在tool,option,direction,libaray files下设置lib路径.../MICROSOFT SDK/SDK8/LIB,在project, setting, link, object/mod转载 2009-05-09 13:19:00 · 814 阅读 · 0 评论 -
怎么把指定dc的指定区域保存成HBITMAP,以及怎么把HBITMAP保存成位图
HBITMAP CopyDCToBitmap(HDC hScrDC, LPRECT lpRect){if(hScrDC==NULL || lpRect==NULL || IsRectEmpty(lpRect)) { AfxMessageBox("参数错误");return NULL;} HDC hMemDC; // 屏幕和内存设备描述表 HB转载 2009-05-09 13:20:00 · 3562 阅读 · 0 评论 -
Windows 动态链接库编程
Windows 动态链接库编程 作者:终南 li.zhongnan@hotmail.com> 1、介绍Windows操作系统是应用最关的操作系统,因此动态链接库也为程序员所熟悉,即使对于普通的使用者来说,很多时候也会碰到.dll结尾的文件,这就是动态链接库文件。Windows下的动态链接库可以通过参考头文件和.lib库文件进行编译,从而使得动态链接库转载 2009-05-09 13:33:00 · 675 阅读 · 0 评论 -
Linux 共享库编程
Linux 共享库编程 作者:终南 li.zhongnan@hotmail.com> 1、介绍 动态库是程序设计常用的技术,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理。在Windows和Linux操作系统中都有动态库的概念。Windows将其称为动态链接库(Dynamic Link Librar转载 2009-05-09 13:34:00 · 527 阅读 · 0 评论 -
如何在DOS窗口中显示UTF-8字符
如何在DOS窗口中显示UTF-8字符 作者:终南 li.zhongnan@hotmail.com> 在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集。如果想正确显示UTF-转载 2009-05-09 13:39:00 · 716 阅读 · 0 评论 -
WTL怎么让View来响应菜单事件?
在WTL里面,CMainFrame的消息循环是这样的:程序代码BEGIN_MSG_MAP(CMainFrame) MESSAGE_HANDLER(WM_Create, OnCreate) CHAIN_MSG_MAP(CUpdateUI) CHAIN_MSG_MAP(CFrameWindowImpl)END_MSG_MAP()而View里面的消息循环是这样的:程序代码转载 2009-05-09 13:43:00 · 1008 阅读 · 0 评论 -
vc6.0调试技巧
了解调试,首先要知道"断点"这个概念.断点就是程序运行中可能会中断的地方,方便开发者在程序运行的过程中查看程序当前的运行状态,比如变量的值,函数的返回值等等.究竟怎么使用断点呢?1.F9在当前光标所在的行下断点,如果当前行已经有断点,则取消断点. F5调试状态运行程序,程序执行到有断点的地方会停下来. F10单步执行程序. CTRL+F10运行到光标所在行. F11和F10的区别是,如转载 2009-05-09 13:17:00 · 965 阅读 · 2 评论 -
C语言与Java的异同
C语言与Java的异同 作者:终南 li.zhongnan@hotmail.com> 自工作以来,先用VB、ASP这些编程;后来转用Java,对面向对象的语言有了些许了解,如今又主要用C语言写一些代码。由于学校的时候学过一些C语言的知识,后来也大略写过一些几百行简单程序,因此这段时间来,对C的上手也算比较快速。面对的所有东西都可谓博大精转载 2009-05-09 13:36:00 · 1114 阅读 · 0 评论 -
RedHat linux 启动telnet服务
1、通过setup在system service里将telnet 和xinetd服务选中,退出setup后重启xinetd服务。service xinetd restart2、编辑 /etc/xinetd.d/telnet 文件,确保其中的 disable = no3、默认情况下不能以root用户telnet,登陆验证会提示密码错误,可以修改以下文件/etc/pam.d/login,将 a转载 2009-05-09 13:46:00 · 729 阅读 · 0 评论 -
C++位操作注意事项
1. 与、或、异或操作符优先级低于比较运算符;2、按位取反时,如果操作数不是32位,会自动转为32位进行取反;转载 2009-05-09 13:48:00 · 326 阅读 · 0 评论 -
VisualC++中创建MapX控件
首先选择File菜单中的New命令,弹出New对话框。选择MFCAppWizard(exe),并在ProjectName中输入MapxSample作为工程名称。然后单击OK按钮,进入应用程序向导的第一步。通过应用程序向导创建一多文档(或单文档)界面应用程序。 在创建MapX控件之前,必须将MapX.h和MapX.cpp文件加入到工程中。从Project菜单中选择Add To Project转载 2009-05-09 13:50:00 · 1070 阅读 · 0 评论 -
gdi使用经验分享
在windows系列上做编程,gdi是一个很重要的技术点,有很多程序在运行多次后出现异常,除了众所周知的内存泄露以外,gdi资源泄露也是一个很直接的原因.今天就把我自己在编程中总结的一些经验给大家分享,欢迎高手补充.1.Create出来的gdi对象,一定要用DeleteObject来释放,释放顺序是先Create的后释放,后Create的先释放.这里的Create指的是以它为开头的gdi函数转载 2009-05-09 13:11:00 · 683 阅读 · 0 评论 -
VC编程技巧
1.得到程序路径 TCHAR exeFullPath[MAX_PATH]; GetModuleFileName(NULL,exeFullPath,MAX_PATH)2.从对话框得到一个文件夹 char szDir[MAX_PATH]; BROWSEINFO bi; ITEMIDLIST *pidl; bi.hwndOwner = this->m_hWnd; bi.pidlRoot = NULL转载 2009-05-09 13:17:00 · 439 阅读 · 0 评论 -
截取其他程序文本框和密码框内容的一种实现方法
关于FindWindowEx和EnumChildWindows结合枚举任何一个控件的简单示例,以下代码以现在最为流行的qq为例,只抛砖引玉~~呵呵申明:本文章仅从技术角度讨论这两个函数的使用方法,任何人可以自由传播/复制,但不得用做其他非法用途,否则责任自负.BOOL CALLBACK EnumqqChildProc(HWND hwndChild, LPARAM lParam) { //如转载 2009-05-09 13:18:00 · 691 阅读 · 0 评论