![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 80
龙图腾
驱动工程师真心喜欢学习真心喜欢技术
展开
-
进程间谍
通过GetHwndFromPoint该函数获取到控件的句柄啊,然后使用GetWindowText该函数来获取文本数据啊原创 2011-07-30 20:16:50 · 668 阅读 · 0 评论 -
利用windows管道技术捕获标准输出
STARTUPINFO si; // 启动信息 PROCESS_INFORMATION pi; // 进程信息 si.cb = sizeof(STARTUPINFO); GetStartupInfo(原创 2011-07-30 19:46:46 · 1309 阅读 · 0 评论 -
在控制台程序中隐藏控制台窗口!
大家都知道,当编写一个win32 console application时,当运行此类程序的时候默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序中运行一段功能代码,不希望显示这个console窗口,让代码执行完毕之后程序自动退出.下原创 2011-08-01 12:08:30 · 759 阅读 · 0 评论 -
使用 GetStartupInfo 检查自己是否被"调试"
在使用 CreateProcess 创建进程时,需要传递 STARTUPINFO 的结构的指针,而常常我们并不会一个一个设置其结构的值,连把其他不用的值清0都会忽略,而 ollydbg 也这样做了,我们可以使用 GetStartupInfo 检查启动信息,原创 2011-07-30 19:48:53 · 830 阅读 · 0 评论 -
vc摄像头笔记
现在在vc上采集视频常用的方法有三:vfw,directshow,opencv #include #include #include #include //驱动摄像头的库包含文件#includ原创 2011-09-22 15:22:32 · 1573 阅读 · 4 评论 -
WM_SYSCOMMAND消息,响应系统命令
WM_SYSCOMMAND 当用户从窗口菜单选择一个命令或当用户选择最大化按钮,最小化按钮,复原按钮或关闭按钮时,一个窗口将会接收该消息 Syntax WM_SYSCOMMAND WPARAM wParam LPARAM lPar原创 2011-10-19 09:02:06 · 1537 阅读 · 0 评论 -
万能函数指针的实现
有时候用函数指针是很方便的,可是太多了以后,是不是觉得typedef看的烦啊?要是能够直接调用任意函数就好了。下面就有一个这样的实现。(网上抄的,改了一点,觉得很实用)还支持返回值的哦。 #include #include BYTE code[] ={ 0x58,//POP EAX 0x87, 0x04, 0xE4,//XCHG转载 2011-11-15 17:38:40 · 1538 阅读 · 0 评论 -
wchar与char互相转换
在wchar与char的转换中,用到两个函数:int MultiByteToWideChar( UINT CodePage, // code page | CP_ACP DWORD dwFlags, // character-type options | MB_PRECOMPOSED LPCSTR lpMultiByteStr, // string to map i原创 2011-11-17 15:05:39 · 887 阅读 · 0 评论 -
WinCE 控制面板的创建
//=====================================================================================================//AUTHOR:// norains//DATE:// Saturday 25-Feb-2006//==================================转载 2011-11-29 15:44:33 · 409 阅读 · 0 评论 -
用Ras的API函数创建一个拨号连接
很久以前我们的项目中曾提到过一个需求,因为拨号连接的设置过于繁琐,希望能够在我们的程序中提供输入几个必要的参数,然后自动生成一个拨号连接。当时我对于RAS也是刚刚接触(其实到现在也只是刚刚入了点门),通过查阅资料知道RasSetEntryProperties加上RasSetEntryDialParams可以实现(如果不清楚的,可以查阅MSDN,里面解释的比较清楚),但是这种方法貌似设置不了mode原创 2011-11-28 22:49:31 · 1833 阅读 · 0 评论 -
详解WINCE的控制面板
//========================================================================//TITLE:// 详解WINCE的控制面板//AUTHOR:// norains//DATE:// Tuesday 29-August-2006//====================================转载 2011-11-29 13:41:59 · 454 阅读 · 0 评论 -
[VC/MFC ] VC++实现拨号上网程序详解
大家知道,在Netants、DownLoad Expert等软件中都带有定时拨号上网下载软件的功能。而一般用户的拨号上网,利用的是Windows的Remote Access Service(RAS,远程访问服务)。下面介绍一下其在Visual C++下的实现。 Visual C++为我们提供了包含RAS API声明的“ras.h〃头文件。要在程序中实现拨号上网功能,其大致过程如下:原创 2011-11-28 21:30:32 · 3081 阅读 · 0 评论 -
用脚本实现对WINCE控制面板功能的直接调用* B
控制面板其实也是个动态链接库,区别只在于后缀名为.cpl如何调用.cpl7 /2就像PC机中.dll文件不能直接运行,需要借助rundll32.exe来运行一样,WinCE下的.cpl也需要相应的程序来调用,这个程序就是:"ctlpnl.exe".比如我们需要调用系统自带的cplmain.cpl的"电源管理",只要在开始菜单的运行中输入:"ctlpnl.exe /windows/cpl转载 2011-11-29 13:40:21 · 1117 阅读 · 0 评论 -
设置listctrl 风格及扩展风格
以下未经说明,listctrl默认view 风格为report相关类及处理函数MFC:CListCtrl类SDK:以 “ListView_”开头的一些宏。如 ListView_InsertColumn1. CListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标转载 2011-12-01 15:19:52 · 1328 阅读 · 0 评论 -
MBR简介
MBR,全称为Master Boot Record,即硬盘的主引导记录。 为了便于理解,一般将MBR分为广义和狭义两种:广义的MBR包含整个扇区(引导程序、分区表及分隔标识),也就是上面所说的主引导记录;而狭义的MBR仅指引导程序而言。 硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPT(Disk Partition ta原创 2011-12-01 12:04:25 · 1450 阅读 · 0 评论 -
RAS拔号上网
这两天把CE板儿上的拔号程序初步完成,第一个是CE板儿上自带的MODEM无法使用,最终还是从网上看到一个牛人说改注册表然后映射到COM2口上,很简单的事情,有些时候儿没有弄过就会不知道如何下手。软件倒是费了些周章,从网上找了一个RAS的拔号软件,但他那个有点儿小问题,经过同事的指点,直接调用设置好的连接即可。比如你在CE板儿上建立了一个“我的连接”,直接把这个名字传到RASDIALPARAMS 变转载 2011-12-01 14:39:27 · 1564 阅读 · 0 评论 -
SPI总线协议及SPI时序图详解
SPI总线协议及SPI时序图详解SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。 SPI是一个环形总线结构,由原创 2011-12-01 16:32:09 · 4593 阅读 · 0 评论 -
SPI,UART,I2C都有什么区别,及其各自的特点
区别:SPI:高速同步串行口。3~4线接口,收发独立、可同步进行 UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢 I2C:一种串行传输方式,三线制,网上可找到其通信协议和用法的 3根线实现数据双向传输 串行外围接口 Serial peripheral interface UART:通用异步收发器 UART是用于控制计算机与串行设备的芯片。有一点要注意的原创 2011-12-01 16:40:19 · 1477 阅读 · 0 评论 -
WinCE下调试串口的动态复用
车机项目中用到了很多串口外设,如DVD机芯、GPS、蓝牙、雷达和胎压监测等,而主CPU(TCC89XX)与小MCU(STM32)之间也是通过串口通讯的。一时之间,串口使用有点捉襟见肘的感觉,只能把调试串口拿出来用做普通串口。 调试串口用作普通串口本身没什么问题,之前在S3C2410上也做过。当时是把2410的调试串口强制改为普通串口,系统启动后调试串口就无法正常使用了。但目前的项目仍原创 2011-12-01 21:46:39 · 1267 阅读 · 0 评论 -
关于资源的修改
前两天写一个程序修改exe的资源信息。资源信息的读取API还是比较多的,但是修改的就不多了。经常使用的ResHack工具,修改资源方便的很,但是却没有源码参考。只得自己动手。修改资源的方法可以从API和PE两种方式入手。一、首先介绍从PE入手修改资源:这里我从网上摘抄了一个修改ICON的例子。首先,我们需要两个可执行文件,并且已知这两个exe文件都有图标资源。1、 peSour转载 2011-12-02 13:33:17 · 1230 阅读 · 0 评论 -
获取系统分辨率
看了一些从函数中得到系统分辨率的方法,但我发现如果你只想得到屏幕的长和宽的话,其实是很简单的,如下:procedure TForm1.Button1Click(Sender: TObject);begin Label1.Caption:='Screen Width:'+ inttostr(Screen.Width) ; label2.Caption:='Screen转载 2011-12-02 10:13:35 · 1265 阅读 · 0 评论 -
针对文件目录内容变化的检测
检测目录文件变化(增、删改)等操作的方法有很多。下面就我使用的方法进行总结如下:方法一:使用ReadDirectoryChangesW优点:1、可以指定检测目录,缩小检查返回2、使用简单缺点:1、只有unicode班,需要转化2、需要单开线程,因为该操作是同步阻塞的,在不是overlap情况下3、异步的overlap的操作方法特别复杂,涉及到完成端口相关信息。转载 2011-12-02 13:40:38 · 1119 阅读 · 0 评论 -
摆脱vc8和vc9的依赖库困惑
大家都知道现在的vs2010马上就要推出了,但是还有很多人喜欢使用vc6进行编程,原因很简单,就是因为用vc6编译的程序,依赖的库msvcrt42。mfc42等在winxp之后的版本都自动集成了,所以,用户使用时像绿色软件一样。但是vc6早已是过时的开发环境了,他的界面效果不好,语法检测不严格。如果我们在用vs2003之后的所有开发环境开发出的程序也像vc6一样,不需要安装任何运行时库就可以绿色使转载 2011-12-02 13:36:14 · 1476 阅读 · 0 评论 -
从记事本了解PE结构的导入表
导入表是杀毒软件厂商非常关注的部位尤其是启发式扫描。所以,了解导入表的结构对免杀技术是必不可少的。 下文我们从大家最常用的notepad.exe的分析来揭开导入表的神秘面纱。 首先用LoadPE工具加载notepad.exe。查看其区段表和目录表信息。 第一步:计算转换因子从目录表的输入表的RVA(相对虚拟地址)查找在区段表中的位置。这里的RVA是0x76转载 2011-12-02 13:37:05 · 1170 阅读 · 0 评论 -
内存映射文件
本文内容全部引子windows核心编程。只因今天详细的看了一下,特做了摘抄而已!内存映射文件最好用于只读独占的方式打开,因为如果采用可写的方式的话,不能保证一个进程的修改立即在另一个进程生效。以独占方式打开就禁止了其他进程的访问。下面详细介绍一下使用文件映射的步骤和方法:步骤1:创建或打开文件内核对象HANDLE CreateFile( PCSTR pszFileNam转载 2011-12-02 13:45:36 · 426 阅读 · 0 评论 -
插件系统结构浅析
一、插件系统概述普通的系统,在编译发布之后,系统就不允许进行更改或扩充了,如果要进行某个功能的扩充,则必须要修改代码重新编译发布。使用插件可以很好地解决这个问题。二、插件系统的优势1、系统的扩展性大大地加强了。如果我们在系统发布后需要对系统进行扩充,就不必重新编译,只需要增加或修改插件就可以了。2、有利于模块化的开发方式。我们可以开发强大的插件管理系统,在这样的一个插件系统下,转载 2011-12-02 13:46:51 · 614 阅读 · 0 评论 -
服务程序与桌面的交互
大家都知道服务默认是不可以访问桌面UI的。而如果我们的服务中需要使用桌面句柄(截图),或是需要弹出对话框之类的UI相关操作时,都会返回失败。如何让服务可以与桌面交互呢。网上搜索到的答案多是需要修改注册表项,但是我在虚拟机中操作了,结果依旧是不行的。并且这种直接修改注册表的方法很容易被杀软误报。所以,还是通过编程来解决更地道一些。下面就把具体的代码粘贴出来,以供参考。 BOOL Switch转载 2011-12-02 13:47:39 · 1471 阅读 · 0 评论 -
通用USB设备驱动源码分析
前段时间写了篇 的文章 , 描述了自己如何为高通的一个 usb modem 设备写驱动的过程 , 最近发现实际上可以使用 linux 自带的一个叫 usbserial 的模块作为这个 modem 的驱动并能良好的工作 , 所以写了这片文章来详细的分析下 usbserial 模块的源码 (2.6.16.3).应该来说 , 对于那些仅仅是用 USB 来通信 , 在上层可看作 tty 设备 , 不转载 2011-12-05 12:03:25 · 857 阅读 · 0 评论 -
基于wince的录音机
基于wince的录音机基于D:\WINCE500\PUBLIC\COMMON\SDK\SAMPLES\AUDIO\WAVREC 的录音程序建立: PCRecord MFC 工程工程加入:wavrec.cppwavefile.cppwavefile.h将wavrec.cpp 的 winmain 函数声明去掉,把 winmai转载 2011-12-05 17:27:39 · 1764 阅读 · 0 评论 -
C++遍历文件夹
C++遍历文件夹的代码如下:#include #include #include using namespace std; void visit(string path,int layer) { struct _finddata_t filefind; string原创 2011-12-05 17:30:22 · 719 阅读 · 0 评论 -
C/C++:遍历子目录,枚举文件,FindFirstFile + FindNextFile
平时写程序时经常会用到的遍历子目录枚举文件的功能,用 Windows API 函数FindFirstFile() 和 FindNextFile() 直接实现起来会相当繁琐,有许多细节需要注意和记忆,要在短时间内写出可以正常工作的、没有BUG的、能够递归遍历多层子目录并枚举其中所有文件的程序代码,不是一件轻松的事情。以下这个 doFileEnumeration() 函数,是我(liigo)在 Win原创 2011-12-05 19:24:12 · 1292 阅读 · 0 评论 -
USB设备驱动程序
一. USB加载式流接口驱动要点分析为了支持不同类型的外围设备,WinCE平台提供了具有定制接口的流接口驱动程序模型。因为大部分USB外围设备由于功能性更适合流接口驱动的结构,所以一般都采用加载式流接口驱动程序模型来开发USB设备驱动程序。(1)USB系统结构分析WinCE下USB系统软件由两层组成:较高USB设备驱动程序层和较低的USB函数层。较低的USB函数层本身又由两部分组成:较转载 2011-12-08 11:32:32 · 1015 阅读 · 0 评论 -
Wince 6.0 教程---第一课 环境搭建
第一课. 环境搭建1.安装vs20052.安装vs2005sp1,文件为VS2005sp1-KB926601-X86-ENU.exehttp://www.microsoft.com/downloads/info.aspx?na=41&SrcFamilyId=BB4A75AB-E2D4-4C96-B39D-37BAF6B5B1DC&SrcDisplayLang=zh-cn&u=http%转载 2011-12-08 11:33:14 · 833 阅读 · 0 评论 -
学习写一个Hello World驱动
导读: ☆─────────────────────────────────────☆ hellguard (小四★北渡北汉江⊙) 于 (Wed Jun 11 15:44:48 2003) 提到:学习笔记,没有技术含量,高手勿Ctrl-F了日期: 2003-06-10 21:50更新:-------------------------------转载 2011-12-08 17:52:55 · 1144 阅读 · 0 评论 -
Oracle_ProC编程
1.引言由于PL/SQL不能用来开发面向普通用户的应用程序,必须借助其他语言或开发工具。在Linux操作系统下应该用什么语言或开发工具来进行Oracle数据库应用的开发呢?本文将介绍2种方案:Pro*C、JDBC。而另一种SQLJ方法,限于篇幅省略。 2. 环境设置2.1 软件环境本文的实验环境是在Red Hat Linux 9.0操作系统下,因为Oracle 9i要求至少原创 2011-12-09 09:15:58 · 6006 阅读 · 0 评论 -
WinCE虚拟串口驱动
//======================================================================== //TITLE: // WinCE虚拟串口驱动(一) //AUTHOR: // norains //DATE: // Saturday 28-March-2009 //Environment转载 2011-12-12 16:33:52 · 782 阅读 · 0 评论 -
MFC 自定义消息四步曲
1. 定义全局变量或宏#define WM_MyMessage (WM_USER + n)n为数字到少大于100或者用 const UINT WM_MYMESSAGE = WM_USER + n一般可以加在stdafx.h 或resource.h 或*.app.h中。他们都是全局变量头文件所以都可以.2. 在所在类的*.H文件增加消息函数声明.p原创 2011-12-19 11:04:13 · 841 阅读 · 0 评论 -
宽字符版文件夹遍历
typedef BOOL (WINAPI *EnumerateFunc) (LPWSTR lpFileOrPath ,WIN32_FIND_DATAW lpFileInfo, void* pUserData); //返回值:返回FALSE中断遍历// 返回TRUE继续遍历//lpPath 遍历路径//nRecursion 遍历深度void doFileEnumeratio原创 2011-12-13 17:37:44 · 845 阅读 · 0 评论 -
scanf中的正则表达式
1、定制自己的扫描集 %[abc]、%[a-z]、%[^abc]、%[^a-z],比isdigit()、isalpha()更加灵活。[]内是匹配的字符,^表示求反集。int i;char str[80], str2[80];// scanf("%d%[abc]%s", &i, str, str2); // printf("%d %s %s\n",i,str,str2);原创 2011-12-12 17:47:59 · 3194 阅读 · 0 评论 -
sprintf高级用法
sprintf()的一些高级用法在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直 接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下:intsprintf(char *buffer原创 2011-12-22 18:46:01 · 795 阅读 · 0 评论