随笔分类 - 软件开发:Windows系统
摘要:使用IDropTarget接口同时支持文本和文件拖放关于Windows的外壳扩展编程,拖放是比较简单的一种,在网上可以找到不少介绍这个技巧的文章。大部分是介绍使用MFC的COleDropTarget实现的, 我觉得一般使用COleDropTarget已经很好了,但是我习惯在一些程序模块中,完全的不使用MFC,比如纯SDK编程,还有用在ATL的时候,MFC是相当累 赘的。所以COleDropTarget在这个意义上讲不够完美。IDropTarget是系统留给支持拖放的客户程序的一个纯虚接口,事先没有对接口的任何函数进行实现,而是让用户通过实现接口函数来接管拖放的 结果。IDropTarget接口
阅读全文
摘要:一、需求无论何时,当你在Explorer窗口中创建、删除或重命名一个文件夹/文件,或者插入拔除移动存储器时,Windows总是能非常快速地更新它所有的视图。有时候我们的程序中也需要这样的功能,以便当用户在Shell中作出创建、删除、重命名或其他动作时,我们的应用程序也能快速地随之更新。二、原理Windows内部有两个未公开的函数(注:在最新的MSDN中,已经公开了这两个函数),分别叫做SHChangeNotifyReGISter和SHChangeNotifyDeregister,可以实现以上的功能。这两个函数位于Shell32.dll中,是用序号方式导出的。这就是为什么我们用VC自带的Depe
阅读全文
摘要:函数名称: CreateRemoteDll() 返加类型:BOOL 接受参数: DLL路径,注入进程ID 其完整代码如下: BOOL CreateRemoteDll(const char *DllFullPath, const DWORD dwRemoteProcessId)...{ HANDLE hToken; ...函数名称: CreateRemoteDll()返加类型:BOOL接受参数:DLL路径,注入进程ID其完整代码如下:BOOLCreateRemoteDll(constchar*DllFullPath,constDWORDdwRemoteProcessId){HANDLEhToke
阅读全文
摘要:MSDN 和一些网站上的manifest 有问题 , 自己修改了一下加上Microsoft.VC80.DebugCRT 和 Microsoft.VC80.DebugMFC 就可以了。如果是release版需要自己改一下。
阅读全文
摘要:Option Explicit'拨号/断网Private Declare Function InternetDial Lib "wininet.dll" (ByVal hwndParent As Long, ByVal lpszConnectoid As String, ByVal dwFlags As Long, lpdwConnection As Long, ByVal dwReserved As Long) As LongPrivate Declare Function InternetHangUp Lib "wininet.dll" (B
阅读全文
摘要:最近接触到这个函数,因此了解了一下,总结一下列在这。我了解它的出发点是如何通过它向活动窗口输入字符,这是很多程序都有的功能(我猜Visual Assist X就用了这个功能)。根据MSDN,此函数模拟按键操作,将一些消息插入键盘或鼠标的输入流中,Windows对它进行处理,生成相应的WM_KEYDOWN或WM_KEYUP事件,这些事件与普通键盘输入一起进入应用程序的消息循环,它们不仅可以转换为WM_CHAR消息,还可以转换为其它(诸如加速键)等消息。使用它来发送字符消息,并没有看起来那么简单。这有两个需要考虑的问题:1. 输入法的转换。例如需要向活动窗口发送一些英文字符,我们可能想象这样来实现
阅读全文
摘要:keybd_event 函数功能:该函数合成一次击键事件。系统可使用这种合成的击键事件来产生WM_KEYUP或WM_KEYDOWN消息,键盘驱动程序的中断处理程序调用keybd_event函数。在Windows NT中该函数己被使用SendInput来替代它。--------------------------------------------------http://www.cnblogs.com/yedaoq/archive/2010/12/30/1922305.htmlSendInput模拟键盘输入的问题最近接触到这个函数,因此了解了一下,总结一下列在这。我了解它的出发点是如何通过它.
阅读全文
摘要:如果你是基于Windows操作系统做系统集成的,你可能希望你的最终产品独占系统资源。你希望规范用户行为,比如你不希望用户通过按Ctrl+Alt+Del终止某个进程,或者按下Win键弹出开始菜单,或者按下Alt+Tab组合键切换到别的应用程序。笔者已有相关一篇文章《Win2K/NT下屏蔽Ctrl+Alt+Del的响应》,介绍了如何通过GINA编程接口屏蔽Ctrl+Alt+Del的响应。作为续篇,本文将继续介绍屏蔽Win键和Alt+Tab组合键的方法。 由于这些按键的响应是系统级的,我们不可能简单地通过某个程序来控制它们。因此,我们需要使用微软提供的另外一种编程接口——钩子(Hook)。大...
阅读全文
摘要:实现适时监视键盘,并将按键信息保存在TXT文件中的程序 Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的。而钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成普通应用程序难以实现的功能。钩子的种类很多,每种钩子可以截获并处理相应的消息,如键盘钩子可以截获键盘消息,外壳钩子可以截取、启动和关闭应用程序的消息等。本文在VC6编程环境下实现了一个简单的键盘钩子程序,并对Win32全局钩子的运行机制、Win32 DLL的特点、VC6环境下的MFC DLL以及共享数据等相关知识进行了简单的阐述。 一.Win32全局钩子
阅读全文
摘要:引言 在科研生产中对研制、调试操作的记录是非常有必要而且是有很重要价值的。通过对记录信息的分析,可以在事故发生后准确的分析出事故的起因、操作是否存在失误等许多重要线索。通常需要记录的信息是多种多样的,如环境温度记录、软件运行记录、文件访问记录等等。这里将以键盘信息记录为例来讲述类似的实验信息自动记录的一般实现方法。 由于需要记录当前系统下所有应用程序的键盘录入记录,因此必须采取某种特殊的技术来实现本进程(监视程序)对外部进程键盘操作信息的获取。这种技术便是本文将要论述的核心--系统全局钩子。本文下面将对Win32平台下全局钩子的运行机制进行介绍并给出了一个具体的由VC++6.0编写的捕获键..
阅读全文
摘要:当按下一键时,产生mark码,产生一次IRQ1中断。放开键时,产生break码,产生一次IRQ1中断。因此:当按下A键放开,实际上产生了两次IRQ1中断break是mark码的bit7置1得来,也就是:break=mark+0x801、scancode集这里只说一般日常应用中的键盘码集set2(有set1、set2以及set3)基本scancode:绝大多数scancode是1byte的。扩展scancode:由e0、e1或e2引导特殊的PrintScreen/SysRq键:e02ae037物殊的Pause/Break键:e11d45e19dc52、小键盘scancode表keymark(He
阅读全文
摘要:The following table shows the symbolic constant names, hexadecimal values, and mouse or keyboard equivalents for the virtual-key codes used by the system. The codes are listed in numeric order.Constant/valueDescriptionVK_LBUTTON0x01Left mouse buttonVK_RBUTTON0x02Right mouse buttonVK_CANCEL0x03Contro
阅读全文
摘要:64位Wnidows 里面有个叫Wow64的模拟器技术,可以使32位的程序在64位Windows 上运行。 当你想在程序里面针对32b位/ 64位系统执行不同代码的时候, 需要判断操作系统是32位还是64位。 使用 Windows API函数GetNativeSystemInfo可以获得这个信息。代码示例:SYSTEM_INFO si;GetNativeSystemInfo(&si);if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 || si.wProcessorArchitecture != PROCESSO
阅读全文
摘要:键盘是我们使用计算机的一个很重要的输入设备了,即使在鼠标大行其道的今天,很多程序依然离不开键盘来操作。但是有时候,一些重复性的,很繁琐的键盘操作总会让人疲惫,于是就有了用程序来代替人们按键的方法,这样可以把很多重复性的键盘操作交给程序来模拟,省了很多精力,按键精灵就是这样的一个软件。那么我们怎样才能用VB来写一个程序,达到与按键精灵类似的功能呢?那就让我们来先了解一下windows中响应键盘事件的机制。当用户按下键盘上的一个键时,键盘内的芯片会检测到这个动作,并把这个信号传送到计算机。如何区别是哪一个键被按下了呢?键盘上的所有按键都有一个编码,称作键盘扫描码。当你按下一个键时,这个键的扫描码就
阅读全文
摘要:1 #include <winnls.h> 2 #include <malloc.h> 3 LPCSTR AnsiToUtf8(LPCSTR Ansi) 4 { 5 int WLength = MultiByteToWideChar(CP_ACP, 0, Ansi, -1, NULL, 0); 6 LPWSTR pszW = (LPWSTR) _alloca((WLength+1) * sizeof(WCHAR)); 7 MultiByteToWideChar(CP_ACP, 0, Ansi, -1, pszW, WLength); 8 9 int ALength =
阅读全文
摘要:转载自:http://xylvhp.blog.163.com/blog/static/31123614201101104644542/首先是,头文件必须包含以下两个:#include <winable.h>#include <atlconv.h>前者是SendInput函数要用到,后者是字符串转换的时候要用到。void SendAscii(wchar_t data, BOOL shift){ INPUT input[2]; memset(input, 0, 2 * sizeof(INPUT)); if (shift) { input[0].type = INPUT_KE
阅读全文
摘要:1.知道进程handle 获取进程名称。PROCESS_INFORMATION* processInfo =(PROCESS_INFORMATION*)pid(); HANDLE hProcess =processInfo->hProcess; char buffer[255]; ZeroMemory(buffer,255*sizeof(char)); GetModuleFileNameExA(hProcess,0,buffer,255*sizeof(char));2.知道进程handle,获取内存使用率PROCESS_INFORMATION* processInfo = (PROCES
阅读全文
摘要:[转]http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/29cf2de9-412e-44dd-9050-174089d8e2a2/Simulating keyboard events:SendInput() is the function to use if DirectX applications need to receive the simulated keyboard events.This function injects keyboard instructions at driver level - so t
阅读全文
摘要:微软雅黑字体在没有开启ClearType效果时显示会一塌糊涂,最近项目中因使用了雅黑字体,所以系统启动时候需要自动开启这个功能.网上大部份资料都是针对注册表的,几乎没有什么用.相关位置:HKEY_CURRENT_USER\Control Panel\Desktop类似如下:if NOT reg.ValueExists('FontSmoothing') then reg.WriteString('FontSmoothing','2');if NOT reg.ValueExists('FontSmoothingType') then
阅读全文
摘要:http://blog.csdn.net/testcs_dn/article/details/7644410想修改窗体的非客户区,首先就得明白为什么要修改非客户区,什么是非客户区从窗体或控件来看,非客户区就是无法放置控件的区域,比如窗体的标题栏,和边框,菜单栏也是非客户区,菜单栏不是控件是画上去的文本框的边框,滚动条区域都是非客户区为什么要修改非客户区呢??原因是为了自绘,让边框好看一些,比如要加高窗体标题栏,就需要改非客户区,自绘非客户区会响应 WM_NCPAINT消息在这个消息里,你可以进行窗体,控件,非客户区的自绘好啦,现在转入正题,要修改非客户大小,必须处理 WM_NCCALCSIZE
阅读全文
浙公网安备 33010602011771号