logo资料库

基于HOOK技术的本地打印监控系统开发.pdf

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
374 2011,Vo1.32,No.1 计 算 机 工 程 与 设 计 ComputerEngineering andDesign 基于 HOOK技术的本地打 印监控 系统开发 李华 来 , 刘载 文 , 许 继 平 , 戴 军 , 陈 晨 (北京 22.商大 学 计 算机 与信 息 工程 学院 ,北 京 100037) 摘 要 :针 对 中小 企 业 存 在 的 对 本 地 打 印机 管 理 的 需 求 ,提 出 了 采 用 HO0K 核 心 技 术 的 系统 实 现 方 案 。对 Microsoft公 司提 供 的打 印机 开放程序 Printjob进 行修 改完善后 得到用 户打 印信 息,并存储 到数据 文件 。利用 HOOK技 术进 行计 算机 系统底 层 操 作 ,通 过对 打 印机 消 息截 获 处 理 ,实现 了打 印 机 的 启 动 关 闭 功 能 。 以数 据 文 件 为 纽 带 ,采 用 Vc++6.0程 序 开 发 平 台 ,结合 Access与 Excel操 作 技 术 ,设 计 打 印 管 理 主 控 软 件 ,实现 了打 印 机 信 息 优 化 管 理 。 关 键 词 :HOOK 技 术 ;Printjob技 术 ; 文 件 读 写 技 术 ; 打 印 信 息 管 理 ; 软 件 开 发 中图法分类号 :TP311 52 文献标 识码 :A 文章 编号 :1000.7024(2011)01.0374.04 Local printing m onitoring system developm ent based on H OOK technology LI Hua—lai, LIU Zai—wen, XU Ji-ping, DAI Jun, CHEN Chen (College ofComputer and Information Engineering,Beijing Technology and Business University,Beijing 100037,China) Abstract: The project utilizing HOOK core technology is proposed to meet the demand ofsmall and medium enterprises for local printer management.Prin0ob which is provided by Microsoft is edited to provide information about usage and store the information to data file; HOOK technology is used to operate the underlying computer system , and the start off feature ofprinter can be achieved by HOOK in- tercepting and dealing with the printer inform ation; the main printer m an agement software based on VC++6.0 program development plat- form . combined Wim Access and Excel operating techn ology and connected data file is designed, to optimize printer information m an agem ent. Key words: HOOK technology;PfinOob techn ology;file read—write techn ology;printer message management;software development O 引 言 制管理的目的。 本 地 打 印 管理 系 统 对 于那 些 没 有 网 络平 台 ,无 法 利 用 网 络 1 本 地 打 印 监 控 系统 的总 体 架 构 打 印 管理 系 统 实现 打 印监 控 功 能…的 小企 业或 需要 严 格 保 密 要 监 控 系 统 的 总 体 结 构 框 架 见 图 1所 示 ,系 统 由 3个模 块 组 求的企业 ,可 以起到节省运营开支和提高技术保密度 功能。系 成 :基 于 HOOK技 术 的 打 印服 务 控 制 实 现 模 块 、打 印机 信 息 采 统 的 开发 采 用 HOOK技 术 ,通 过 钩 子 过程 对 打 印机 消 息 进 行截 集模块 和打 印管理主控 软件模块 。在 HOOK控制打 印机进程 获 和 处理 ,从而 控制 打 印操 作 系统 打 印服 务 的开 启 和 关 闭 ,打 中包 括 了系 统 打 印服 务 的 开 放 和 关 闭 ,打 印管 理 主 控 软件 模 块 印 信 息 的 采 集 是 依 靠 Micmsofl 公 司 提 供 的 打 印机 开 放 程 序 中包 括 了 用 户 登 录 认 证 和 打 印 信 息 自动 解 析 、存 储 两 部 分 。 PrintJob类 进 行 功 能 性 修 改 完 善 后 实现 的 ,以 临 时数 据 文 件 为 程 序 运 行 时 ,打 印信 息 采 集 模 块 和 主 控 程 序 分 别 单 独 运 信 息传 送 纽 带 ,将 从 Printjob中 获 取 得 到 的 打 印信 息存 放 在 临 行 ,并 且 打 印信 息 采 集 模 块 采 用 运 行 时 用 户 不 可 见 的方 式 ,保 时数 据 文 件 里 ,然 后 在 主控 管 理 软 件 中 ,利 用 Vc++中 的 文件 数 证 了程 序 的 安 全 可 靠 性 。 据读 取 技 术 ,将 临 时数 据 文 件 中 的 打 印信 息 读 出并 解 析 后存 放在 Excel表 格 里 ,实现 对 所 有 打 印信 息 的储 存 管 理 。 2 基 于 HooK 技 术 的 打 印控 制 实现 基 于 以 上 几 种 软 件 开 发 技 术 的 支 持 ,完 成 了本 地 打 印监 2.1 HOOK技 术 控 系 统 的 设 计 和 开 发 ,解 决 了对 打 印 机 使 用 信 息 的 监 控 和 存 在 介 绍 HOOK技 术 之 前 ,我 们 先 了 解 一 下 W indows系 统 储 管 理 ,最 终 实 现 了用 户 登 录 认 证 、打 印 服 务 开 放 关 闭 、打 印 的 消 息 传 递 机 制 ,当应 用 程 序 窗 口上 有 鼠标 或 键 盘 操 作 时 ,操 信 息 采 集 、数 据 录 入 管 理 及 存 储 查 阅 等 功 能 。在 某 国有 企 业 作 系 统 会 感 知 到 这 一 事 件 发 生 ,产 生 对 应 的消 息 ,并 放 到应 用 下 属 部 门的 使 用 表 明,该 系 统 稳 定 可 靠 ,能 实现 对 本 地 打 印 控 程 序 的 消 息 队 列 中 ,应 用 程 序 通 过 调 用 GetMessage函 数 取 出 收 稿 日期 :2010—03.09;修 订 日期 :2010—05 11。 基 金 项 目:北 京 市 高 校 人才 强 教 计 划 基 金项 目 (PHR201007123、 PHR201008238)。 作者简介:李华来 (1986一),男,黑龙江肇东人 ,硕士,研 究方 向为智能检测与优化控制; 刘载文 (1954一) , 男 ,广 东海 南 人 ,博 士 , 教授 , 研 究 方 向为 智 能 检测 与优 化 控 制 ; 许 继 平 (1979一),男 .湖 南 岳 阳 人 , 博 士 , 讲师 ,研 究 方 向为 智 能检 测 与 优 化 控 制 ; 戴 军 (1985~) , 男 , 北京人,硕士,研 究方 向为水华预测预警; 陈晨 (1986一),男,山东淄博人,硕士 ,研究方 向为系统建模与仿真 。 E.mail:siniaIl 一 5725@126,cD珈
李华来 ,刘载文 ,许继平 ,等:基于 HOOK技术 的本地 打印监控 系统开发 2011,Vo1.32,No.1 375 打 印机 管理 软 件 打 印 信 息采 集 模块 『 I打 印 管理 主 控 软 件模 块 I 『HOOK 控 制 打 印机 进 程 模块 打 印 文 件 名 打 印 页 数 用 户 登 录 认 证 打 印 数 据 录 入 打 印 机 开 放 打 印 机 关 闭 本 系 统 所 使 用 的 是 系 统 钩 子 ,是 对 整 个 系 统 进 行 监 控 ,钩 子 过 程 的 处 理 程 序 放 在 动 态 链 接 库 中 ,设 计 了接 口函 数 ,在 软 件 运 行 程 序 中 调 用 动 态 链 接 库 中 钩 子 过 程 ,根 据 用 户 选 项 开 启 和 关 闭打 印 服 务 。 当 我 们 把 钩 子 函数 挂 入 到 系 统 后 ,发 送 到 系 统 的 消 息 都 要 先 经 过 钩 子 函 数 处 理 ,当 执 行 打 印 的 消 息 被 截 获 ,消 息 就 不 会 在 交 给 系 统 处 理 ,计 算 机 系 统 的 打 印 功 能被 屏 蔽 ,钩 子 函 数 对 打 印 机 消 息 的 处 理 过 程 就 像 是 公 路 安 检 一 样 ,对 来 往 的 车 图 1 打 印机 管 理 软 件 总体 结 构 辆 都 要 进 行 排 查 ,发 现 可 疑 的 车 辆 就 会 禁 止 通 行 ,其 他 车 辆 正 常 放 行 。为 了 实 现 利 用 钩 子 控 制 打 印服 务 的 功 能 ,在 编 程 时 消 息 ,然 后 调 用 DispatchM essage函数 将 这 个 消 息 调 度 给 操 作 主 要 完 成 了 以 下 两 方 面 的 工 作 : 系 统 ,操 作 系 统 将 会 调 用 疮 口类 设 计 时 对 应 的 应 用 程 序 窗 口 在 VC++6.0编 程 环 境 中 建 立 基 于 MFC 动 态 链 接 库 的程 过 程 对 这 一 消 息 进 行 处 理 ,这 就 是 Windows平 台下 的 窗 口应 序 工 程 , 利 用 动 态 链 接 库 的 导 出 函 数 PFN_INSTALLHOOK 用 程 序 的 消 息 传 递 机 制 。 (BOOL bActivate,HWND hWndServer)来 安 装 钩 子 和 卸 载 钩 了 解 消 息 传 递 机 制 后 ,我 们 讨 论 一 下 HOOK技 术 。HOOK 子 ,bActivate为 TRUE 时 安 装 钩 子 ,为 FALSE时 卸 载 钩 子 ,在 过 程 又 称 钩 子 过 程 ,操 作 系 统 在 传 递 消 息 时 ,HOOK 过 程 会 安 装 的 钩 子 回调 函 数 中 判 断 截 获 的 消 息 是 否 为 打 印 消 息 ,是 将 消 息 过 滤 一 遍 ,如 果 发 现 我 们 感 兴 趣 的 消 息 ,会 拦 截 下 来 进 的 话 回 调 函 数 返 回 1,否 则 返 回 0。然 后 作 共 享 数 据 段 处 理 , 行 处 理 ,判 断 是 否 让 其 通 行 下 去 。钩 子 的 本 质 是 一 个 用 以处 并 向动 态链 接 库 的 DEF文 件 添 加 SECTIONS语 句 ,经 过 编 译 理 消 息 的 函 数 ,通 过 调 用 Windows API,将 其 挂 入 系 统 。 钩 子 生 成 可 执 行 文 件 ,这 样 完 成 了 钩 子 函数 的 编 写 。 根 据 所 在 的 位 置 ,可 以 分 为 系 统 钩 子 (RemoteHook)和 线 程 钩 在 VC++6.0编 程 环 境 中 建 立 基 于 对 话 框 的 程 序 工 程 ,假 子 (Local—Hook) 。系 统 钩 子 要 把 钩 子 函 数 插 入 到 其 他 进 程 的 设 主 对 话 框 类 为 CtrlPrinterVC6Dlg,在 CtrlPrinterVC6Dlg.cpp里 地 址 空 间 ,所 以要 写 在 动 态 链 接 库 中 ,它 可 以 监 视 整 个 系 统 内 定 义 需 要 API接 口 函 数 指 针 PFN_ INSTALLHOOK和 动 态 链 接 的 消 息 。而 线 程 钩 子 只 能监 视 本 程 序 的消 息 ,写在 应 用 程 序 库 实 例 句 柄 ,还 有 打 印 机 开 关 状 态 字 ,并 对 它 们 初 始 化 。 在 内 部 即 可 。 在 程 序 实 现 时 ,可 以通 过 调 用 SetWindowsHookEx BOOLCCtrlPrinterVC6Dlg::OnlnitDialog0函 数 里 判 断 是 否 加 载 函 数 来 安 装 一 个 钩 子 过 程 ,函 数 的 声 明 形 式 如 下 : 了 DLL,如 果 加 载 了生 成 DLL模 块 句 柄 ,调 用 GetProcAddress0 HHOOK SetWindowsHookEx{ 函 数 检 索 在 DLL 中 的 输 出 函 数 地 址 ,调 用 钩 子 函 数 关 闭 打 印 intidHook; H00KPRoc lp缸; H INSTANCE hM od; DW O RD dw Threadld; ); 服 务 ,实 现 代 码 如 下 : if(NULL==hHookToo1){ hHookTool=::LoadLibrary(”HookToo1.Dll”): if(NuLL!=hHookToo1) _ pfnlnstallHook=(PFN INSTALLHOOK) m idHook是 一 个 整 数 ,用 来 表 示 将 要 安 装 的 钩 子 类 型 ;lpfn ::GetProcAddress( 是 自定 义 的 回 调 函 数 , 该 函 数 来 处 理 截 获 的 消 息 ;hMod是 DLL 实 例 句 柄 ,当其 取 值 为 NULL 时 ,只 能监 控 自身 的 消 息 , 反 之 ,则 可 对 其 他 的 消 息 进 行 监 控 ;dwThreadld用 于 指 明 安 装 hHookTool, ”InstallHook” ); 的 钩 子 的类 型 :在 安 装 全 局 钩 子 时取 值 为 零 ,安 装 线 程 钩 子 则 ) 为 指 定 线 程 ID。该 API函 数 在 钩 子 安 装 成 功 的情 况 下 返 回 钩 if(m { _pfnlnstallHook) 子 函数 句 柄 ,失 败 则 返 回 NULL。在 这 里 就 不 对 各 个 参 数 进 行 In _pfnlnstallHook(TRUE m hWnd); , 具 体 说 明 ,如 果 想 了 解 的话 可 以 查 阅 MSDN。 通 过 HOOK过 程 的 介 绍 ,我 们 知 道 它 的功 能 非 常 强 大 ,通 } ( 过 对 其 编 程 调 用 可 以实 现 对 计 算 机 硬 件 设 备 的 锁 定 ,锁 定 后 BO OL bActivate, 无 法 在 使 用 鼠标 ,键 盘 和 其 他 外 围设 备 对 计 算 机 进 行 操 作 ,但 H W N D hW ndServer 这 是 很 危 险 的 ,如 果 在 钩 子 处 理 程 序 里 没 有 设 计 退 出程 序 的 ); 操 作 的 话 ,就 会 造 成 计 算 机 系 统 瘫 痪 ,所 以编 程 时 ,要 注 意 留 接 下 来 就 可 以在 程 序 中 调 用 m pfnlnstallHook(OnOff,m_ 出退 出 程 序 的 按 键 操 作 。 hwnd)函 数 ,如 果 OnOff 为 TRUE实 现 打 印服 务 关 闭 的 功 能 , 2.2 基 于 HooK 的 打 印 控 制 实 现 为 FALSE实 现 开 放 的 功 能 ,通 过 调 用 该 函 数 程 序 就 实 现 了打 针 对 本 地 打 印监 控 的 要 求 ,结 合 H00K技 术 的 特 点 ,本 文 印机 的 开 启 控 制 的 目的 。 所 设 计 的 本 地 打 印 监 控 系 统 核 心 技 术 就 是 HOOK。通 过 采 用 在 对 打 印 服 务 进 行 开 放 和 关 闭操 作 时 ,有 时 可 能 会 慢 一 HOOK过 程 ,实 现 对 打 印 机 消 息 的 截 获 ,与 人 机 界 面 操 作 选 项 些 ,用 户 需 要 耐 心 等 待 一 会 ,当 消 息 处 理 结 束 后 ,系 统 会 给 您 对 应 的应 用 处 理 程 序 可 以 实 现 对 打 印 机 系 统 的 开 启 和 关 闭 。 启 动 成 功 的 提 示 。
376 201 1,Vo1.32,No.1 计算机 工程与设计 Computer Engineering and Design 3 打 印信 息 采集 的 实 现 J十十; } 打 印机 信 息采 集 模 块 是 利 用 Microsoft公 司 提 供 的 打 印机 temp++; 开 放 程 序 Printjob(可 以从 微 软 官 网 中 下 载 得 到 )进 行 修 改 后 得 tem pc temp; 到 用 户 打 印 信 息 ,并 存储 到数 据 文 件 ,软 件 中 只采 集 打 印文 件 } 的 文 件 名 、打 印 页 数 和 打 印 时 间 ,每 打 印 一 份 文 件 系 统 会 自动 tempcc[i][j]=’\O : 采 集 相 应 的 数 据 ,存 入 到 temp.pm 文 件 中 ,而 打 印份 数 的 判 断 OldLvltem[0].pszText= : 工 作 是 在 主 控 软 件 自动 解 析 、存储 打 印 信 息 模 块 中完 成 的 ,根 OldLvItem[0].pszText=tempcc; 据 打 印 文 件 名 称 出现 的 次 数 判 断 打 印文 件 的 份 数 。 fprintf(fp_ result,"%s%s%sha”,OldLvltem 【0].pszText,Old— Microsoft公 司提 供 的 打 印机 开 放 程 序 Printjob能够 采 集 Lvltem[1].pszText,OldLvltem[2].pszText); 到 打 印 文 件 名 、计 算 机 用 户 、打 印 时 间 和 打 印 页 数 等 信 息 ,这 从 程 序 代 码 中 ,我 们 可 以看 到 之 所 以对 文 件 名 进 行 空 格 些信 息 都 显 示 在 程 序 创 建 的 窗 口里 ,用 户 可 以通 过 该 窗 口查 判 断 ,是 因 为 我 们 在 将 3个 数 据 信 息 写 入 到 数 据 文 件 时 ,也 是 看 打 印 信 息 ,效 果 如 图 2所 示 。 图 2 Printjob采 集 打 印 信 息 窗 口 以 空 格 分 开 的 ,如 果 不 进 行 判 断 的话 ,就 有 可 能造 成 数 据 文 件 里 出现 多 于 两 个 空 格 分 开 的数 据 信 息 ,而 主 控 软 件 在 自动 解 析 读 取 数 据 时 ,也 是 以空 格 进 行 区分 数 据 的 ,从 而 会 导 致 主 控 软 件 读 到 的数 据 出 现 混 乱 错 误 。 4 打 印 管理 主 控 软 件模 块 实现 4.1 本 地 打 印 监 控 系 统 工 作 流 程 本 地 打 印 监 控 系 统 的 操 作 流 程 如 图 3所 示 。软件 在 安 装 后 会 被 添 加 到 启 动 项 里 ,每 次 在 启 动 计 算 机 系 统 时 ,软 件 也 会 运 行 ,为 了 能够 一直 对 打 印 机 进 干于监 控 ,软 件 没 有 设 置 退 出 的 方 法 ,如 果 需要 退 出 软件 的 话 ,可 以 在 任 务 管 理 器 里 把 进 程 停 通 过 分 析 发 现 Printjob工 程 中 的 QueList.C文 件 中 的 Set— 止 ,这 样 就 退 出软 件 了 。 QueListContents(HWND hwndListView,QUEUEDATA pQueue) 4.2 用 户登 录 认证 函 数 是执 行 打 印信 息 提 取 、处 理 和 显 示 的 ,所 以决 定 对 这 个 函 为 了实 现 对 不 同 人 员 打 印 权 限 管 理 和 打 印信 息 监 控 ,本 数进 行 修 改 完 善 ,最 终 达 到 我 们 的 要 求 。 系 统 设 置 了 用 户 身 份 验 证 功 能 。打 印机 在 每 次 开 放 前 需要 进 在 这 个 函 数 里 我 们 主 要 做 了 3方 面 的工 作 :添 加数 据 文 行 用 户 身 份 验 证 ,为 了实 现 用 户 登 录认 证 的 功 能 ,软件 采 用 了 件 temp.pm 的 查 询 路 径 ;获 取 我 们 需 要 的 文 件 名 、打 印 页 数 和 打 印 时 间 数据 信 息 ,分 别 存 入 到 OldLvltem[0].pszText、OldLv1. tem[1].pszText、OldLvltem[2].pszText结 构 体 文 本 里 ,去 掉 其 窗 口显 示 的 功 能 代 码 ;打 开 数 据 文 件 ,判 断 OldLvltem[0]中 是 否 有 空 格 ,去 掉 文 件 名 里 的 空 格 ,并 将 我 们 提 取 的 3个 数 据 以 固 定 的格 式 写 入 到 数 据 文 件 里 。 对 文 件 进 行 操 作 就 要 保 证 能 够 读 到 文 件 的正 确 路 径 ,文 件 的 路 径 有 多种 取 法 ,这 里 不 赘 述 了 ,通 过 分 析 ,我 们 发 现 数 据 信 息 存 在 于 lvltem.pszText结 构 文 本 里 ,通 过 判 断 我 们 把 它 复 制 到 OldLvItem.pszText里 ,下 面 的代 码 是 判 断 存 放 文 件 名 的 OldLvltem[0].pszText结 构 体 文 本 里 是 否 含 有 空 格 ? 如 果 存 在 空格 的 话 则 去 掉 ,然 后 将 3个 数 据 信 息 中 间用 空格 分 开 写 入 到 数 据 文 件 里 。 char tempcc[1][300]; char temp :OldLvltem [0].pszText; char tem pc = temp; int i = 0: int J =O: while(tempc!= \0 ){ ifftempc== ){} else { tempcc[i][j]--tempc; 启动 主 控 管 理软 件 主 启 动 PrintJob 等 待采 集 信 息 主 打 印机 默 认 关 闭状 态 多 i 打 印机 打 印 数 据 采集 + 打 印 数据 录 入 到 Excel表 中 主 清 空数据 文 件 temppm 内容 童 关 闭打 印机 图 3 软 件操 作 流程
李华来 ,刘载文 ,许 继平 ,等:基 于 HOOK技 术的本地打 印监控 系统开发 2011,Vo1.32,No.1 377 Visual c++与 数 据 库 结 合 的 技 术 ,利 用 ADO技 术 访 问 Access 数 据 库 ,通 过 使 用 记 录 集 指 针 判 断 数 据 表 中是 否 存 在 当 前 输 入 的用 户 信 息 来 确 定 用 户 的 使 用 权 限 ,如 果 用 户 名 存 在 则 说 明 用 户 有 使 用 的 权 限 ,否 则 用 户 无 法 对 软 件 继 续 进 行 操 作 ,用 户 登 录 界 面 效 果 如 图 4所 示 。 图 4 用 户 登 录提 示界 面 4.3 打 印 信 息 自 动 解 析 存 储 用 户 成 功 登 录 后 进 入 到 打 印 服 务 操 作 界 面 ,如 图 5所 示 , 便 可 以对 打 印服 务 进 行 操 作 ,默 认 打 印 服 务 是 关 闭 的 ,用 户 需 要 开 放 打 印服 务 后 打 印机 才 可 以 使 用 ,如 果 关 闭 的 状 态 下 使 用 ,系 统 会 弹 出 对 话 框 提 示 您 不 能 使 用 打 印 机 ,当 您 开 放 打 印 图 6 数 据 录入 操 作 界 面 服 务 后 ,就 可 以 正 常 使 用 打 印机 了 ,系 统 会 自动 将 您 打 印 的 相 文 件 的 关 闭 函 数 fclose0的形 式 如 下 : 关 信 息 保 存 到 temp.pm 数 据 文 件 中 。 fclose(文 件 指 针 ); 前 面 我 们 在 打 开 文 件 时 定 义 了 文 件 指 针 变 量 ,现 在 通 过 它 把 文 件 关 闭 ,即 印不 在 指 向该 文 件 ,对 于 初 学 编 程 人 员来 说 ,应 该 养 成 在 程 序 终 止 之 前 关 闭所 有 文 件 的 习 惯 ,如 果 不 关 闭文 件 将 会 丢 失 数 据 。 文 件 打 开 后 就 可 以对 它 进 行 读 写 了 ,在 c 中 对 文 件 进 行 读 写 操 作 的 函 数 有 好 几 种 ,常 用 的读 写 函 数 有 以下 几 种 函数 ; fputc(ch, );把 字 符 (ch的值 )输 入 到 所 指 向 的 文 件 中去 ch=fgetc(fp);fget函 数 从 文 件 中 带 回 一 个 字 符 ,赋 给 ch.文 件 必 须 是 读 或 写 方 式 打 开 其 中 ,ch是要 输 出 或读 入 的字 符 , 是 前文 中提 到文 件 指针 变 量 。 fread(buffer,size,count, );从 文 件 中 读 入 数 据 块 fwrite(buffer,size,count, );将 数 据 块 写 入 文 件 中 其 中 ,buffer是 一 个 指 针 ,在 fread函 数 中 是 读 入 数 据 的存 放 地 址 ,在 fwrite函 数 中 是 要 输 出数 据 的 地 址 (以上 指 的 是 起 始 地 址 );Size是 要 读 写 的字 节 数 ;coun t是 要 进 行 读 写 多 少 个 Size 字 节 的 数 据 项 ;fp是 文 件 型 指 针 。 fprintf(文 件 指 针 ,格 式 字 符 串 ,输 出表 列 ); I | 捌 糯猎 7 | 舞 囊£舞爨 辨帮 辩 。 搿 ;群 |謦 箩 ■ —j |髯 一u ÷ 静嚣辔秘鬻舞勰藩 ∥ 鳓瘙舞鼯 |茹“ ¨ 莹 聊嘲 曩为 量_ 蕾 誊誊董 |0誊 孝 |。 i l脚幽 。 |= f f一一 ¨ 鼍 | … 图 5 打 印服 务 操 作 界 面 打 印结 束 后 ,点 击数 据 录 入 按 钮 ,进 入 到 数 据 自动 解 析 、录 fscanf(文 件 指 针 ,格 式 字 符 串 ,输 出表 列 ): 入 界 面 ,如 图 6所 示 ,因 为要 从 temp.pm 文 件 读 取 打 印 信 息 ,所 例 如 : 以使 用 了文 件 打 开 关 闭和 读 写 技 术 ,文 件 打 开 实现 函数 如 下 : fscanf(fp,”%d|.,”%f‘,a,b); FILE fp; 函 数 的作 用 是 将 整 形 变 量 a和 b的值 按 %d的 格 式 输 出 到 fp=fopen(文 件 名 ,使 用 文 件 方 式); 指 向 的 文 件 上 ,如 果 a=l,b=2,则 在 文 件 上 的 是 以下 字 符 串 : 例 如 : 1。2 FILE fp _ result=fopen(file,"a-b”); 其 他 的读 写 函 数 还 有 putw 和 getw 函 数 ,电ets和 fputs函 file是 要 打 开 的文 件 名 ,使 用 打 开 方 式 为 “读 写 ”,说 明 打 数 ,它们 的 使 用 说 明 这 里 就 不 做 介 绍 了 ,在 C语 言 的许 多 书 里 开 的 文 件 既 可 以用 来 输 入 数 据 ,也 可 以用 来 输 出 数 据 ,打 开 都 会 做 相 关 的 介 绍 ,如 果 需 要 可 以 去 查 找 。将 文 件 的文 件 名 , 方 式 有 多 种 ,根 据 自 己 的 实 际 需 要 来 选 择 ,例 如 :”r”(只 读 )为 打 印 页数 和 份 数 分 别 自动 解 析 、存 储 到 相 应 编 辑 框 中 ,补 充 相 输 入 打 开 一 个 文 本 文 件 ,”w”(只 写) 为 输 出打 开 一 个 文 本 文 关 所 需 的 信 息 ,将 数 据 保 存 到 对 应 的 Excel表 中 ,如 图 7所 示 , 件 ,”a”(追 加 )向 文 本 文 件 尾 添 加 数 据 ,”w+”(读 写 )为读 写 建 立 管 理 者 可 以通 过 查 询 Excel表 ,了解 打 印 机 的使 用 情 况 ,也 可 一 个 新 的 文 本 文 件 ,”a+”(读 写 )为 读 写 打 开 一 个 文 本 文 件 ,”r}” 以打 印 出 来 保 存 入 档 。 (读 写 )为 读 写 打 开 一 个 文 本 文 件 。 (下转 封 三 )
表 2 4种不 同核 函数 的 支持 向量 机 对 图谱识 别 率的 比较 C=5 C=10 C-20 C-50 C=100 C=200 K(x,y):x Y 90% 9l% 91% 93% 94% 94% K(x,y)-(xT y+1)d 80% 89% 92% 93% 93% 95% K(x,y)=tanh((ax y+b) 89% 91% 92% 95% 94% 95% 快 ,识 别 率 较 高 。 参 考 文 献 : n] 曹永 生,孔繁胜 ,王 宇生 .基于 图像 处理 的种质 资源 指 纹 图谱 分 析 [C/OL].http://icgr.caas.net.cn/training/forum,2009. K(x,y)=exp(一fix—yll ) 90% 90% 92% 92% 93% 96% 黄湘 华,冯 秀兰 ,周 建仁 ,等.数 字 图像处理 在植 物新 品种鉴 定中 的应 用 『J].林 业 资源 管理 ,2004(8):60—64. 于 一 些 线 性 不 可 分 的 数 据 效 果 不 是 很 好 。 而 支 持 向 量 模 型 陆波 ,尉 询楷 ,毕笃彦 .支持 向量机 在分类 中得应用 [J].中 国图象 虽 然 训 练 识 别 的 速 度 要 慢 , 但 遇 到 样 本 是 线 性 不 可 分 的 情 图形 学报 ,2005,l0(8):1029—1035. 况 ,支 持 向量 机 通 过 事 先 确 定 的 非 线 性 映 射 将 输 入 量 映 射 到 杨 志 民,刘 广利 .不 确 定性支 持 向量机 原 理及 应用 [M】.北 京:科 一 个 高 维 特 征 空 间 ,在 此 高 维 空 间 中 构 建 最 优 超 平 面 。从 而 技 出版社 ,2007:57—61. 解 决 线 性 不 可 分 的 问 题 ,识 别 率 总 体 来 说 要 比欧 几 里 得 距 离 李进 波,方宣 钧,杨 国才 ,等 .两 系杂 交 稻亲 本 SSR指 纹 图谱 的 分 类 要 高 。 4 结 束 语 建 立及 其 在种 子纯 度 鉴定 中的 应用 【J】.杂 交水 稻,2005,2O(2): 50 53. 周 延清 .DNA分子 标记 技术 在植 物研 究 中的应 用 【M】.北京 :化 为 了采 用 计 算 机 辅 助 快 速 鉴 别 农 作 物 品 种 ,研 究 人 员 学 工业 出版 社 ,2005:131.133. 从 图 谱 预 处 理 、特 征 提 取 、特 征 匹 配 方 法 等 不 同 的 角 度 提 出 陆 宗骐 ,金登 男.Visual c++.NET图像 处理 编程 [M】.北 京:清 华 了 各 自 的 方 法 。 但 是 , 依 据 品 种 图 谱 快 速 鉴 别 品 种 离 实 用 大 学 出 版 社 ,2006:97—101. 阶 段 仍 然 有 一定 的 距 离 。 本 文 从 分 类 器 的 角 度 ,提 出 一种 Hsu C W .Lin C J.A comparison of methods for multicalss sup— 基 于 机 器 学 习 的 品 种 图 谱 鉴 别 方 法 ,尝 试 利 用 支 持 向 量 机 port vector machines[J].IEEE Trans on Neural Networks,2002, 较 强 的 泛 化 能 力 以 及 在 线 性 不 可 分 问 题 I二的 优 势 ,解 决 特 Ⅲ 13(2):415-425. 提 取 后 不 同 类 别 样 本 之 间 细 微 差 别 所 带 来 的 识 别 困 难 。 应 白炉,李 景文,张 有为 .基于 融合 的多类支 持 向量机 [J].计 算机 实 验 表 明 , 本 方 法 对 图 谱 的 预 处 理 要 求 不 高 ,分 辨 速 度 较 工 程 ,2009,35(1O):187—188. (上 接 第 377页) 的 打 印机 起 到 了 辅 助 作 用 ,使 打 印 机 的 功 能 更 完 善 。 系 统 核 心 技 术 的 钩 子 过 程 ,由于 其 特 殊 的功 能 ,得 到 了 广 泛 的 使 用 , 在 我 们 身 边 有 很 多 基 于 HOOK 进 程 控 制 的 产 品 ,典 型 的应 用 如 屏 幕 取 词 、软 件 汉 化 等 ,甚 至 病 毒 和 木 马 程 序 也 使 用 了钩 子 函 数 [7-8]所 以在 使 用 时 ,一 定 要 端 正 心 态 ,不 要 利 用 钩 子 技 术 进 行 窃 取 别 人 的账 号 和 密 码 信 息 等 非 法 活 动 。 参 考 文 献 : 【1] 徐 希炜 .网络 打 印系统 的组 建方 式及 常见 打 印故障 处理 [J].中 图 7 打 印 信 息存 入 EXCEL表 国科技 信 息,2009,17:93—96. [2】 孙鑫 ,余 安 萍.vc++深入 详解 [M].北 京.电子 工业 出版社 ,2006: 最 后 ,我 们 需 要 关 闭 打 印 服 务 ,这 样 再 次 需 要 打 印文 件 723—751. 时 ,需 要 重 新 登 录 验 证 ,开 放 打 印 服 务 。 [3] 陈 龙 .21天 学通 Vc十+[M].北京 :电子 工业 出版 社 ,2009: 5 结 束 语 306.320. [4J 骆 力 明,符宇 同,鲁悦 .利用 Hook技术 实现 进程 控制 [J].微计 算 由于 普 通 打 印 机 本 身 不 具 备 认 证 的 功 能 ,所 以在 有 些 公 机信 息,2007,24:240 242. 司 员 工 利 用 公 司 的 打 印机 打 印 自己私 有 文 件 的 现象 常 常 发 生 , [5】 倪步 喜.Windows的 钩子技 术及 实现 [J].计 算机 与现代 化,2007 损 害 了 公 司 的利 益 ,而 且 现 有 的 打 印 机 系 统 也 没 有 对 打 印信 (1):28—30. 息 的 记 录 功 能 ,用 户 无 法 知 道 打 印机 都 打 印 过 哪 些 文 件 ,什 么 [6] 谭浩 强 .C程 序设 计 [M].3版 .北京 :清华 大学 出版 社,2005: 时 问 打 印 的 ,打 印 的用 户 是 谁 ?特 别 在 一 些 需 要 保 密 的企 事 330—347. 业 单 位 ,不 希 望 自 己公 司 的 资 料 信 息被 带 出去 ,所 以 对 打 印机 [7】 余姜 德,于 志平 .Windows钩子 技术在 病 毒程序 中的应用 [J].现 进 行 监 控 管 理 显 得 十 分 重 要 。 代计 算机 ,2005(2):83—86. 基 于 HOOK 技 术 本 的 地 打 印 监 控 系 统 ,利 用 诸 多 开 发 技 [8] 杨瑾 .基 于远程 线程 插 入 DLL技术 的 嵌套式 木马 设计 【J].计算 术 实 现 了 对 打 印控 制 管 理 ,很 好 的解 决 了 以 上 的 问 题 ,对 用 户 机 与信 息技 术,2007(4):78—80.
分享到:
收藏