
C++&Other
goingup
这个作者很懒,什么都没留下…
展开
-
开机自动运行
BOOL SetAutoRun(CString strPath)//开机自动运行{ CString str; HKEY hRegKey; BOOL bResult; str=_T("Software//Microsoft//Windows//CurrentVersion//Run"); if(RegOpenKey(HKEY_LOCAL_MACHINE, str, &hRegKe原创 2005-08-17 23:24:00 · 912 阅读 · 0 评论 -
定制自己的EXE文件
要是为了实现像木马那样的生成自己需要配置的EXE文件。首先要自己写一个EXE,然后以资源的方式导入到工程中。下边的例子是一个修改MessageBox标题和文字的程序. HRSRC hResInfo; HGLOBAL hResData; DWORD dwSize, dwWritten; LPBYTE pBuffer; HANDLE hFile; TCHAR szM原创 2005-08-17 23:26:00 · 1175 阅读 · 0 评论 -
堆和栈的区别
在bbs上,堆与栈的区分问题,似乎是一个永恒的话题,由此可见,初学者对此往往是混淆不清的,所以我决定拿他第一个开刀。 首先,我们举一个例子: void f() { int* p=new int[5]; } 这条短短的一句话就包含了堆与栈,看到new,我们首先就应该想到,我们分配了一块堆内存,那么指针p呢?他分配的是一块栈内存,所以这句话的意思就是:在栈内存中存放了一个指向一块堆原创 2005-08-17 23:28:00 · 791 阅读 · 0 评论 -
获取磁盘使用空间和剩余空间
char crDrv[3];CStringArray strArray;_ULARGE_INTEGER n64TotalNumberOfBytes, n64TotalNumberOfFreeBytes;__int64 n64TotalFree = 0,n64TotalSpace = 0;float fTotalFree,fTotalSpace,fTempFree,fTempTotal;ULON原创 2005-08-17 23:29:00 · 926 阅读 · 0 评论 -
利用HTTP方式上传
#include #include #include #include BOOL UseHttpSendReqEx(HINTERNET hRequest, DWORD dwPostSize,CString strLocalFile);BOOL Upload(CString bstrLocalFile,CString bstrServerIP,CString strServerPort,CStrin原创 2005-08-17 23:31:00 · 1828 阅读 · 2 评论 -
得到指定文件的信息
char* szFileName = "C://EnochShen.exe"; DWORD dwSize = GetFileVersionInfoSize(szFileName,NULL); LPVOID pBlock = malloc(dwSize); GetFileVersionInfo(szFileName,0,dwSize,pBlock); char* pVerVa原创 2005-08-17 23:32:00 · 1172 阅读 · 0 评论 -
动态加载并显式图片
HBITMAP hbitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),"**.bmp", IMAGE_BITMAP,0,0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);if(hbitmap==NULL) return FALSE;CBitmap m_bitmap;m_bitmap.Attach(hbitmap原创 2005-08-17 23:33:00 · 1117 阅读 · 0 评论 -
动态加载DLL
心代码片断:void CLoadLibraryTestDlg::OnLoad() { typedef int (WINAPI * MyFun)(HWND,LPCTSTR,LPCTSTR,UINT); MyFun fun=NULL; HINSTANCE hHandle; hHandle=LoadLibrary("user32.dll"); fun=(int (WINAP原创 2005-08-17 23:38:00 · 802 阅读 · 0 评论 -
一份进程注入的代码
// Injection.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "Injection.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// 唯一的应用程序对象CWinApp theApp;using namespace std;typedef struct _RemotePara{//参数结构 c原创 2005-08-17 23:39:00 · 867 阅读 · 0 评论 -
枚举注册表键名与键值
枚举注册表键名与键值的一个函数:// 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. /原创 2005-08-17 23:39:00 · 1616 阅读 · 0 评论 -
总结:VC小知识
(1) 如何通过代码获得应用程序主窗口的 指针?主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)//使程序最大化.(2) 确定应用程序的路径Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。Example:TCHARe原创 2005-08-20 09:47:00 · 933 阅读 · 0 评论 -
CString 操作指南
CString 操作指南原著:Joseph M. Newcomer翻译:littleloach原文出处:codeproject:CString Management通过阅读本文你可以学习如何有效地使用 CString。 CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是对于原创 2005-08-20 09:48:00 · 1027 阅读 · 0 评论 -
以下代码可以取得系统特征码(网卡MAC、硬盘序列号、CPU ID、BIOS编号)[转]
©2005 黄友生。本文由原作者发布于MSN Space、优快云。你可以保存、在非商业软件中使用、在非盈利性文章中引用本文中的部分或全部文字,但请注明作者及原文地址。要用于其它用途,请先联系作者(eien@eyou.com)。作者不保证本文完全正确无误、不对因本文中的理论或代码缺陷造成的损失负责。本文中所有原理及思想均取自网络,有修改。其中获取硬盘序列号、获取CPU编号、获取BIOS编号的原始代原创 2005-08-20 09:50:00 · 1889 阅读 · 0 评论 -
[转]自己写的一个在线升级的程序!
void CUpdateDlg::OnButtonDoupdate() { // 读取升级文件 CFileStatus rStatus; CString szIniData; CString inFile; CString tmp; inFile=m_szPath+"//update.ini"原创 2005-08-20 09:42:00 · 882 阅读 · 0 评论 -
Windows 下任务栏气球提示
源代码置于公共域file "oBallonTaskBar.h"----------------------------------------------------------------#pragma once/* This class is modified from qDong QDongTaskIcon, and intend * to port to other GUI s原创 2005-08-20 09:51:00 · 1416 阅读 · 0 评论 -
数据类型转换示例
刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。 我们先定义一些常见类型变量借以说明 int i = 100; long l = 2001; float f=300.2; double d=12345.119; char username[]="女侠程佩君"; char temp[200]; char *buf; CString str; _varian原创 2005-08-17 23:19:00 · 1012 阅读 · 0 评论 -
截屏操作
OnInitDialog中:// TODO: Add extra initialization hereCDC dc;CBitmap *pBmp = NULL;dc.CreateDC("DISPLAY", NULL, NULL, NULL);pMemDC = new CDC;if (!pMemDC)return FALSE;pMemDC->CreateCompatibleDC(&dc);pBmp原创 2005-08-17 23:20:00 · 808 阅读 · 0 评论 -
枚举特定进程的所有线程列表
The following example obtains a list of running threads for the specified process. First, the RefreshThreadList function takes a snapshot of the currently executing threads in the system using the Cre原创 2005-08-17 23:21:00 · 4561 阅读 · 1 评论 -
TAB中加入子窗口
m_Tab.InsertItem(0,"第一页"); m_Tab.InsertItem(1,"第二页"); m_Tab.InsertItem(2,"第三页"); m_Tab.InsertItem(3,"第四页"); m_PageA.Create(IDD_PROPPAGE_A,&m_Tab); m_PageB.Create(IDD_PROPPAGE_B,&m_T原创 2005-08-17 23:21:00 · 1061 阅读 · 0 评论 -
根据文件句柄,获取文件名
include #include #include #include #include #define BUFSIZE 512BOOL GetFileNameFromHandle(HANDLE hFile) { BOOL bSuccess = FALSE; TCHAR pszFilename[MAX_PATH+1]; HANDLE hFileMap; // Get the file siz原创 2005-08-17 23:22:00 · 2267 阅读 · 0 评论 -
程序热键的实现
[问题提出] 有的程序需要自定义组合键完成一定功能,如何实现? [解决方法] RegisterHotKey函数原型及说明: BOOL RegisterHotKey( HWND hWnd, // 接收WM_HOTKEY的窗口句柄原创 2005-08-17 23:23:00 · 1012 阅读 · 0 评论 -
编程使计算机休眠
void CPage1::OnXiuMian() { if(MessageBox("确实要休眠吗?","关机程序",MB_YESNO|MB_DEFBUTTON2|MB_ICONQUESTION)==IDYES) { static HANDLE hToken; static TOKEN_PRIVILEGES tp; static LUID luid; if(::OpenProcessToke原创 2005-08-17 23:25:00 · 933 阅读 · 0 评论 -
VC/MFC FAQ整理
Q 如何处理ComboBox中的回车键?避免退出程序?A 在一般的EDIT中采用的方法是处理PretranlateMessage(),执行代码CWnd *pWnd = GetFocus();if(pWnd != NULL){ if(pWnd == GetDlgItem(IDC_EDIT1) { ...//IDC_EDIT1具有焦点 }} 但在ComboBox中好象不同,是ComboB原创 2005-08-17 23:25:00 · 985 阅读 · 0 评论 -
VC中的一些常用方法(20条)
//一、打开CD-ROMmciSendString("Set cdAudio door open wait",NULL,0,NULL);//二、关闭CD_ROMmciSendString("Set cdAudio door closed wait",NULL,0,NULL);//三、关闭计算机OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构OsVersi原创 2005-08-17 23:26:00 · 3610 阅读 · 12 评论 -
改变对话框的背景色
方法一:调用CWinApp类的成员函数SetDialogBkColor来实现。 ---- 其中函数的第一个参数指定了背景颜色,第二个参数指定了文本颜色。下面的例子是将应用程序对话框设置为蓝色背景和红色文本,步骤如下: ---- ① 新建一个基于Dialog的MFC AppWizard应用程序ExampleDlg。 ---- ② 在CExampleDlgApp ::InitInstance()中添加原创 2005-08-17 23:27:00 · 1033 阅读 · 0 评论 -
删除、拷贝、移动文件夹及其文件
删除:void COperationDlg::OnDel2(CString m_strFileDictory) //参数就是目录的路径{ if(m_strFileDictory.GetLength()==0) { ::AfxMessageBox ("目录名非法!",MB_OK|MB_ICONEXCLAMATION); return; } char原创 2005-08-17 23:27:00 · 1010 阅读 · 0 评论 -
模拟按键
模拟键盘我们用Keybd_event这个api函数,模拟鼠标按键用mouse_event函数。在VC里调用api函数是既简单又方便不过的事了。 首先介绍一下Keybd_event函数。Keybd_event能触发一个按键事件,也就是说回产生一个WM_KEYDOWN或WM_KEYUP消息。当然也可以用产生这两个消息来模拟按键,但是没有直接用这个函数方便。Keybd_event共有四个参数,第一个为原创 2005-08-17 23:28:00 · 2230 阅读 · 0 评论 -
获取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原创 2005-08-17 23:29:00 · 914 阅读 · 0 评论 -
关于Debug和Release之本质区别的讨论
本文主要包含如下内容:1. Debug 和 Release 编译方式的本质区别2. 哪些情况下 Release 版会出错3. 怎样“调试” Release 版的程序-------------------------------------- 一、Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员原创 2005-08-17 23:30:00 · 727 阅读 · 0 评论 -
对话框编程技巧
一、如何往基于Dialog的程序添加菜单[1.1] 先添加菜单(IDR_MENU1)资源,并加上需要的菜单项。[1.2] 编辑对话框资源IDD_DLGMENUTOOLBAR_DIALOG的属性,在属性对话框中选择IDR_MENU1即可。[1.3] 假如您不希望在对话框属性中直接设置菜单,而通过代码在程序中动态生成可以采用如下方法:[1.3.1]在CDlgMenuToolbarDlg类声名中添加成员原创 2005-08-17 23:30:00 · 832 阅读 · 0 评论 -
VC中使用存储过程
看了很多VC数据库的书,里面很少设计到用VC和存储过程操作的资料,网上找了又找,结果还是很少,收集了一下一些代码片断,以供参考。代码片断1:_variant_t _vValue; _variant_t RecordsAffected; VARIANT vtRetval; vtRetval.vt = VT_I2; _CommandPtr pCmd = NULL;原创 2005-08-17 23:31:00 · 1059 阅读 · 0 评论 -
获取系统有几个逻辑分区
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 = GetVolumeInform原创 2005-08-17 23:31:00 · 871 阅读 · 0 评论 -
修改注册表开机自动启动程序
HKEY hKey; char szFileName[256];GetModuleFileName(NULL,szFileName,256);RegOpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE//Microsoft//windows//currentversion//run",&hKey);if(m_bAutoRun){ RegSetValueE原创 2005-08-17 23:32:00 · 2120 阅读 · 0 评论 -
截获系统注销时候的消息
使用WH_CALLWNDPROC类型钩子,回调函数如下:LRESULT CALLBACK MyProc(int code, WPARAM wParam, LPARAM lParam){switch (((CWPSTRUCT*)lParam)->message) {case WM_QUERYENDSESSION:{switch( ((CWPSTRUCT*)lParam)->lParam ){case原创 2005-08-17 23:33:00 · 1523 阅读 · 0 评论 -
判断是否为文件夹或者文件
int IsDirectoryOrFile(CString strFileName){ strFileName.TrimLeft(); strFileName.TrimRight(); WIN32_FIND_DATA fd; HANDLE hFind = ::FindFirstFile(strFileName,&fd); ::FindClose(hFind);原创 2005-08-17 23:34:00 · 1527 阅读 · 0 评论 -
Windows 任务管理器如何确定应用程序"没有响应"
最近参加的一个项目要求实现远程任务管理功能,也就是"Remote Task Manager"(RTM)。我把它与Windows NT的任务管理器进行了比较,发现标准的任务管理器显示应用程序的状态(正在运行或者没有响应)。标准的任务管理器发送(通过SendMessageTimeout函数)一个消息到主应用窗口,如果函数调用失败或者超时--则应用程序的状态就是"没有响应",否则状态为"正在运行"。原创 2005-08-17 23:35:00 · 2871 阅读 · 0 评论 -
利用未公布API获取CPU使用率
利用ntdll.dll中没有公开的API函数: NtQuerySystemInformationtypedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG); PROCNTQSI NtQuerySystemInformation; NtQuerySystemInformation = (PROCNTQSI)GetProcAddres原创 2005-08-17 23:35:00 · 2322 阅读 · 0 评论 -
VC中的自定义消息
Windows 应用程序所要做的每项工作几乎都是基于消息处理的, Windows 系统消息分为常用 Windows 消息,控件通知消息和命令。然而,有时我们需要定义自己的消息来通知程序什么事情发生了,这就是用户自定义消息。 ClassWizard 并没有提供增加用户自定义消息的功能,所以要使用用户自定义消息,必须手工编写代码。然后 ClassWizard 才可以象处理其它消息一样处理你自定义的消息原创 2005-08-17 23:36:00 · 899 阅读 · 0 评论 -
实时时间显示
计时器实现:SetTimer(1, 1000, NULL); 然后在响应函数:void CAlertDlg::OnTimer(UINT nIDEvent) { static CString strTemp; COleDateTime dtTime; // 刷新显示的时间 dtTime = COleDateTime::GetCurrentTime(); strTemp.Format("现在时间 %原创 2005-08-17 23:36:00 · 1504 阅读 · 0 评论 -
重载消息循环主要代码
MSG msg;if(::PeekMessage(&msg,NULL,0,0,PM_REMOVE)){if(msg.message==WM_QUIT){ ::PostQuitMessage(-1);}if(!AfxGetApp()->PreTranslageMessage(&msg)){ ::TranslateMessage(&msg); ::DispatchMessage(&msg);}原创 2005-08-17 23:37:00 · 992 阅读 · 0 评论