createsemaphore_createmutex 内存加锁_createmutex

电脑杂谈  发布时间:2017-02-17 02:01:47  来源:网络整理
createmutex

windows 是 个 多 用 户 多 任 务 的 操 作 系 统 ,支 持 多 个 程 序 同 时 运 行 ,如 果 你 的 程 序 不 想 让 用 户 同 时 运 行 一 个 以 上 , 那 应 该 怎 样 做 呢 ? 本 文 将 介 绍 避 免 用 户 同 时 运 行 多 个 程 序 的 例 子 。 需 要 用 到 的 函 数 CreateMutex , CreateMutex 函 数 是 windows 中 一 个 并 不 常 用 的 函 数 , 该 函 数 对 象 在 系 统 中 只 能 存 在 一 个 实 例 且 是 互 斥 体 ,所 以 利 用 这 种 特 性 就 很 简 单 的 实 现 了 我 们 的 要 求 。 【 函 数 原 声 明 】 :function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwn er: BOOL; lpName: PChar): THandle; function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL; lpName: PChar): THandle;<br/> 【 参 数 说 明 】 : lpMutexAttributes 是 一 个 SECURITY_ATTRIBUTES 结 构 类 型 的 指 针 , 可 以 设 置 为 NULL 。

bInitialOwner 是 否 初 始 化 互 斥 体 。 lpName 互 斥 体 对 象 的 名 称 。 函 数 返 回 一 个 互 斥 体 句 柄 。createmutex 当 程 序 运 行 时 创 建 对 象 , 如 果 对 象 已 经 存 在 就 表 明 程 序 已 经 被 运 行 了 。 。 【 实 现 过 程 如 下 】 : 新 建 一 个 工 程 , 窗 体 命 名 为 Form1. 添 加 一 个 Button 按 钮 命 名 为 Button1. 双 击 按 钮 添 加 代 码procedure TForm1.Button1Click(Sender: TObject); varhw : HWND;gt : Integer; beginApplication.Initialize;Application.Title := runmyfile;hw := CreateMutex(nil,False,runmyfile); { 创 建 互 斥 体 对 象 }gt := GetLastError;if gt <> Error_ALREADY_EXISTS then{ 如 果 没 有 发 现 互 斥 体 对 象 }beginApplication.CreateForm(TForm1,Form1); { 创 建 窗 体 }Application.Run;endelsebeginApplication.MessageBox( 程 序 已 经 运 行 , 提 示 ,MB_OK);Application.Terminate;ReleaseMutex(hw);{ 释 放 互 斥 体 }end;end;


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-32870-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...