截取guid..........

曲军昌 2013-01-31 05:00:24
我现在要写一个存储过程,输出一个值(输出的是是newid的前8位)
不过要和一个表里的code进行对比,如果存在就继续截取,不存在就直接输出。
改怎么写啊???
if OBJECT_ID('code','u') is not null
drop table code
go
create table code
(
ID int identity(1,1) not null,
Code varchar(8) not null,
VGUID uniqueidentifier default(newid()) not null
)
insert into code(Code) values (LEFT(NEWID(),8))
...全文
256 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanpeng1711 2013-02-01
  • 打赏
  • 举报
回复
declare @guid varchar(8) set @guid=left(newid(),8) while 1=1 begin if exists ( select 1 from guidTest where guid=@guid ) begin print 'exists:'+@guid set @guid=left(newid(),8) end else begin print 'notExists:'+@guid insert into guidTest values(@guid) break end end
tanpeng1711 2013-02-01
  • 打赏
  • 举报
回复
declare @guid varchar(8), @count int set @guid=left(newid(),8) set @count =1 while @count>0 begin select @count=count(*) from guidTest where guid=@guid if @count=0 begin insert into guidTest(guid) values(@guid) end else begin set @guid=left(newid(),8) end end
叶子 2013-02-01
  • 打赏
  • 举报
回复
我觉得 #3 即可。
chuifengde 2013-02-01
  • 打赏
  • 举报
回复
DECLARE @a VARCHAR(8)

A:
SELECT @a=left(NEWID(),8)
IF EXISTS(SELECT 1 FROM Code WHERE code=@a)
	GOTO A
INSERT Code(Code) SELECT @a
shulei521 2013-01-31
  • 打赏
  • 举报
回复
create procedure test as declare @str char(8) declare @a int set @a=1 select @str=SUBSTRING( NEWID(),0,9) while(@a=1) begin if exists (select * from code where code=@str) begin select @str=SUBSTRING( NEWID(),0,9) end else begin set @a=2 end end select @str
shoppo0505 2013-01-31
  • 打赏
  • 举报
