- 博客(31)
- 收藏
- 关注
原创 注册文件类型,关联文件
BOOL function::RegisterFileType(LPCTSTR houzhui,LPCTSTR fmiaoshu,LPCTSTR wmiaoshu,LPCTSTR filepath){HKEY hKey = NULL; DWORD dwDip=0;LPTSTR newreg=new TCHAR[512];TCHAR bufpath[256];if(filepath==NULL)Ge
2006-02-22 13:41:00
2059
原创 判断客户端是否断开
BOOL CMySocket::IsDropped(){ BOOL bDropped = FALSE; INT iRet = 0; BOOL bOK = TRUE; struct timeval timeout = { 0, 0 };//立刻返回,不阻塞 fd_set readSocketSet; FD_ZERO( &readSocketSet ); FD_SET( m_hSocket, &r
2005-07-24 17:24:00
1668
原创 枚举系统进程核心代码(代码)
包含头文件:#include "tlhelp32.h"示例:void CTerminateProcessDlg::OnGetProcess() { m_ListBox.ResetContent(); CString m_output; HANDLE hProcessSnap=NULL; PROCESSENTRY32 pe32={0}; hProcessSnap=CreateToolhelp32S
2004-12-29 16:37:00
1718
原创 FAQ2004:删除非空目录下所有文件
【问题】怎样删除一个非空目录,及其目录里面所有内容:【解答1】如果不进行递归删除。你可以使用API函数SHFileOperation,它可以一次删除目录及其下面的子目录和文件。 示例代码: BOOL DelTree(LPCTSTR lpszPath){ SHFILEOPSTRUCT FileOp; FileOp.fFlags = FOF_NOCONFIRMATION; FileO
2004-12-29 16:25:00
1492
原创 屏蔽WIN、ALT+TAB、CTRL+ESC键的低级键盘钩子
回调函数:LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam){ BOOL fEatKeystroke = FALSE; PKBDLLHOOKSTRUCT p = NULL; if (nCode == HC_ACTION) { p = (PKBDLLHOOKSTRUCT) lParam;
2004-12-29 16:25:00
2667
原创 枚举注册表键名与键值
枚举注册表键名与键值的一个函数:// QueryKey - Enumerates the subkeys of key, and the associated // values, then copies the information about the keys and values // into a pair of edit controls and list boxes. /
2004-12-29 16:23:00
2248
原创 一份进程注入的代码
// Injection.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "Injection.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// 唯一的应用程序对象CWinApp theApp;using namespace std;typedef struct _RemotePara{//参数结构 c
2004-12-29 16:22:00
1823
1
原创 工具条加入文本名称
主要函数1.CToolBar::SetSizes(SIZE sizeButton,SIZE sizeImage)用于设置工具按钮的大小以及它上面的位图的大小.这个函数有两个参数,其中,sizeButton用于指定按钮的大小,sizeImage用于指定位图的大小.需注意的是:这两个参数的cx域和cy域都必须大于零,并且,sizeButton的宽度(cx)至少要比sizeImage的宽度大7,高度(c
2004-12-29 16:21:00
1346
原创 链接错误浅谈
学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。 初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为: unresolved e
2004-12-29 16:21:00
1236
原创 VC中的自定义消息(收藏)
Windows 应用程序所要做的每项工作几乎都是基于消息处理的, Windows 系统消息分为常用 Windows 消息,控件通知消息和命令。然而,有时我们需要定义自己的消息来通知程序什么事情发生了,这就是用户自定义消息。 ClassWizard 并没有提供增加用户自定义消息的功能,所以要使用用户自定义消息,必须手工编写代码。然后 ClassWizard 才可以象处理其它消息一样处理你自定义的消息
2004-12-29 16:19:00
1227
原创 用.DEF文件导出DLL中的函数
通常我们在调用DLL时所需的DLL文件必须位于以下三个目录之一: (1)Windows的系统目录:/windows/system; (2)DOS中path所指出的任何目录; (3)程序所在的目录。 一、动态链接库的结构 动态链接库中定义有两种函数:导出函数(export function)和内部函数(internal function),导出函数可以被其它模块调用,内部函数只能在库内部使
2004-12-29 16:19:00
2778
原创 Windows 任务管理器如何确定应用程序"没有响应"(收藏)
最近参加的一个项目要求实现远程任务管理功能,也就是"Remote Task Manager"(RTM)。我把它与Windows NT的任务管理器进行了比较,发现标准的任务管理器显示应用程序的状态(正在运行或者没有响应)。标准的任务管理器发送(通过SendMessageTimeout函数)一个消息到主应用窗口,如果函数调用失败或者超时--则应用程序的状态就是"没有响应",否则状态为"正在运行"。
2004-12-29 16:18:00
2419
1
原创 用API实现繁体简体的转换(收藏)
1. 输入Big5字符,返回Gb简体字符 //--------------------------------------------------------------------------- //函数输入Big5字符,返回Gb简体字符 //--------------------------------------------------------------------
2004-12-29 16:17:00
1782
原创 FAQ200412:得到指定文件的信息
char* szFileName = "C://EnochShen.exe"; DWORD dwSize = GetFileVersionInfoSize(szFileName,NULL); LPVOID pBlock = malloc(dwSize); GetFileVersionInfo(szFileName,0,dwSize,pBlock); char* pVerValue = NULL;
2004-12-29 16:02:00
1079
原创 FAQ200412:获取系统有几个逻辑分区
char cr[3]; char lable[12]; for(int n=0;n { CString str; str.Format("%c:",n+A); strcpy(cr,str); int dt = GetDriveType(cr); int succeed = GetVolumeInformation(cr,lable,12,NULL,NULL,NULL,NULL,0);
2004-12-29 16:01:00
933
原创 利用HTTP方式上传(代码)
#include #include #include #include BOOL UseHttpSendReqEx(HINTERNET hRequest, DWORD dwPostSize,CString strLocalFile);BOOL Upload(CString bstrLocalFile,CString bstrServerIP,CString strServerPort,CStrin
2004-12-29 15:58:00
1609
原创 VC中使用存储过程(收藏)
看了很多VC数据库的书,里面很少设计到用VC和存储过程操作的资料,网上找了又找,结果还是很少,收集了一下一些代码片断,以供参考。代码片断1:_variant_t _vValue; _variant_t RecordsAffected; VARIANT vtRetval; vtRetval.vt = VT_I2; _CommandPtr pCmd = NULL; _ParameterPtr
2004-12-29 15:57:00
2370
1
原创 FAQ200412:怎么在一个静态Picture控件中显示JPG文件
my example: HBITMAP CPicture::LoadImageFromID(UINT nIDRes) { try { HMODULE hInst=GetModuleHandle(NULL); LPCTSTR lpRes =
2004-12-29 15:55:00
1083
原创 对话框编程技巧(收藏)
一、如何往基于Dialog的程序添加菜单[1.1] 先添加菜单(IDR_MENU1)资源,并加上需要的菜单项。[1.2] 编辑对话框资源IDD_DLGMENUTOOLBAR_DIALOG的属性,在属性对话框中选择IDR_MENU1即可。[1.3] 假如您不希望在对话框属性中直接设置菜单,而通过代码在程序中动态生成可以采用如下方法:[1.3.1]在CDlgMenuToolbarDlg类声名中添加成员
2004-12-29 15:55:00
1144
原创 获取磁盘使用空间和剩余空间(代码)
char crDrv[3];CStringArray strArray;_ULARGE_INTEGER n64TotalNumberOfBytes, n64TotalNumberOfFreeBytes;__int64 n64TotalFree = 0,n64TotalSpace = 0;float fTotalFree,fTotalSpace,fTempFree,fTempTotal;ULON
2004-12-29 15:54:00
1370
原创 关于Debug和Release之本质区别的讨论(收藏)
本文主要包含如下内容:1. Debug 和 Release 编译方式的本质区别2. 哪些情况下 Release 版会出错3. 怎样“调试” Release 版的程序-------------------------------------- 一、Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员
2004-12-29 15:52:00
3236
原创 获得INTEL系列CPU序列号
//取得IntelCPU的ID号:void IntelCPUIDDlg::OnButtonCPUID(){ unsigned long s1,s2; unsigned char vendor_id[]="------------------"; CString str1,str2,str3; __asm{ xor eax,eax cpuid mov dword ptr v
2004-12-29 15:48:00
2888
原创 堆和栈的区别(转载)
在bbs上,堆与栈的区分问题,似乎是一个永恒的话题,由此可见,初学者对此往往是混淆不清的,所以我决定拿他第一个开刀。 首先,我们举一个例子: void f() { int* p=new int[5]; } 这条短短的一句话就包含了堆与栈,看到new,我们首先就应该想到,我们分配了一块堆内存,那么指针p呢?他分配的是一块栈内存,所以这句话的意思就是:在栈内存中存放了一个指向一块堆
2004-12-29 15:47:00
885
原创 另一个特殊矩阵的Java实现
这是另外一个比较有趣的矩阵的Java实现。当n=4的时候,输出如下: 1 2 5 10 4 3 6 11 9 8 7 12 16 15 14 13Java代码实现如下:import javax.swing.JOptionPane;public class Test2{ public
2004-10-05 13:43:00
898
原创 蛇形矩阵的代码
蛇形矩阵是比较特别的矩阵,但是只要掌握了坐标的规律,用程序实现也不难。以下是我用Java实现的蛇形矩阵:n=4 的时候输出为: 1 2 6 7 3 5 8 13 4 9 12 14 10 11 15 16源代码实现如下: import javax.swing
2004-10-05 13:42:00
1511
原创 防止对话框程序按Enter和ESC退出的对策
在一般情况下编写的对话框程序,用户在运行的时候,如果不注意按下了ENTER或者ESC键,程序就会立刻退出,之所以会这样,是因为按下Enter键时,Windows就会自动去找输入焦点落在了哪一个按钮上,当获得焦点的按钮的四周将被点线矩形包围。如果所有按钮都没有获得输入焦点,Windows就会自动去寻找程序或资源所指定的默认按钮(默认按钮边框较粗)。如果对话框没有默认按钮,那么即使对话框中没有OK按钮
2004-10-05 13:38:00
1372
原创 在VC中使用WMI(英文原版)作者:BugSearcher
IntroductionWe normally find a lot of ways and a number of resources to use WMI or to get information from “Windows Management Instrumentation” while using Visual Basic 6 and C#, but I could not fin
2004-09-04 10:29:00
2215
3
原创 一个有趣的GDI图形测试程序
这是一个有趣的GDI图形测试程序,其主要功能就是获取在桌面上绘图,结果是……你的桌面会一团遭,像病毒一样,看了你会吓一跳,但是有惊无险 :)一下程序在VC++.NET下编译通过。#include "stdafx.h"#include "stdlib.h"int APIENTRY WinMain(HINSTANCE hInstance, H
2004-08-07 23:30:00
1356
原创 自增操作的反汇编分析
在考试或者做题的时候,经常遇到这类问题,出题的老师就是爱在这点上面钻牛脚尖,那就是自增自减操作的组合运算,我个人认为,考这样的题,没多大意思,因为各个编译器不同,出来的结果也不同,而且这样有一种误导,而失去了语言学习的本质,但是我们还是得面对……悲哀啊。下面我用汇编来分析一下这个例子:#include "stdio.h"int main(){ int i=0,n = 0; n = (++i)+
2004-08-07 23:19:00
2744
原创 WINAPI HOOK (修改前五个字节,JMP跳转法)
本文一介绍用修改API头五个字节的方法在Win2k下的使用。利用Win2k为我们提供了一个强大的内存Api操作函数---VirtualProtectEx,WriteProcessMemeory,ReadProcessMemeory,有了它们我们就能在内存中动态修改代码了,其原型为: BOOL VirtualProtectEx( HANDLE hProcess, // 要修改内存的进程句柄 LPVO
2004-07-02 11:22:00
2451
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人