|
http://www.maiweb.net/cgi-bin/show.cgi?menu=showtopic&page=1&forum=83&topic=9
---- 共 享 打 印 的 计 账 管 理 在 整 个 管 理 系 统 中 是 一 个 重 要 环 节, 它 对 提 高 效 率、 减 少 浪 费 是 一 个 有 力 手 段。 但Windows NT 本 身 并 未 提 供 共 享 打 印 的 计 账 管 理 功 能, 这 就 需 要 在 系 统 平 台 上 开 发 计 账 应 用 程 序。 可 以 在 应 用 程 序 中 通 过 对 系 统 日 志 的 读 取, 来 获 得 打 印 事 件 的 原 始 数 据 并 进 行 处 理, 从 而 实 现Windows NT 网 络 共 享 打 印 的 计 账 管 理 功 能。 一、Windows NT 的 共 享 打 印 管 理 机 制 ---- 在Windows NT 网 络 系 统 中, 共 享 打 印 的 访 问 控 制 是 基 于 域 用 户 进 行 管 理 的。 为 了 实 现 共 享 打 印, 系 统 管 理 员 应 创 建 用 于 共 享 的 打 印 设 备( 包 括 绘 图 仪) 并 对 其 命 名( 这 个 名 字 称 为 共 享 名), 然 后 对 用 户 或 用 户 组 授 予 访 问 权。 对 于 打 印 客 户 来 说, 要 求 具 有 合 法 的 权 限, 即 需 要 用 户 名 和 口 令、 打 印 服 务 器 名 和 共 享 名。 使 用 客 户 机 上 的 打 印 机 设 置 功 能 进 行 相 应 的 设 置 即 可 实 现 共 享 打 印。 图1 网 络 共 享 打 印 实 例 ---- 如 图1 所 示, 打 印 服 务 器 名 为PrnServ, 打 印 机 共 享 名 为LP, 授 权 用 户 名 为User1, 在 客 户 机CLT 上 设 置 打 印 机 为\\ PrnServ\LP。 由 于User1 是 被 授 权 的 合 法 用 户, 当 在 客 户 机CLT 上 以User1 的 身 份 向PrnServ 发 出 打 印 请 求 时, 可 在\\ PrnServ\LP 上 实 现 打 印。 二、 打 印 计 账 管 理 软 件 的 开 发 ---- 1 . 基 本 数 据 的 获 取 ---- 基 本 数 据 的 获 取 是 实 现 打 印 计 账 管 理 的 关 键。Windows NT 的 系 统 日 志 较 详 细 地 记 录 了 系 统 服 务 的 各 类 事 件, 其 中 对 打 印 事 件 记 录 了 客 户 机 器 名、 用 户 名、 打 印 时 间、 文 档 字 节 数、 打 印 页 数、 文 档 名 等 信 息。 应 用 程 序 不 能 直 接 读 取 而 必 须 通 过 调 用API 函 数 才 能 获 得 这 些 信 息。 下 面 的 程 序 段 访 问 打 印 服 务 器 名 为PrnServ 的 系 统 日 志, 并 过 滤 出 有 关 打 印 的 信 息。 HANDLE hdle; EVENTLOGRECORD *ptr; BYTE buff[4096]; DWORD read_len, next_len; ptr=(EVENTLOGRECORD *)&buff; hdle=OpenEventLog("PrnServ", "Print"); // 打开PrnServ上有关打印(Print)的系统日志 if (hdle==NULL) { // 打开日志失败} else { // 打开日志成功} while(ReadEventLog(hdle, // 读取系统日志 EVENTLOG_FORWARDS_READ | EVENTLOG_SEQUENTIAL_READ, 1, ptr, sizeof(buff), &read_len, &next_len)) { // 信息处理程序段} CloseEventLog(hdle); // 关闭系统日志 ---- 读 取 的 信 息 以 结 构EVENTLOGRECORD 中 所 定 义 的 格 式 存 储 在buff 中, 通 过 指 针ptr 可 以 获 得 这 些 信 息。 在 信 息 处 理 程 序 段, 将 获 得 的 信 息 以 记 录 形 式 存 入 数 据 库, 以 便 进 行 统 计 查 询。 ---- 这 里 需 要 指 出 的 是, 应 用 程 序 不 仅 可 以 读 取 本 机 上 的 系 统 日 志, 而 且 还 可 以 读 取 其 他 服 务 器 的 系 统 日 志, 条 件 是 必 须 具 有Administrator 的 权 限, 这 就 意 味 着 一 个 应 用 程 序 可 以 对 多 台 打 印 服 务 器 进 行 计 账 管 理。 ---- 2 . 软 件 的 查 询 统 计 功 能 ---- 对 共 享 打 印 信 息 的 查 询 统 计, 实 际 上 是 用 前 端 开 发 工 具 开 发 的 应 用 程 序 对 后 台 数 据 库 的 操 作。 基 本 功 能 如 图2 所 示。 图2 软 件 功 能 ---- 其 中, 查 询 管 理 可 以 分 别 按 机 器 名、 打 印 机 名、 用 户 名、 文 档 名 等 查 询, 并 且 可 选 年、 月、 日 及 任 意 时 间 段 进 行 统 计, 得 到 打 印 页 数、 字 节 量 等 结 果 并 显 示 或 打 印; 数 据 管 理 主 要 包 括 对 历 史 数 据 的 整 理、 归 档 等; 系 统 设 置 包 括 对 打 印 服 务 器 名、 打 印 机 名 及ODBC 或BDE 系 统 数 据 源 的 配 置 信 息 的 管 理。 ---- 在 数 据 库 应 用 程 序 的 开 发 中, 对 于 前 端 工 具 和 后 台 数 据 库 有 多 种 选 择。 前 端 工 具 如VB、Delphi、PB、C++ Builder 等 都 有 很 好 的 开 发 环 境, 考 虑 设 计 用 户 界 面 和 调 用API 函 数 的 方 便 性, 本 软 件 的 开 发 使 用 了C++ Builder。 对 于 后 台 数 据 库, 本 软 件 适 用 于 任 何ODBC 或BDE 支 持 的 数 据 库, 只 要 在 系 统 设 置 功 能 中 进 行 设 置 即 可。
|