Windows
__lhy
Oh,I am programmer。
展开
-
windows批量删除指定前缀key
直接上代码:del_keys_by_prefix.bat@echo offecho 调用格式:[redis地址] [redis密码] [redis库号] [待删除的key前缀带*]set keysfile=redis-cached-keys.txtredis-cli -h %1 -a %2 -n %3 keys %4 > %keysfile%FOR /F %%i in (%keysfile%) DO (redis-cli -h %1 -a %2 -n %3 del %%i)DEL /原创 2022-05-22 22:16:25 · 484 阅读 · 0 评论 -
VC注册表文件关联,图标关联
<br /><br /><br />前段时间需要编写文件关联的东西,就是特定文件格式和某一个应用程序关联起来,就像单击.doc的文件就会用word软件打开一样。<br />这个东西通过注册表来实现,明白了道理之后其实编程很简单,几句话既可以解决问题。程序基本上市从网上下载下来的,然后按自己的要求改了一下,实现的功能有:将特定后缀格式的文件和我们的应用程序关联,并修改特定文件格式显示的图标。<br />程序代码如下;<br />函数实现的流程大致如下:首先打开注册表中HKEY_LOCAL_MACHINE项下的转载 2011-02-25 22:32:00 · 2501 阅读 · 1 评论 -
重建图标缓存
<br /><br /> 有时候Windows会出现图标显示错乱的问题,比如张冠李戴,该显示这个图标的显示了别的文件图标,或者是图标显示一团黑或者是图标空白,这很有可能是 Windows的图标缓存受到破坏所致。(至于Windows为何设置图标缓存,我想可能是出于性能考虑,因为如果显示图标的时候再去到每个文件里面去找图标会不会太慢了呢)<br />如果Windows 图标显示错乱,用一些常用软件比如Windows优化大师的【重建图标缓存】功能就可以使图标恢复正常,那么这个功能是如何编程实现的呢?<br />转载 2011-02-25 22:38:00 · 1993 阅读 · 0 评论 -
封装mciSendCommand的简单MCI类
<br /><br />前阵子写了篇mciSendCommand简介的文章,大家看得比较多,说明大家需要这方面的东西哈。今天有空写了个简单的MCI类给大家贴出来。这个类很简单,只实现了简单的文件打开、播放、暂停、继续、关闭几个功能,供大家学习研究哈。如果哪位高手把这个类扩展了也请给我一份哈,以备不时之需哈。<br />这个类必须在MFC支持下才能使用,因为用了MFC 的CString。请在编译的时候链接上winmm.lib<br />类的代码如下:<br />////////////////////////转载 2011-03-02 09:30:00 · 1319 阅读 · 0 评论 -
mciSendCommand 函数的使用!
---- 加入音乐是增强应用程序功能的所有方法中最简单的一个。几乎每个计算机游戏或多 媒体程序都以某种MIDI或CD音乐为背景。音乐可以使用户心情愉快;在合适的场合播 放恰当的音乐能够使程序员和他的VC++程序焕发光彩。 第一部分 MIDI的播放 ---- 乐器数字化接口(MIDI)是由音乐界的一些大公司(包括生产电子音乐合成器的公司) 制订的一项协议,后来被计算机产业所采用并成为多媒体音乐文件的标准格式。MIDI文件 一般较小,对硬件设备的要求高。 ---- 一、 原理 ---- 虽然MicroSoft支转载 2011-03-02 09:32:00 · 1436 阅读 · 0 评论 -
安装IIS时提示admexs.dll问题
<br />一、系统和IIS 版本的搭配:注意:系统的版本,决定要安装的IIS版本。必须安装适合系统的IIS版本,否则IIS某些功能无法使用(或无法安装)。XP系统:适合安装IIS 5.1版本2000系统:适合安装IIS 5.0版本2003系统:适合安装IIS 6.0版本2008 / Vista系统:适合安装IIS 7.0版本二、IIS安装详细的操作步骤(适合网上下载的IIS的安装方法):开始菜单,控制面板,添加/删除程序,在弹出的对话框中点击左侧的windows添加/删除组件,把“Internet 信息服转载 2011-03-02 10:51:00 · 945 阅读 · 0 评论 -
两个小时学会DirectDraw编程
<br /> <br />这并非哗众取宠, 通常学习一种电脑技术有两种方法. 一种是自己摸索, 在错误的方向上一错再错, 屡战屡败, 不过最后得道成功. 另一种是有人 或好的材料指导, 因而事半功倍, 在正确的方向上走了速成的捷径. 就象KFC 的鸡一样. 第一种学法能学出电脑天才, 因为所谓电脑高手, 其实就是排错试错的高手. 而第二种则出电脑专才. 这个两小时(?)的学习, 不能使你深入的掌握DD, 不过可以给你编制DD的框架. 能给你 一个起始点, 这个教程就算成功了. DirectDra转载 2011-03-03 18:13:00 · 1124 阅读 · 0 评论 -
利用Shell对象控制Windows系统
<br />作者:ccrun <br />本文是ccrun(老妖)根据互联网上搜集来的资料整理而成.非原创.<br /><br />▲0. 初始化环境和OLE对象<br />#include <utilcls.h><br />#include <shlobj.h><br />// 初始化COM环境<br />CoInitialize(NULL);<br />// 创建Shell对象<br />Variant vShellOLE = Variant::CreateObject("Shell.Applic转载 2011-03-03 17:14:00 · 1572 阅读 · 1 评论 -
MCI(媒体控制接口)相关知识
<br /><br />MCI(Media Control Interface)媒体控制接口是MircroSoft提供的一组多媒体设备和文件的标准接口,它的好处是可以方便地控制绝大多数多媒体设备包括音频、视频、影碟、录像等多媒体设备,而不需要知道它们的内部工作状况。但是古人云:成也萧何,败也萧何。MCI虽然看上去高大全,但对于一些高级应用来说,它是远远不够的。<br /><br />MCI的控制方式:<br /><br />一般说来,程序员使用两个函数就可以与MCI打交道了:<br /><br />MCIE转载 2011-03-03 16:58:00 · 1624 阅读 · 0 评论 -
MFC中各种控件透明的实现方法总结
<br /><br />Button:<br />资料来源:<br />http://www.cnblogs.com/songsu/articles/1370665.html<br />关键是其中的OnEraseBkgnd。OnDrawItem只是在原来BUTTON的位置上画了一个椭圆显示BUTTON的位置。<br />/*<br /> * 画项<br /> */<br />void CImageButton::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDra原创 2011-03-08 17:04:00 · 2880 阅读 · 0 评论 -
UpdateResource(增加、删除或替代某可执行文件中的资源)
功能:该函数增加、删除或替代某可执行文件中的资源函数原型:[code]UpdateResource hUpdate, lpType, lpName, wLanguage, lpData, cbData[/code]参数详解:[code]hUpdate -> 由BeginUpdateResource函数创建的更新资源的句柄lpType -> 指向说明将被更新的资源类型的字符串,它以NULL为终止符。类型详见备注lpName -> 指向说明待被更新的资源名称的字符串,它以NULL为终止符。转载 2011-03-12 17:05:00 · 14089 阅读 · 1 评论 -
led
<br />自己动手装LED条屏教程<br />http://hi.baidu.com/%CA%C0%BD%E7%BA%C6%B5%B4/blog/item/5ef3a0efd21f4b3aacafd5e5.html转载 2011-03-17 08:42:00 · 878 阅读 · 0 评论 -
根据PE文件信息获得文件大小
ULONG GetFileLen(LPVOID pBaseaddr,LPVOID pReadBuf){ LPBYTE pBase=(LPBYTE)pBaseaddr; PIMAGE_DOS_HEADER pDosHeader=(PIMAGE_DOS_HEADER)pReadBuf; ULONG uSize=PIMAGE_OPTIONAL_HEADER((pBase+pDosHeader->e_lfanew+4+20))->SizeOfHeaders原创 2011-05-11 15:35:00 · 3241 阅读 · 0 评论 -
线程同步机制的区别与比较及进程通信方法
<br /><br />有关多线程的一些技术问题:<br /><br />1、 何时使用多线程?<br /><br />2、 线程如何同步?<br /><br />3、 线程之间如何通讯?<br /><br />4、 进程之间如何通讯?<br /><br /><br /><br />先来回答第一个问题,线程实际主要应用于四个主要领域,当然各个领域之间不是绝对孤立的,他们有可能是重叠的,但是每个程序应该都可以归于某个领域:<br /><br />1、 offloading time-consumin转载 2011-05-12 14:08:00 · 977 阅读 · 0 评论 -
立即刷新桌面
<br />::SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,0);原创 2011-03-26 14:17:00 · 1240 阅读 · 0 评论 -
结束进程的几种方法
一、最简单(实则是调用dos外部命令)如:::system("taskkill /f /im qq.exe");二、也很简单,对只对有窗口的进程有效如:HWND hwnd=FindWindow(NULL,"QQ2011");assert(hwnd);SendMessage(hwnd,WM_ENDSESSION,0,0);实则是模拟windows关机,关于详细介绍请查看:http://blog.csdn.net/qq752923276/archive/2011/05/03/6386388.aspx三、没得说了原创 2011-05-13 18:17:00 · 2006 阅读 · 0 评论 -
Edit和Rich Edit 使用说明
<br /><br />1.设置edit只读属性<br /> 方法一:<br /> m_edit1.SetReadOnly(TRUE);<br /> 方法二:<br /> ::SendMessage(m_edit1.m_hWnd, EM_SETREADONLY, TRUE, 0);<br /> <br /> <br />2.判断edit中光标状态并得到选中内容(richedit同样适用)<br /> int nStart,转载 2011-05-19 16:04:00 · 3522 阅读 · 0 评论 -
windows内核对象的信号状态
<br />对内核对象有信、失信状态一直迷迷糊糊,今天以事件对象做个笔记<br /> <br />CreateEvent<br /><br /><br /><br />函数功能描述:创建或打开一个命名的或无名的事件对象<br />函数原型:<br />HANDLE CreateEvent(<br /> LPSECURITY_ATTRIBUTES lpEventAttributes, // 安全属性<br /> BOOL bManualReset, // 复位方式<br /> BOOL bIni原创 2011-03-31 17:15:00 · 2158 阅读 · 0 评论 -
IOCP网络模型基本步骤
一、定义结构 typedef struct PER_HANDLE_DATA { SOCKET s; SOCKADDR_IN RemoteAddr; }*PPER_HANDLE_DATA; typedef struct PER_IO_DATA { WSAOVERLAPPED ol; char buf[12]; #define OP_READ 1 #define OP_WRITE 2 int nOperation; }*原创 2011-04-01 12:51:00 · 1350 阅读 · 0 评论 -
关于WINSOCK.H与winsock2.h中的重定义解决办法分析
<br /><br />问题描述:在 VC 6.0中使用socket相关的函数时没有什么问题,可是到了.net下就有以下类似的错误,[C++ Error] winsock2.h(109): E2238 Multiple declaration for 'fd_set'<br />[C++ Error] winsock.h(54): E2344 Earlier declaration of 'fd_set'<br />[C++ Error] winsock2.h(112): E2146 Need an i转载 2011-03-31 14:47:00 · 1762 阅读 · 0 评论 -
窗口的子类化与超类化
<br /><br />1. 子类化 <br />改变一个已经存在的窗口实例的性质:消息处理与其他实例属性。<br />在SDK编程范畴内,子类化就是改变一个窗口实例的窗口函数(通过GetWindowLong()和SetWindowLong()),子类化所要做的就是为某窗口实例编写新的窗口函数。其操作是在实例级别上进行的。<br />在MFC中子类化的情况有所不同:所有MFC窗口有相同的窗口函数,由该窗口函数根据窗口句柄查找窗口实例,在把消息映射到该窗口类(class)得消息处理函数上。为了利用MFC的消息转载 2011-04-06 12:09:00 · 882 阅读 · 0 评论 -
DrawEdge
<br /><br /><br /> DrawEdge通常用来画边筐<br /> RAISEDINNER表示画凹进型边框,<br /> DrawEdge(Canvas.Handle, r, BDR_RAISEDINNER, BF_RIGHT);<br /> DrawEdge(Canvas.Handle, r, BDR_RAISEDINNER, BF_TOP);<br /> DrawEdge(Canvas.Handle, r, BDR_RAISEDINNER, BF_LEFT);<b转载 2011-04-09 09:04:00 · 3862 阅读 · 0 评论 -
设置串口读写超时
//注:读写方式为同步,另,此方法对虚拟串口无效。 HANDLE hCom1=CreateFile(_T("COM1"),GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING, 0,NULL); if(hCom1==INVALID_HANDLE_VALUE) Messa原创 2011-06-07 15:28:00 · 4142 阅读 · 0 评论 -
内存映射-保证程序唯一运行
// only.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #pragma data_seg("Shared")//创建自定义段,编译器解释volatile long Run=0;#pragma data_seg()//自定义段创建至此#p原创 2011-06-07 23:37:00 · 1232 阅读 · 0 评论 -
delphi 画圆角窗体
<br /><br /><br />API 介绍与Demo 2010-02-05 11:49:04 阅读200 评论0 字号:大中小 订阅 采用API画圆角的窗体!<br /> 圆角窗体一(四角都是圆角的)采用CreateRoundRectRgn,SetWindowRgn函数就可实现!函数参数如下:<br /> 函数一:<br /> int SetWindowRgn;(HWND hWnd, HRGN hRgn, BOOL bRedraw)<br /> 参数<br /> hWnd <br转载 2011-04-18 15:37:00 · 2482 阅读 · 0 评论 -
BASE64编码规则
Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 例如字符串“张3” :11010101 11000101 00110011 转换后:00110101 00011100 00010100 00110011 用十进制表示即为:53 34 20 51 这个并不是最终的结果,还需要根据Base64的编码表查询出转换后的值。下面就是BASE64编码表:Table 1: The Base64 Alphabet Value Enc转载 2011-04-22 17:38:00 · 1643 阅读 · 0 评论 -
UpdateData()用法
<br /><br /><br />一、总结UpdateData()函数<br />UpdateData(true);//用于将屏幕上控件中的数据交换到变量中。<br />UpdateData(false);//用于将数据在屏幕中对应控件中显示出来。<br /> 当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用UpdateData(FALSE);如果你希望知道用户在对话框中到底输入了什么,就应该在访问变量前调用Up转载 2011-04-22 23:10:00 · 2024 阅读 · 0 评论 -
挂接API
<br />// hook.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <windows.h>PVOID HookAPI(LPBYTE pbModule,PCSTR pszName,PVOID pvOrg,PVOID pvNew){ PIMAGE_THUNK_DATA r; PIMAGE_NT_HEADERS p; PIMAGE_IMPORT_D原创 2011-04-27 12:02:00 · 1365 阅读 · 0 评论 -
LocalAlloc,VirtualAlloc,malloc,new的异同
<br />1. 首先我们来看HeapAlloc:<br />MSDN上的解释为:HeapALloc是从堆上分配一块内存,且分配的内存是不可移动的(即如果没有连续的空间能满足分配的大小,程序不能将其他零散的 空间利用起来,从而导致分配失败),该分配方法是从一指定地址开始分配,而不像GloabalAlloc是从全局堆上分配,这个有可能是全局,也有可能是 局部。函数原型为:<br />LPVOID<br />HeapAlloc(<br /> HANDLE hHeap,<br /> DWORD dwF转载 2011-04-28 11:00:00 · 883 阅读 · 0 评论 -
Windows关机过程分析与快速关机
Windows开机和关机慢,很多时候慢得令人抓狂。特别是做嵌入式开发时(如XPE和WinCE),任谁都无法忍受开发出来的设备开关机的蜗牛速度。所以我们得为她加速。采用HORM是不错的方案,因为是直接从休眠文件中恢复系统现场,开机速度快了不少。采用HORM方案后,Windows默认的关机过程中,很多步骤对我们的设备来说,是完全不需要的,我们需要直接断电关机。本文将分析Windows的关机过程,然后介绍如何使用Windows未公开的API实现直接断电关机。 一 Windows关机过程简单转载 2011-05-03 10:17:00 · 1889 阅读 · 0 评论 -
关于原始输入
<br />2007-02-22 18:08<br />文章出处(英文):http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/rawinput/aboutrawinput.asp <br />中文翻译:<br />关于原始输入 <br />除了传统的键盘和鼠标以外还有很多其他的输入设备。例如:用户输入可以来自游戏杆设备,触摸屏,麦克风以及其他可以转载 2011-05-01 21:48:00 · 4786 阅读 · 0 评论 -
获得详细错误信息-windows核心编程
void ErrorShowString(DWORD dwErrorCode,LPSTR szErrorStr){ DWORD dwError=dwErrorCode; HLOCAL hlocal=NULL; DWORD systemLocale=MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL); BOOL bOK=FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSER原创 2011-05-02 00:43:00 · 994 阅读 · 0 评论 -
C、C++内存区的区别(栈、堆等)
<br />一. 在c中分为这几个存储区<br />1.栈 - 由编译器自动分配释放<br />2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收<br />3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放<br />4.另外还有一个专门放常量的地方。- 程序结束释放<br /> <br />在函数体中定义的变量通常是在栈上,用malloc, calloc转载 2011-05-03 17:03:00 · 1265 阅读 · 1 评论 -
删除运行程序本身
<br />SHELLEXECUTEINFO ExeInfo;TCHAR ExePath[MAX_PATH] = {0};TCHAR ParamPath[MAX_PATH] = {0};TCHAR ComposePath[MAX_PATH] = {0}; GetModuleFileName(NULL,ExePath,MAX_PATH);GetShortPathName(ExePath,ExePath,MAX_PATH);GetEnvironmentV转载 2011-05-11 09:34:00 · 1125 阅读 · 0 评论 -
Windows中.exe程序的启动过程和C/C++运行时库
Windows系统中,.exe后缀的文件一般可以双击运行。编程时,编译出来的最终结果一般也表现为一个exe程序和其他的为程序执行提供支持的dll。我们双击一个exe程序的时候,在操作系统层面上,做了些什么使得应用程序能够执行呢?现在有一个App.exe文件,根据这篇文章的说法,我转载 2011-07-23 21:29:09 · 2117 阅读 · 1 评论 -
C struct 内存对齐解说
当在C中定义了一个结构类型时,它的大小是否等于各字段(field)大小之和?编译器将如何在内存中放置这些字段?ANSI C对结构体的内存布局有什么要求?而我们的程序又能否依赖这种布局?这些问题或许对不少朋友来说还有点模糊,那么本文就试着探究它们背后的秘密。 首先转载 2011-07-24 16:44:33 · 801 阅读 · 0 评论 -
多用户、多会话 Server版操作系统下 程序唯一实例运行
//BCB记得 #define STRICT#include <tlhelp32.h>HANDLE hMutex=NULL;HWND g_Hwnd=NULL;DWORD g_dwProcessId=0;String g_strExeName;const char *原创 2011-07-21 18:26:43 · 2815 阅读 · 0 评论 -
通过代码实现EXE文件图标的替换
原文:点击打开链接通过代码实现EXE文件图标的替换 最近,好多人问我如何通过写个小程序,动态替换可执行文件的图标。这个问题看起来虽小,但却涉及到很多问题。网上也只能找到一些零零散散的资料,却没有详细的指导性文档。所以我决定把这个问题写下来,以方便大家查阅。转载 2011-07-31 23:33:26 · 2202 阅读 · 0 评论 -
Visual C++开发工具与调试技巧全面总结
原址:点击打开链接自己总是用VC平台来开发东西,但是有时候总是出这样那样的问题,在这里把Visual C++开发工具与调试技巧整理摘录如下,希望对大家有用,省去大家再去搜索的烦恼。 1.如何在Release状态下进行调试 Project->Setting=转载 2011-07-31 00:12:04 · 916 阅读 · 0 评论 -
windows 多线程编程的几点经验 (防止死锁)
1) 不要在线程函数体内操作MFC控件,不要再线程里面调用UpdateData函数更新用户界面,而应该尽量采用发送消息的方式,在主线程的消息响应函数中操作控件;2)不建议采用SendMessage往主线程发送消息,因为它是同步的,阻塞的,可以考虑采用PostMessage转载 2011-08-04 23:09:37 · 938 阅读 · 1 评论