回复
大致如下: declare @id uniqueidentifier = newid() , @idtemp uniqueidentifier set @idtemp = (select newid()) while ((select LEFT(@idtemp,8)) <> (select LEFT(@id,8))) begin set @idtemp = (select newid()) end select @id, @idtemp 提示,这个循环几乎不太可能结束。
第1章 Windows应用程序开发入门..........................................................................................16 1.1 第一个实例程序............................................................................................................16 1.1.1 sta rt.exe..............................................................................................................16 1.1.2 Windows API......................................................................................................17 1.1.3 程序入口函数.....................................................................................................17 1.1.4 start.c代码分析...................................................................................................17 1.2 编译代码........................................................................................................................18 1.2.1 安装Visual Studio...............................................................................................18 1.2.2 安装Microsoft Platform SDK.............................................................................19 1.2.3 集成Microsoft Platform SDK与Visual C++速成版...........................................20 1.2.4 Vista SDK与Visual Studi0 2008.........................................................................21 1.2.5 Visual Studio专业版或团队系统版...................................................................22 1.2.6 使用图形化IDE建立工程、进行编译..............................................................22 1.2.7 “解决方案”与“工程”..........................................................................................23 1.2.8 使用命令行工具编译.........................................................................................23 第2章 Windows API概要..........................................................................................................24 2.1 Windows数据类型.........................................................................................................24 2.1.1 Windows数据类型示例......................................................................................25 2.1.2 Windows数据类型与标准C数据类型的关系...................................................28 2.1.3 Windows数据类型与Windows API...................................................................28 2.1.4 Windows中的数据结构......................................................................................29 2.2 Windows API的功能分类.............................................................................................29 2.2.1 系统基本服务.....................................................................................................29 2.2.2 系统管理.............................................................................................................31 2.2.3 用户界面.............................................................................................................31 2.2.4 图像和多媒体.....................................................................................................34 2.2.5 网络.....................................................................................................................34 2.2.6 系统安全.............................................................................................................34 2.2.7 其他功能.............................................................................................................35 2.3 Windows API核心DLL..................................................................................................35 2.3.1 Kerne132.dll........................................................................................................35 2.3.2 User32.dll............................................................................................................36 2.3.3 Gdi32.dll.............................................................................................................36 2.3.4 标准C函数..........................................................................................................36 2.3.5 其他Dll................................................................................................................36 2.4 Unicode和多字节..........................................................................................................36 2.4.1 W版本和A版本的API........................................................................................38 2.4.2 Unicode与ASGII的转换.....................................................................................39 2.5 对Windows程序设计规范的建议.................................................................................39 第3章开发工具配置与使用.....................................................................................................41 3.1 使用Visual C/C++编译链接工具...............................................................................41 3.1.1 编译器cl.exe.......................................................................................................41 3.1.2 资源编译器rc.exe...............................................................................................46 3.1.3 链接器link.exe....................................................................................................47 3.1.4 其他工具.............................................................................................................53 3.1.5 编译链接工具依赖的环境变量.........................................................................54 3.1.6 示例:使用/D选项进行条件编译.....................................................................57 3.2 使用Platform SDK.........................................................................................................58 3.2.1 Platform SDK的目录结构与功能......................................................................58 3.2.2 为编译链接工具设置环境变量.........................................................................59 3.2.3 Platform SDK工具集..........................................................................................61 3.2.4 Windows Vista SDK............................................................................................63 3.3 编写Makefile.................................................................................................................63 3.3.1 使用nmake.exe构建工程....................................................................................63 3.3.2 Makefile实例......................................................................................................65 3.3.3 注释.....................................................................................................................65 3.3.4 宏.........................................................................................................................66 3.3.5 描述块:目标、依赖项和命令.........................................................................68 3.3.6 makefile预处理...................................................................................................69 3.3.7 在Platform SDK的基础上使用nmake...............................................................70 3.4 使用WinDbg调试..........................................................................................................72 3.4.1 安装WinDbg.......................................................................................................72 3.4.2 编译可调试的程序.............................................................................................73 3.4.3 WinDbg命令.......................................................................................................74 3.4.4 调试过程演示.....................................................................................................74 3.5 集成开发环境Visual Studio..........................................................................................77 3.5.1 工程类型选择与配置.........................................................................................77 3.5.2 Visual Studio快捷方式.......................................................................................79 3.5.3 生成项目.............................................................................................................79 3.5.4 调试.....................................................................................................................79 3.5.5 选项与设置.........................................................................................................80 3.6 开发环境配置总结........................................................................................................81 第4章文件系统.........................................................................................................................82 4.1 概述...............................................................................................................................82 4.1.1 文件系统的基本概念.........................................................................................82 4.1.2 文件系统主要API..............................................................................................83 4.2 磁盘和驱动器管理........................................................................................................85 4.2.1 遍历卷并获取属性.............................................................................................85 4.2.2 操作驱动器挂载点.............................................................................................91 4.2.3 判断光驱中是否有光盘.....................................................................................96 4.2.4 获取磁盘分区的总容量、空闲容量、簇、扇区信息.....................................98 4.3 文件和目录管理..........................................................................................................101 4.3.1 删除、复制、重命名、移动文件...................................................................102 4.3.2 创建、打开、读写文件,获取文件大小.......................................................105 4.3.3 创建目录...........................................................................................................111 4.3.4 获取程序所在的目录、程序模块路径,获取和设置当前目录...................112 4.3.5 查找文件、遍历指定目录下的文件和子目录...............................................115 4.3.6 递归遍历目录树...............................................................................................118 4.3.7 获取、设置文件属性和时间...........................................................................120 4.4 内存映射文件..............................................................................................................125 4.4.1 使用Mapping File提高文件读写的效率.........................................................125 4.4.2 通过Mapping File在进程间传递和共享数据.................................................130 4.4.3 通过文件句柄获得文件路径...........................................................................133 4.5 总结..............................................................................................................................136 第5章内存管理.......................................................................................................................137 5.1 Windows内存管理原理...............................................................................................137 5.1.1 基本概念...........................................................................................................137 5.1.2 分页与分段内存管理、内存映射与地址转换...............................................138 5.1.3 进程的内存空间...............................................................................................140 5.1.4 虚拟内存布局、内存的分工、堆与栈...........................................................142 5.1.5 内存的保护属性和存取权限...........................................................................142 5.1.6 本章API列表....................................................................................................142 5.2 堆管理..........................................................................................................................144 5.2.1 获取堆句柄、分配与再分配堆.......................................................................144 5.2.2 获取堆中内存块的大小信息...........................................................................148 5.2.3 释放内存、销毁堆...........................................................................................149 5.3 全局(Global)和局部(Local)内存管理.........................................................................151 5.3.1 Global函数........................................................................................................151 5.3.2 Local函数........................................................................................................152 5.3.3 使用全局和局部函数分配和释放内存、改变内存块属性...........................153 5.4 虚拟内存管理..............................................................................................................154 5.4.1 虚拟地址空间与内存分页...............................................................................154 5.4.2 分配和释放可读可写的虚拟内存页面...........................................................154 5.4.3 修改内存页面状态和保护属性、将页面锁定在物理内存中.......................157 5.4.4 管理其他进程的虚拟内存...............................................................................158 5.5 内存操作与内存信息管理..........................................................................................159 5.5.1 复制充、移动、清零内存块、防止缓冲区溢出...........................................159 5.5.2 获得当前系统内存使用情况...........................................................................161 5.5.3 判断内存指针的可用性...................................................................................162 5.6 各种内存分配方式的关系与比较..............................................................................163 5.6.1 标准C内存管理函数与Windows内存管理API的关系...................................163 5.6.2 功能性区别.......................................................................................................164 5.6.3 效率的区别.......................................................................................................164 第6章进程、线程和模块.......................................................................................................165 6.1 基本概念......................................................................................................................165 6.1.1 应用程序与进程...............................................................................................165 6.1.2 控制台应用程序与图形用户界面应用程序...................................................166 6.1.3 动态链接库、模块...........................................................................................166 6.1.4 线程、纤程与作业...........................................................................................167 6.1.5 权限与优先级...................................................................................................167 6.2 进程管理......................................................................................................................167 6.2.1 创建进程、获取进程相关信息、获取启动参数...........................................168 6.2.2 编写控制台程序和图形用户界面应用程序...................................................173 6.2.3 获取和设置环境变量.......................................................................................173 6.3 线程、纤程..................................................................................................................176 6.3.1 创建线程、退出线程、获取线程信息...........................................................177 6.3.2 挂起、恢复、切换、终止线程.......................................................................179 6.3.3 创建远程线程、将代码注入其他进程中执行...............................................182 6.3.4 创建纤程、删除纤程、调度纤程...................................................................185 6.3.5 纤程与线程的互相转换...................................................................................186 6.4 进程状态信息..............................................................................................................191 6.4.1 PS API与Tool help API.....................................................................................191 6.4.2 遍历系统中的进程...........................................................................................193 6.4.3 列举进程的模块、线程...................................................................................197 6.4.4 进程的堆使用、内存占用、虚拟内存大小,页面错误情况.......................199 6.5 动态链接库..................................................................................................................200 6.5.1 加载、释放DLL、通过句柄获取DLL相关信息............................................201 6.5.2 编写动态链接库、导出函数...........................................................................201 6.5.3 创建动态链接库工程,配置DLL编译链接选项...........................................203 6.5.4 运行时动态获取DLL导出函数地址并调用...................................................204 6.5.5 声明导出函数、创建lib库,为其他模块提供导入表调用接口...................205 6.5.6 通过构建导入表调用DLL导出函数...............................................................206 第7章线程同步.......................................................................................................................207 7.1 基本原理......................................................................................................................207 7.1.1 线程同步的过程...............................................................................................207 7.1.2 同步对象...........................................................................................................208 7.1.3 等待函数...........................................................................................................208 7.2 同步对象示例..............................................................................................................209 7.2.1 使用事件对象(Event).......................................................................................209 7.2.2 使用互斥对象(Mutex)......................................................................................214 7.2.3 使用信号量控制访问共享数据的线程数量...................................................217 7.2.4 使用可等待计时器(Timer)...............................................................................221 7.3 等待进程和线程的执行完成......................................................................................224 第8章服务...............................................................................................................................225 8.1 基本概念......................................................................................................................225 8.1.1 服务控制器(SCM)............................................................................................225 8.1.2 服务程序...........................................................................................................226 8.1.3 服务控制管理程序...........................................................................................226 8.1.4 系统服务管理工具...........................................................................................226 8.1.5 服务的属性.......................................................................................................226 8.2 编写服务程序..............................................................................................................227 8.2.1 入口函数...........................................................................................................227 8.2.2 服务主函数.......................................................................................................227 8.2.3 控制处理函数...................................................................................................228 8.3 实现对服务的控制和管理..........................................................................................231 8.3.1 创建、删除服务...............................................................................................231 8.3.2 启动、停止服务,向服务发送控制请求.......................................................234 8.3.3 管理服务状态、配置服务、服务的依赖关系...............................................237 第9章图形用户界面...............................................................................................................244 9.1 字符界面程序..............................................................................................................244 9.1.1 基本概念...........................................................................................................244 9.1.2 控制台读写.......................................................................................................246 9.1.3 控制台字体、颜色等属性,操作屏幕缓存...................................................249 9.1.4 控制台事件.......................................................................................................259 9.2 图形用户界面:基本概念..........................................................................................262 9.2.1 窗口...................................................................................................................262 9.2.2 窗口类...............................................................................................................263 9.2.3 消息和消息处理函数.......................................................................................263 9.2.4 控件...................................................................................................................263 9.2.5 资源...................................................................................................................264 9.2.6 对话框...............................................................................................................264 9.3 图形用户界面:窗口..................................................................................................264 9.3.1 注册窗口类.......................................................................................................266 9.3.2 创建窗口...........................................................................................................267 9.3.3 窗口消息处理函数...........................................................................................269 9.3.4 窗口属性、位置和大小...................................................................................273 9.3.5 窗口显示方式...................................................................................................274 9.3.6.线程消息队列和消息循环...............................................................................274 9.4 图形用户界面:控件..................................................................................................275 9.4.1 Tree View控件..................................................................................................275 9.4.2 为Tree View控件增加节点..............................................................................277 9.4.3 Tree View右键菜单..........................................................................................278 9.4.4 List View控件...................................................................................................280 9.4.5 为List View控件增加分栏...............................................................................282 9.4.6 为List View控件增加项...................................................................................283 9.4.7 文本框控件.......................................................................................................284 9.4.8 为文本框控件设置文字...................................................................................285 9.5 界面资源......................................................................................................................286 9.5.1 资源脚本(.rc).................................................................................................286 9.5.2 资源ID定义和头文件.......................................................................................289 9.5.3 在程序中使用资源...........................................................................................289 9.6 菜单..............................................................................................................................290 9.6.1 菜单资源和菜单句柄.......................................................................................290 9.6.2 动态增加、删除、设置菜单及菜单项...........................................................291 9.6.3 菜单消息处理...................................................................................................292 9.7 对话框..........................................................................................................................292 9.7.1 创建对话框.......................................................................................................292 9.7.2 对话框消息处理函数.......................................................................................293 第10章系统信息的管理.........................................................................................................295 10.1 Windows系统信息.....................................................................................................295 10.1.1 获取系统版本.................................................................................................295 10.1.2 获取计算机硬件信息.....................................................................................297 10.1.3 获取系统目录等信息.....................................................................................299 10.1.4 用户名、计算机名、域名.............................................................................300 10.1.5 处理系统颜色信息、尺度信息等.................................................................302 10.1.6 鼠标、键盘等外设信息.................................................................................303 10.2 时间信息....................................................................................................................304 10.2.1 设置、获取系统时间.....................................................................................304 10.2.2 获取开机至现在持续的时间.........................................................................305 10.2.3 文件时间与系统时间的转换.........................................................................305 10.3 注册表........................................................................................................................306 10.3.1 注册表的作用及组织形式.............................................................................306 10.3.2 键、子键、键属性及键值的相关操作.........................................................307 10.3.3 列举注册表项及键值.....................................................................................309 10.3.5 设置随程序启动而启动的调试器(任何程序).........................................312 10.3.6 指定程序崩溃实时调试器.............................................................................312 第11章进程间通信.................................................................................................................313 11.1 邮槽( MailSlot ).........................................................................................................313 11.1.1 创建邮槽、从邮槽中读取消息.....................................................................313 11.1.2 通过邮槽发送消息.........................................................................................317 11.2 管道(Pipe)..................................................................................................................318 11.2.1 创建命名管道.................................................................................................318 11.2.2 管道监听.........................................................................................................320 11.2.3 使用异步I/O进行读写....................................................................................321 11.2.4 关闭管道实例.................................................................................................325 11.2.5 客户端.............................................................................................................325 11.3 剪贴板........................................................................................................................328 11.3.1 获取、设置剪贴板数据.................................................................................328 11.3.2 监视剪贴板.....................................................................................................334 11.3.3 剪贴板数据格式.............................................................................................343 11.4 数据复制消息(WM_COPYDATA)...........................................................................345 11.4.1 数据发送端.....................................................................................................345 11.4.2 数据接收端.....................................................................................................348 11.5 其他进程间通信方式................................................................................................350 11.5.1 动态数据交换(DDE)和网络动态数据交换(NDDE).....................................350 11.5.3 Windows Socket..............................................................................................351 第12章 Windows Shell程序设计............................................................................................352 12.1 Windows Shell目录管理...........................................................................................352 12.1.1 Shell对目录和文件的管理形式.....................................................................353 12.1.2 “我的文档”等特殊目录相关操作.................................................................353 12.1.3 绑定、遍历、属性获取.................................................................................354 12.1.4 浏览文件对话框.............................................................................................357 12.2 文件协助(File Associations)......................................................................................358 12.2.1 文件类型相关注册表键值.............................................................................359 12.2.2 为文件指定默认打开程序.............................................................................359 12.2.3 定制文件类型的图标.....................................................................................360 12.3 Shell扩展.................................................................................................................361 12.3.1 对象及概念.....................................................................................................361 12.3.2 CLSID,处理例程的GUID...........................................................................362 12.3.3 注册Shell扩展.................................................................................................363 12.3.4 COM程序开发基础........................................................................................364 12.3.5 编写Handler程序............................................................................................364 12.3.6 Shell扩展程序的调试.....................................................................................380 12.3.7 总结.................................................................................................................381 12.4 任务栏通知区域(Tray)图标......................................................................................381 12.4.1 创建图标窗口.................................................................................................382 12.4.2 创建图标和图标菜单.....................................................................................386 12.4.4 弹出气泡通知.................................................................................................391 12.4.5 动态图标.........................................................................................................393 12.4.6 其他功能.........................................................................................................395 第13章 Windows GDI.............................................................................................................398 13.1 GDI编程接口概述.....................................................................................................398 13.1.1 Windows GDI的功能......................................................................................398 13.1.2 链接库与头文件.............................................................................................398 13.2 设备上下文(DC)\输出操作与图形对象................................................................398 13.2.1 设备上下文类型与关联设备.........................................................................399 13.2.2 图形对象的作用及与DC的关系...................................................................399 13.2.3 各类图形对象的具体属性与作用.................................................................401 13.2.4 绘制、填充、写入等图形输出操作.............................................................402 13.2.5 修剪与坐标变换.............................................................................................403 13.2.6 设备上下文的图形模式.................................................................................403 13.3 一个最简单的GDI程序.............................................................................................404 13.3.1 示例.................................................................................................................404 13.3.2 DC的操作.....................................................................................................406 13.3.3 颜色的表示.....................................................................................................407 13.3.4 图形对象:画刷和画笔.................................................................................407 13.3.5 输出操作:绘制图形和线条.........................................................................409 13.4 文字和字体................................................................................................................409 13.4.1 选择、设置字体.............................................................................................412 13.4.2 选择字体图形对象.........................................................................................413 13.4.3 文字的颜色.....................................................................................................413 13.4.4 输出文字.........................................................................................................413 13.4.5 DC图形模式设置...........................................................................................414 13.4.6 遍历字体.........................................................................................................415 13.4.7 为系统安装、删除字体文件.........................................................................417 13.5 绘制线条....................................................................................................................417 13.5.1 选择画笔对象.................................................................................................417 13.5.2 直线.................................................................................................................418 13.5.3 绘制任意曲线.................................................................................................418 13.5.4 跟踪鼠标轨迹.................................................................................................418 13.5.5 弧线.................................................................................................................424 13.6 绘制图形....................................................................................................................424 13.6.1 填充颜色与边缘勾勒.....................................................................................425 13.6.2 绘制矩形、椭圆、圆角矩形.........................................................................425 13.6.3 椭圆弓形和椭圆扇形.....................................................................................431 13.6.4 多边形.............................................................................................................431 13.6.5 REGT结构及对RECT的操作........................................................................432 13.7 位图操作....................................................................................................................434 13.7.1 截取屏幕、保存位图文件.............................................................................434 13.7.2 将位图显示在界面上.....................................................................................439 13.8 区域(Regions)、路径(Paths)与修剪(Clip)操作.......................................................442 13.8.1 区域的创建及形状、位置等属性.................................................................442 13.8.2 区域边沿、区域填充、反转与勾勒操作.....................................................443 13.8.3 组合、比较、移动等操作.............................................................................446 13.8.4 点击测试(Hit Testing)....................................................................................447 13.8.5 路径的创建与操作.........................................................................................451 13.8.6 路径转换为区域.............................................................................................452 13.8.7 使用区域和路径进行修剪操作,限制输出.................................................452 13.9 坐标变换....................................................................................................................458 13.9.1 缩放.................................................................................................................459 13.9.2 旋转.................................................................................................................460 13.10 调色板......................................................................................................................460 第14章网络通信与配置.........................................................................................................463 14.1 Socket通信.................................................................................................................463 14.1.1 客户端.............................................................................................................464 14.1.2 服务端.............................................................................................................469 14.1.3 处理并发的客户端连接.................................................................................475 14.1.4 网络通信的异步I/O模式................................................................................476 14.2 IP Helper....................................................................................................................476 第15章程序安装与设置.........................................................................................................483 15.1.1 makecab.exe....................................................................................................483 15.1.2 压缩多个文件.................................................................................................484 15.1.3 Cabinet软件开发工具包(CABSDK)..............................................................485 15.2 编写INF文件.............................................................................................................486 15.2.1 INF文件格式..................................................................................................486 15.2.2 Install节...........................................................................................................488 15.2.3 CopyFiles和AddReg等安装过程...................................................................488 15.2.4 源路径和目的路径.........................................................................................489 15.2.5 字符串表.........................................................................................................489 15.3 安装程序setup.exe的编号.........................................................................................489 15.4 使用msi文件进行安装..............................................................................................493 15.4.1 Windows Installer Service...............................................................................493 15.4.2 msi文件的创建与修改工具orca.exe..............................................................495 15.4.3 准备工作.........................................................................................................496 15.4.4 编辑表组.........................................................................................................496 第16章设备驱动管理与内核通信.........................................................................................497 16.1 设备管理....................................................................................................................497 16.1.1 列举设备接口.................................................................................................497 16.1.2 监控设备的加载和卸载.................................................................................504 16.2 I/o控制、内核通信...................................................................................................509 16.2.1 加载驱动程序.................................................................................................509 16.2.2 控制驱动程序、与驱动程序进行通信.........................................................516 16.3 编写设备驱动程序....................................................................................................519 16.3.1 驱动程序开发包:DDK................................................................................520 16.4 I/O模式,同步与异步..............................................................................................525 第17章用户、认证和对象安全.............................................................................................527 17.1 基本概念....................................................................................................................527 17.1.1 访问令牌、权限和用户标识.........................................................................527 17.1.2 进程的系统操作权限.....................................................................................528 17.1.3 安全对象.........................................................................................................528 17.1.4 访问控制列表(ACL)......................................................................................529 17.2 安全机制程序示例....................................................................................................530 17.2.1 列举进程访问令牌内容和权限.....................................................................530 17.2.2 修改进程的权限.............................................................................................536 17.2.3 列举安全对象的安全描述符.........................................................................537 17.2.4 修改安全描述符.............................................................................................543 17.3 用户............................................................................................................................544 17.3.1 创建用户.........................................................................................................544 17.3.2 用户组.............................................................................................................545 17.3.3 删除用户.........................................................................................................546 17.3.4 列举用户和用户组、获取用户信息.............................................................547 第18章 Windows API的内部原理..........................................................................................554 18.1 关于API的补充说明.................................................................................................554 18.1.1 Windows API的版本演进和Vista新增API....................................................554 18.1.2 64位操作系统的接口..................................................................................555 18.2 Windows系统中的对象封装.....................................................................................555 18.2.1 什么是对象.....................................................................................................555 18.2.2 面向对象的思想.............................................................................................555 18.2.3 Windows系统中的对象:内核对象、GDI对象等.......................................556 18.3 WiFidows程序设计参考:文档资源与样例代码....................................................556 18.3.1 SDK文档和MSDN.........................................................................................556 18.3.2 SDK示例代码.................................................................................................556 18.4 x86平台程序函数调用原理.....................................................................................557 18.4.1 函数调用的真实过程.....................................................................................557 18.4.2 函数调用约定.................................................................................................561 18.4.3 为什么通过参数返回数据时只能使用指针.................................................562 18.4.4 缓冲区溢出.....................................................................................................562 18.4.5 程序运行错误的调试技巧.............................................................................562 18.5 可执行程序结构与AIPI函数接口内部机理............................................................563 18.5.1 Windows可执行程序结构..............................................................................563 18.5.2 导入表、导出表、动态链接.........................................................................565 18.5.3 NTDLL.DLL、NATIVE API和SSDT............................................................566 18.5.4 API HOOK......................................................................................................568 18.6 发布程序....................................................................................................................569 18.6.1 合理选择编译链接选项.................................................................................569 18.6.2 构建到指定路径.............................................................................................569 18.7 模块化,向Windows APl学习接口定义..................................................................569 18.7.1 lib文件............................................................................................................569 18.7.2 头文件.............................................................................................................570 18.7.3 为第三方应用软件提供SDK.........................................................................570
人民邮电出版 第 1 章 Windows应用程序开发入门..........................................................................................16 1.1 第一个实例程序............................................................................................................16 1.1.1 sta rt.exe ..............................................................................................................16 1.1.2 Windows API ......................................................................................................17 1.1.3 程序入口函数.....................................................................................................17 1.1.4 start.c代码分析 ...................................................................................................17 1.2 编译代码........................................................................................................................18 1.2.1 安装Visual Studio ...............................................................................................18 1.2.2 安装Microsoft Platform SDK .............................................................................19 1.2.3 集成Microsoft Platform SDK与Visual C++速成版 ...........................................20 1.2.4 Vista SDK与Visual Studi0 2008 .........................................................................21 1.2.5 Visual Studio专业版或团队系统版 ...................................................................22 1.2.6 使用图形化IDE建立工程、进行编译 ..............................................................22 1.2.7 “解决方案”与“工程”..........................................................................................23 1.2.8 使用命令行工具编译.........................................................................................23 第 2 章 Windows API概要 ..........................................................................................................24 2.1 Windows数据类型.........................................................................................................24 2.1.1 Windows数据类型示例......................................................................................25 2.1.2 Windows数据类型与标准C数据类型的关系 ...................................................28 2.1.3 Windows数据类型与Windows API ...................................................................28 2.1.4 Windows中的数据结构......................................................................................29 2.2 Windows API的功能分类 .............................................................................................29 2.2.1 系统基本服务.....................................................................................................29 2.2.2 系统管理.............................................................................................................31 2.2.3 用户界面.............................................................................................................31 2.2.4 图像和多媒体.....................................................................................................34 2.2.5 网络.....................................................................................................................34 2.2.6 系统安全.............................................................................................................34 2.2.7 其他功能.............................................................................................................35 2.3 Windows API核心DLL..................................................................................................35 2.3.1 Kerne132.dll........................................................................................................35 2.3.2 User32.dll ............................................................................................................36 2.3.3 Gdi32.dll .............................................................................................................36 2.3.4 标准C函数 ..........................................................................................................36 2.3.5 其他Dll................................................................................................................36 2.4 Unicode和多字节 ..........................................................................................................36 2.4.1 W版本和A版本的API........................................................................................38 2.4.2 Unicode与ASGII的转换.....................................................................................39 2.5 对Windows程序设计规范的建议.................................................................................39 第 3 章 开发工具配置与使用.....................................................................................................41 3.1 使用Visual C/C++编译链接工具...............................................................................41 3.1.1 编译器cl.exe .......................................................................................................41 3.2 3.3 3.4 3.5 3.6 第4章 4.1 4.2 4.3 3.1.2 资源编译器rc.exe ...............................................................................................46 3.1.3 链接器link.exe ....................................................................................................47 3.1.4 其他工具.............................................................................................................53 3.1.5 编译链接工具依赖的环境变量 .........................................................................54 3.1.6 示例:使用/D选项进行条件编译 .....................................................................57 使用Platform SDK.........................................................................................................58 3.2.1 Platform SDK的目录结构与功能 ......................................................................58 3.2.2 为编译链接工具设置环境变量 .........................................................................59 3.2.3 Platform SDK工具集..........................................................................................61 3.2.4 Windows Vista SDK............................................................................................63 编写Makefile .................................................................................................................63 3.3.1 使用nmake.exe构建工程....................................................................................63 3.3.2 Makefile实例 ......................................................................................................65 3.3.3 注释.....................................................................................................................65 3.3.4 宏.........................................................................................................................66 3.3.5 描述块:目标、依赖项和命令 .........................................................................68 3.3.6 makefile预处理...................................................................................................69 3.3.7 在Platform SDK的基础上使用nmake ...............................................................70 使用WinDbg调试 ..........................................................................................................72 3.4.1 安装WinDbg .......................................................................................................72 3.4.2 编译可调试的程序.............................................................................................73 3.4.3 WinDbg命令 .......................................................................................................74 3.4.4 调试过程演示.....................................................................................................74 集成开发环境Visual Studio ..........................................................................................77 3.5.1 工程类型选择与配置.........................................................................................77 3.5.2 Visual Studio快捷方式 .......................................................................................79 3.5.3 生成项目.............................................................................................................79 3.5.4 调试.....................................................................................................................79 3.5.5 选项与设置.........................................................................................................80 开发环境配置总结........................................................................................................81 文件系统.........................................................................................................................82 概述................................................................................................................................82 4.1.1 文件系统的基本概念.........................................................................................82 4.1.2 文件系统主要API ..............................................................................................83 磁盘和驱动器管理........................................................................................................85 4.2.1 遍历卷并获取属性.............................................................................................85 4.2.2 操作驱动器挂载点.............................................................................................91 4.2.3 判断光驱中是否有光盘.....................................................................................96 4.2.4 获取磁盘分区的总容量、空闲容量、簇、扇区信息 .....................................98 文件和目录管理..........................................................................................................101 4.3.1 删除、复制、重命名、移动文件 ...................................................................102 4.3.2 创建、打开、读写文件,获取文件大小 .......................................................105 4.3.3 创建目录........................................................................................................... 111 4.3.4 获取程序所在的目录、程序模块路径,获取和设置当前目录 ................... 112 4.4 4.5 第5章 5.1 5.2 5.3 5.4 5.5 5.6 第6章 6.1 4.3.5 查找文件、遍历指定目录下的文件和子目录 ............................................... 115 4.3.6 递归遍历目录树............................................................................................... 118 4.3.7 获取、设置文件属性和时间...........................................................................120 内存映射文件..............................................................................................................125 4.4.1 使用Mapping File提高文件读写的效率 .........................................................125 4.4.2 通过Mapping File在进程间传递和共享数据 .................................................130 4.4.3 通过文件句柄获得文件路径...........................................................................133 总结..............................................................................................................................136 内存管理.......................................................................................................................137 Windows内存管理原理...............................................................................................137 5.1.1 基本概念...........................................................................................................137 5.1.2 分页与分段内存管理、内存映射与地址转换 ...............................................138 5.1.3 进程的内存空间...............................................................................................140 5.1.4 虚拟内存布局、内存的分工、堆与栈 ...........................................................142 5.1.5 内存的保护属性和存取权限...........................................................................142 5.1.6 本章API列表 ....................................................................................................142 堆管理..........................................................................................................................144 5.2.1 获取堆句柄、分配与再分配堆 .......................................................................144 5.2.2 获取堆中内存块的大小信息...........................................................................148 5.2.3 释放内存、销毁堆...........................................................................................149 全局(Global)和局部(Local)内存管理.........................................................................151 5.3.1 Global函数........................................................................................................151 5.3.2 Local函数........................................................................................................152 5.3.3 使用全局和局部函数分配和释放内存、改变内存块属性 ...........................153 虚拟内存管理..............................................................................................................154 5.4.1 虚拟地址空间与内存分页...............................................................................154 5.4.2 分配和释放可读可写的虚拟内存页面 ...........................................................154 5.4.3 修改内存页面状态和保护属性、将页面锁定在物理内存中 .......................157 5.4.4 管理其他进程的虚拟内存...............................................................................158 内存操作与内存信息管理..........................................................................................159 5.5.1 复制充、移动、清零内存块、防止缓冲区溢出 ...........................................159 5.5.2 获得当前系统内存使用情况...........................................................................161 5.5.3 判断内存指针的可用性...................................................................................162 各种内存分配方式的关系与比较..............................................................................163 5.6.1 标准C内存管理函数与Windows内存管理API的关系...................................163 5.6.2 功能性区别.......................................................................................................164 5.6.3 效率的区别.......................................................................................................164 进程、线程和模块.......................................................................................................165 基本概念......................................................................................................................165 6.1.1 应用程序与进程...............................................................................................165 6.1.2 控制台应用程序与图形用户界面应用程序 ...................................................166 6.1.3 动态链接库、模块...........................................................................................166 6.1.4 线程、纤程与作业...........................................................................................167 6.1.5 权限与优先级...................................................................................................167 6.2 6.3 6.4 6.5 第7章 7.1 7.2 7.3 第8章 8.1 8.2 进程管理......................................................................................................................167 6.2.1 创建进程、获取进程相关信息、获取启动参数 ...........................................168 6.2.2 编写控制台程序和图形用户界面应用程序 ...................................................173 6.2.3 获取和设置环境变量.......................................................................................173 线程、纤程..................................................................................................................176 6.3.1 创建线程、退出线程、获取线程信息 ...........................................................177 6.3.2 挂起、恢复、切换、终止线程 .......................................................................179 6.3.3 创建远程线程、将代码注入其他进程中执行 ...............................................182 6.3.4 创建纤程、删除纤程、调度纤程 ...................................................................185 6.3.5 纤程与线程的互相转换...................................................................................186 进程状态信息..............................................................................................................191 6.4.1 PS API与Tool help API.....................................................................................191 6.4.2 遍历系统中的进程...........................................................................................193 6.4.3 列举进程的模块、线程...................................................................................197 6.4.4 进程的堆使用、内存占用、虚拟内存大小,页面错误情况 .......................199 动态链接库..................................................................................................................200 6.5.1 加载、释放DLL、通过句柄获取DLL相关信息............................................201 6.5.2 编写动态链接库、导出函数...........................................................................201 6.5.3 创建动态链接库工程,配置DLL编译链接选项 ...........................................203 6.5.4 运行时动态获取DLL导出函数地址并调用 ...................................................204 6.5.5 声明导出函数、创建lib库,为其他模块提供导入表调用接口 ...................205 6.5.6 通过构建导入表调用DLL导出函数 ...............................................................206 线程同步.......................................................................................................................207 基本原理......................................................................................................................207 7.1.1 线程同步的过程...............................................................................................207 7.1.2 同步对象...........................................................................................................208 7.1.3 等待函数...........................................................................................................208 同步对象示例..............................................................................................................209 7.2.1 使用事件对象(Event).......................................................................................209 7.2.2 使用互斥对象(Mutex)......................................................................................214 7.2.3 使用信号量控制访问共享数据的线程数量 ...................................................217 7.2.4 使用可等待计时器(Timer)...............................................................................221 等待进程和线程的执行完成......................................................................................224 服务...............................................................................................................................225 基本概念......................................................................................................................225 8.1.1 服务控制器(SCM)............................................................................................225 8.1.2 服务程序...........................................................................................................226 8.1.3 服务控制管理程序...........................................................................................226 8.1.4 系统服务管理工具...........................................................................................226 8.1.5 服务的属性.......................................................................................................226 编写服务程序..............................................................................................................227 8.2.1 入口函数...........................................................................................................227 8.2.2 服务主函数.......................................................................................................227 8.2.3 控制处理函数...................................................................................................228 8.3 第9章 9.1 9.2 9.3 9.4 9.5 9.6 9.7 实现对服务的控制和管理..........................................................................................231 8.3.1 创建、删除服务...............................................................................................231 8.3.2 启动、停止服务,向服务发送控制请求 .......................................................234 8.3.3 管理服务状态、配置服务、服务的依赖关系 ...............................................237 图形用户界面...............................................................................................................244 字符界面程序..............................................................................................................244 9.1.1 基本概念...........................................................................................................244 9.1.2 控制台读写.......................................................................................................246 9.1.3 控制台字体、颜色等属性,操作屏幕缓存 ...................................................249 9.1.4 控制台事件.......................................................................................................259 图形用户界面:基本概念..........................................................................................262 9.2.1 窗口...................................................................................................................262 9.2.2 窗口类...............................................................................................................263 9.2.3 消息和消息处理函数.......................................................................................263 9.2.4 控件...................................................................................................................263 9.2.5 资源...................................................................................................................264 9.2.6 对话框...............................................................................................................264 图形用户界面:窗口..................................................................................................264 9.3.1 注册窗口类.......................................................................................................266 9.3.2 创建窗口...........................................................................................................267 9.3.3 窗口消息处理函数...........................................................................................269 9.3.4 窗口属性、位置和大小...................................................................................273 9.3.5 窗口显示方式...................................................................................................274 9.3.6.线程消息队列和消息循环...............................................................................274 图形用户界面:控件..................................................................................................275 9.4.1 Tree View控件 ..................................................................................................275 9.4.2 为Tree View控件增加节点 ..............................................................................277 9.4.3 Tree View右键菜单 ..........................................................................................278 9.4.4 List View控件 ...................................................................................................280 9.4.5 为List View控件增加分栏 ...............................................................................282 9.4.6 为List View控件增加项 ...................................................................................283 9.4.7 文本框控件.......................................................................................................284 9.4.8 为文本框控件设置文字...................................................................................285 界面资源......................................................................................................................286 9.5.1 资源脚本(.rc) .................................................................................................286 9.5.2 资源ID定义和头文件.......................................................................................289 9.5.3 在程序中使用资源...........................................................................................289 菜单..............................................................................................................................290 9.6.1 菜单资源和菜单句柄.......................................................................................290 9.6.2 动态增加、删除、设置菜单及菜单项 ...........................................................291 9.6.3 菜单消息处理...................................................................................................292 对话框..........................................................................................................................292 9.7.1 创建对话框.......................................................................................................292 9.7.2 对话框消息处理函数.......................................................................................293 第 10 章 系统信息的管理.........................................................................................................295 10.1 Windows系统信息.....................................................................................................295 10.1.1 获取系统版本.................................................................................................295 10.1.2 获取计算机硬件信息.....................................................................................297 10.1.3 获取系统目录等信息.....................................................................................299 10.1.4 用户名、计算机名、域名.............................................................................300 10.1.5 处理系统颜色信息、尺度信息等 .................................................................302 10.1.6 鼠标、键盘等外设信息.................................................................................303 10.2 时间信息....................................................................................................................304 10.2.1 设置、获取系统时间.....................................................................................304 10.2.2 获取开机至现在持续的时间 .........................................................................305 10.2.3 文件时间与系统时间的转换 .........................................................................305 10.3 注册表........................................................................................................................306 10.3.1 注册表的作用及组织形式.............................................................................306 10.3.2 键、子键、键属性及键值的相关操作 .........................................................307 10.3.3 列举注册表项及键值.....................................................................................309 10.3.5 设置随程序启动而启动的调试器(任何程序) .........................................312 10.3.6 指定程序崩溃实时调试器.............................................................................312 第 11 章 进程间通信.................................................................................................................313 11.1 邮槽( MailSlot ) .........................................................................................................313 11.1.1 创建邮槽、从邮槽中读取消息 .....................................................................313 11.1.2 通过邮槽发送消息 .........................................................................................317 11.2 管道(Pipe) ..................................................................................................................318 11.2.1 创建命名管道 .................................................................................................318 11.2.2 管道监听.........................................................................................................320 11.2.3 使用异步I/O进行读写....................................................................................321 11.2.4 关闭管道实例 .................................................................................................325 11.2.5 客户端.............................................................................................................325 11.3 剪贴板........................................................................................................................328 11.3.1 获取、设置剪贴板数据 .................................................................................328 11.3.2 监视剪贴板.....................................................................................................334 11.3.3 剪贴板数据格式 .............................................................................................343 11.4 数据复制消息(WM_COPYDATA) ...........................................................................345 11.4.1 数据发送端.....................................................................................................345 11.4.2 数据接收端.....................................................................................................348 11.5 其他进程间通信方式 ................................................................................................350 11.5.1 动态数据交换(DDE)和网络动态数据交换(NDDE).....................................350 11.5.3 Windows Socket..............................................................................................351 第 12 章 Windows Shell程序设计 ............................................................................................352 12.1 Windows Shell目录管理 ...........................................................................................352 12.1.1 Shell对目录和文件的管理形式.....................................................................353 12.1.2 “我的文档”等特殊目录相关操作 .................................................................353 12.1.3 绑定、遍历、属性获取.................................................................................354 12.1.4 浏览文件对话框.............................................................................................357 文件协助(File Associations)......................................................................................358 12.2.1 文件类型相关注册表键值.............................................................................359 12.2.2 为文件指定默认打开程序.............................................................................359 12.2.3 定制文件类型的图标.....................................................................................360 12.3 Shell扩展 .................................................................................................................361 12.3.1 对象及概念.....................................................................................................361 12.3.2 CLSID,处理例程的GUID ...........................................................................362 12.3.3 注册Shell扩展.................................................................................................363 12.3.4 COM程序开发基础........................................................................................364 12.3.5 编写Handler程序 ............................................................................................364 12.3.6 Shell扩展程序的调试.....................................................................................380 12.3.7 总结.................................................................................................................381 12.4 任务栏通知区域(Tray)图标......................................................................................381 12.4.1 创建图标窗口.................................................................................................382 12.4.2 创建图标和图标菜单.....................................................................................386 12.4.4 弹出气泡通知.................................................................................................391 12.4.5 动态图标.........................................................................................................393 12.4.6 其他功能.........................................................................................................395 第 13 章 Windows GDI .............................................................................................................398 13.1 GDI编程接口概述.....................................................................................................398 13.1.1 Windows GDI的功能......................................................................................398 13.1.2 链接库与头文件.............................................................................................398 13.2 设备上下文(DC)\输出操作与图形对象................................................................398 13.2.1 设备上下文类型与关联设备 .........................................................................399 13.2.2 图形对象的作用及与DC的关系 ...................................................................399 13.2.3 各类图形对象的具体属性与作用 .................................................................401 13.2.4 绘制、填充、写入等图形输出操作 .............................................................402 13.2.5 修剪与坐标变换.............................................................................................403 13.2.6 设备上下文的图形模式.................................................................................403 13.3 一个最简单的GDI程序.............................................................................................404 13.3.1 示例.................................................................................................................404 13.3.2 DC的操作 .....................................................................................................406 13.3.3 颜色的表示.....................................................................................................407 13.3.4 图形对象:画刷和画笔.................................................................................407 13.3.5 输出操作:绘制图形和线条 .........................................................................409 13.4 文字和字体................................................................................................................409 13.4.1 选择、设置字体.............................................................................................412 13.4.2 选择字体图形对象.........................................................................................413 13.4.3 文字的颜色.....................................................................................................413 13.4.4 输出文字.........................................................................................................413 13.4.5 DC图形模式设置 ...........................................................................................414 13.4.6 遍历字体.........................................................................................................415 13.4.7 为系统安装、删除字体文件 .........................................................................417 13.5 绘制线条....................................................................................................................417 12.2 13.5.1 选择画笔对象.................................................................................................417 13.5.2 直线.................................................................................................................418 13.5.3 绘制任意曲线.................................................................................................418 13.5.4 跟踪鼠标轨迹.................................................................................................418 13.5.5 弧线.................................................................................................................424 13.6 绘制图形....................................................................................................................424 13.6.1 填充颜色与边缘勾勒.....................................................................................425 13.6.2 绘制矩形、椭圆、圆角矩形 .........................................................................425 13.6.3 椭圆弓形和椭圆扇形.....................................................................................431 13.6.4 多边形.............................................................................................................431 13.6.5 REGT结构及对RECT的操作 ........................................................................432 13.7 位图操作....................................................................................................................434 13.7.1 截取屏幕、保存位图文件.............................................................................434 13.7.2 将位图显示在界面上.....................................................................................439 13.8 区域(Regions)、路径(Paths)与修剪(Clip)操作 .......................................................442 13.8.1 区域的创建及形状、位置等属性 .................................................................442 13.8.2 区域边沿、区域填充、反转与勾勒操作 .....................................................443 13.8.3 组合、比较、移动等操作.............................................................................446 13.8.4 点击测试(Hit Testing) ....................................................................................447 13.8.5 路径的创建与操作.........................................................................................451 13.8.6 路径转换为区域.............................................................................................452 13.8.7 使用区域和路径进行修剪操作,限制输出 .................................................452 13.9 坐标变换....................................................................................................................458 13.9.1 缩放.................................................................................................................459 13.9.2 旋转.................................................................................................................460 13.10 调色板......................................................................................................................460 第 14 章 网络通信与配置.........................................................................................................463 14.1 Socket通信.................................................................................................................463 14.1.1 客户端.............................................................................................................464 14.1.2 服务端.............................................................................................................469 14.1.3 处理并发的客户端连接.................................................................................475 14.1.4 网络通信的异步I/O模式................................................................................476 14.2 IP Helper ....................................................................................................................476 第 15 章 程序安装与设置.........................................................................................................483 15.1.1 makecab.exe ....................................................................................................483 15.1.2 压缩多个文件.................................................................................................484 15.1.3 Cabinet软件开发工具包(CABSDK)..............................................................485 15.2 编写INF文件 .............................................................................................................486 15.2.1 INF文件格式 ..................................................................................................486 15.2.2 Install节...........................................................................................................488 15.2.3 CopyFiles和AddReg等安装过程 ...................................................................488 15.2.4 源路径和目的路径.........................................................................................489 15.2.5 字符串表.........................................................................................................489 15.3 安装程序setup.exe的编号.........................................................................................489 使用msi文件进行安装 ..............................................................................................493 15.4.1 Windows Installer Service...............................................................................493 15.4.2 msi文件的创建与修改工具orca.exe..............................................................495 15.4.3 准备工作.........................................................................................................496 15.4.4 编辑表组.........................................................................................................496 第 16 章 设备驱动管理与内核通信.........................................................................................497 16.1 设备管理....................................................................................................................497 16.1.1 列举设备接口.................................................................................................497 16.1.2 监控设备的加载和卸载.................................................................................504 16.2 I/o控制、内核通信 ...................................................................................................509 16.2.1 加载驱动程序.................................................................................................509 16.2.2 控制驱动程序、与驱动程序进行通信 .........................................................516 16.3 编写设备驱动程序....................................................................................................519 16.3.1 驱动程序开发包:DDK ................................................................................520 16.4 I/O模式,同步与异步 ..............................................................................................525 第 17 章 用户、认证和对象安全.............................................................................................527 17.1 基本概念....................................................................................................................527 17.1.1 访问令牌、权限和用户标识 .........................................................................527 17.1.2 进程的系统操作权限.....................................................................................528 17.1.3 安全对象.........................................................................................................528 17.1.4 访问控制列表(ACL) ......................................................................................529 17.2 安全机制程序示例....................................................................................................530 17.2.1 列举进程访问令牌内容和权限 .....................................................................530 17.2.2 修改进程的权限.............................................................................................536 17.2.3 列举安全对象的安全描述符 .........................................................................537 17.2.4 修改安全描述符.............................................................................................543 17.3 用户............................................................................................................................544 17.3.1 创建用户.........................................................................................................544 17.3.2 用户组.............................................................................................................545 17.3.3 删除用户.........................................................................................................546 17.3.4 列举用户和用户组、获取用户信息 .............................................................547 第 18 章 Windows API的内部原理 ..........................................................................................554 18.1 关于API的补充说明 .................................................................................................554 18.1.1 Windows API的版本演进和Vista新增API ....................................................554 18.1.2 64 位操作系统的接口..................................................................................555 18.2 Windows系统中的对象封装.....................................................................................555 18.2.1 什么是对象.....................................................................................................555 18.2.2 面向对象的思想.............................................................................................555 18.2.3 Windows系统中的对象:内核对象、GDI对象等.......................................556 18.3 WiFidows程序设计参考:文档资源与样例代码....................................................556 18.3.1 SDK文档和MSDN .........................................................................................556 18.3.2 SDK示例代码.................................................................................................556 18.4 x86 平台程序函数调用原理.....................................................................................557 18.4.1 函数调用的真实过程.....................................................................................557 15.4 18.4.2 函数调用约定.................................................................................................561 18.4.3 为什么通过参数返回数据时只能使用指针 .................................................562 18.4.4 缓冲区溢出.....................................................................................................562 18.4.5 程序运行错误的调试技巧.............................................................................562 18.5 可执行程序结构与AIPI函数接口内部机理 ............................................................563 18.5.1 Windows可执行程序结构..............................................................................563 18.5.2 导入表、导出表、动态链接 .........................................................................565 18.5.3 NTDLL.DLL、NATIVE API和SSDT............................................................566 18.5.4 API HOOK......................................................................................................568 18.6 发布程序....................................................................................................................569 18.6.1 合理选择编译链接选项.................................................................................569 18.6.2 构建到指定路径.............................................................................................569 18.7 模块化,向Windows APl学习接口定义..................................................................569 18.7.1 lib文件 ............................................................................................................569 18.7.2 头文件.............................................................................................................570 18.7.3 为第三方应用软件提供SDK .........................................................................570
http://blog.csdn.net/xiaoxiao108/article/details/6615848 前段时间看群里挺多讨论 微博api,正好前几天看到有个微博遥控器这东西,可以通过发微博(手机..........各种终端效果都一样)来控制电脑,看了看实现起来也不怎么复杂,整个这东西玩玩,顺便熟悉熟悉 微博api。 开发环境 vs2010 实现方法很简单 1.通过api取最新的一条微博 2.通过微博的内容控制电脑做相关操作 如:关机,取消关机,重启,摄像头截图,屏幕截图等 使用方法 1.运行QAPITool.exe后点确定(里面的appkey appsecret最好是自己在腾讯微博应用开发页面自己申请) 2.在打开的授权页面中输入你的腾讯微博账号 3.把的到的授权码输入到文本框里面 4.点击开启 5.之后就可以通过你的微博输入相关命令(关机,取消关机,重启,摄像头截图,屏幕截图)来控制电脑了 具体实现代码 1.下载腾讯微博C# sdk ,有个api调试工具,方便调试使用 http://open.t.qq.com/resource.php 2.添加一个计时器,定时取最后一条微博 OauthKey oauthKey = new OauthKey(); oauthKey.customKey = appKey; oauthKey.customSecret = appSecret; oauthKey.tokenKey = accessKey; oauthKey.tokenSecret = accessSecret; string ret; UTF8Encoding utf8 = new UTF8Encoding(); statuses st = new statuses(oauthKey, "json"); ret = st.broadcast_timeline(0, 0, 1, 0); 3.解析返回json数据 JObject response = JsonConvert.DeserializeObject(str); JObject data = JsonConvert.DeserializeObject(response["data"].ToString()); JObject info = JsonConvert.DeserializeObject(data["info"].First.ToString()); string id = info["id"].ToString().Replace("\"", ""); 3.判断这个微博是不是最新发送的 从返回的数据中取出 微博id 跟text 里面的数据 , 通过比较取出的微博id 跟电脑中保存的id 是否一致来判断是不是新发送的 如果是新的就执行微博中的控制命令,并更新保存的id StringBuilder sb = new StringBuilder(255); GetPrivateProfileString("Config", "ID", "", sb, sb.Capacity, configpath); string oldID = sb.ToString(); if (id != oldID) { string text = info["text"].ToString().Replace("\"", ""); WritePrivateProfileString("Config", "ID", id, configpath); ProcessCommand(text); } 4.通过这条微博控制电脑做相关操作 5.重启代码 Process.Start("shutdown", "-r -f -t 300"); 6.关机代码 Process.Start("shutdown", "-s -f -t 300"); 取消关机 Process.Start("shutdown", "-a"); 7.屏幕截图 var temp1 = Environment.GetEnvironmentVariable("TEMP"); var picPath1 = string.Format("{0}\\{1}.jpg", temp1, Guid.NewGuid()); Class1.GetScreen(picPath1); if (File.Exists(picPath1)) Send(picPath1); 8.摄像头截图 var temp = Environment.GetEnvironmentVariable("TEMP"); var picPath = string.Format("{0}\\{1}.jpg", temp, Guid.NewGuid()); Class1.GetCamera(picPath, this.pictureBox1); if(File.Exists(picPath)) Send(picPath); break; 9.把截取到的图片发送到微博上 OauthKey oauthKey = new OauthKey(); oauthKey.customKey = appKey; oauthKey.customSecret = appSecret; oauthKey.tokenKey = accessKey; oauthKey.tokenSecret = accessSecret; t twit = new t(oauthKey, "json"); string ret; ret = twit.add_pic("pic", "127.0.0.1", "", "", file); 如果你发现有什么不合理的,需要改进的地方,联系328452421@qq.com 朱晓 。相互交流 谢谢 下载地址 顺便问下 有家是 新泰 的 有木有。 http://blog.csdn.net/xiaoxiao108/article/details/6615848

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