如何在.NET Framework 精简版中防止应用程序运行两次?

dyb1234567 2004-09-11 11:29:15
Vb6 中

If App.PrevInstance = True Then End

' Visual Basic .NET
Function PrevInstance() As Boolean
If Ubound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then
Return True
Else
Return False
End If
End Function


但是在 .NET Framework 精简版中 呢?

那位高手指点下迷津?谢谢!
...全文
255 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanty 2004-09-23
  • 打赏
  • 举报
回复
using System.Threading;

static void Main()
{
bool bRun=true;
Mutex m=new Mutex(true,Application.ProductName,out bRun);
if(bRun)
{
Application.Run(new Form1());
m.ReleaseMutex();
}
else
{
MessageBox.Show("程序已经运行");
}
}
这个最佳
myclife 2004-09-18
  • 打赏
  • 举报
回复
using System.Threading;

static void Main()
{
bool bRun=true;
Mutex m=new Mutex(true,Application.ProductName,out bRun);
if(bRun)
{
Application.Run(new Form1());
m.ReleaseMutex();
}
else
{
MessageBox.Show("程序已经运行");
}
}
用互斥信号量的方法比较好,不管什么语言程序集都是一样的,在vb.net中跟这个基本一致。
声明一个 System.Threading.Mutex类的实例处理就可以了.
indistinct_sword 2004-09-18
  • 打赏
  • 举报
回复
up
zushenf 2004-09-17
  • 打赏
  • 举报
回复
[DllImport("CoreDll.dll")]
zushenf 2004-09-17
  • 打赏
  • 举报
回复
[DllImport("CoreDll")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);


//以下放在main函数里面的最上面
Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
IntPtr hWnd = FindWindow(null,
asm.GetModules()[0].FullyQualifiedName);

if (hWnd != IntPtr.Zero)
Application.Exit;
zushenf 2004-09-17
  • 打赏
  • 举报
回复
只能用用findwindow的方法
yuhonglai 2004-09-17
  • 打赏
  • 举报
回复
关注
如果没有可行的方法,用配置文件写一个标识变量,程序开始运行时修改一次,
程序退出时修改会原来的值,是一个方法
但是要包装你的程序不可能异常中止
比如不能通过内存查看器中止你的程序
ghui 2004-09-14
  • 打赏
  • 举报
回复
我以前也曾将问过,但回答的都紧紧适用于Windows程序,而不是精简版的.net.
适用一种老方法,参看
http://community.csdn.net/Expert/topic/3134/3134918.xml?temp=.341427

它能够保证同一个路径下的同一个程序仅仅能够运行一次。

dyb1234567 2004-09-14
  • 打赏
  • 举报
回复
哎呀,都不行啊

1 查找窗口的API,我没有调试成功
2 BearRui(我有点笨,但我很特别,所以我特别笨!) 的方法无法在VB .net 中找到相对应的函数和方法。

哎!在VB 6 中一句代码就搞定的事情在.NET Framework 精简版中咋就这么难呢?
ms44 2004-09-14
  • 打赏
  • 举报
回复
1:通过XML配置
实现
2:看看。NET CF中有没有可用的PROCESS相关的类。
3:用传统的API中的查窗口名,不过用的时候要小心。
个人看法。。。
Firestone2003 2004-09-12
  • 打赏
  • 举报
回复
主要是精简版里支持不支持相关的方法
Dugu_Niu 2004-09-12
  • 打赏
  • 举报
回复
这个是c sharp代码
你查查msdn看看这个类和方法精简版中有没有,如果有就可以
mingchao123 2004-09-12
  • 打赏
  • 举报
回复
这个我过去用过,代码不在身边。大意是假如你的程序的主窗体名是“myApplication”,用 api 函数先查找一个窗体名比如“myApplication0” ,如果存在就表示已经有一个副本在运行,退出。如果没找到,则将自己的窗体名改为“myApplication0”,正常运行下去。只是在.net中这个api函数的使用还有点讲究。
BearRui 2004-09-12
  • 打赏
  • 举报
回复
using System.Threading;

static void Main()
{
bool bRun=true;
Mutex m=new Mutex(true,Application.ProductName,out bRun);
if(bRun)
{
Application.Run(new Form1());
m.ReleaseMutex();
}
else
{
MessageBox.Show("程序已经运行");
}
}
dyb1234567 2004-09-11
  • 打赏
  • 举报
回复
哎呀,谢谢你,可是不能用啊,我用VB.net 开发 Pocket 2003 的应用
Dugu_Niu 2004-09-11
  • 打赏
  • 举报
回复
namespace System.Diagnostics;
static void Main()
{
Process instance = RunningInstance();
if (instance == null)
{
Appliction.Run(new MainFrm());
}
else
MessageBox.Show("程序已经运行!");
}

《风越.Net代码生成器 [FireCode Creator]》是一款采用.Net FrameWork2.0框架、基于多种数据库的程序代码生成软件,可快速建立数据信息的:添加、编辑、查看、列表、搜索功能。默认提供asp、aspx两种代码框架及多个界面设计模板,均可任意修改管理。通过自定义生成程序的界面风格与输出代码,用户可将其扩展为ASPX/ASP/PHP/JSP等各种程序的代码生成器。内置的.net代码框架,能建立C#语言的.net解决方案,可在VS2005直接编辑,既能帮助.net初学者快速入门,更可最大限度提高.net程序员的代码编写效率。 01、支持生成的ASPX/ASP/PHP/JSP等页面在本机自动发布、调试(需安装IIS或对应WEB服务器) 02、支持Microsoft SQL Server、Microsoft Access、Oracle、MySql、Excel、FoxPro、FoxBase、Text等数据库连接 03、支持从数据表、视图(Access为查询)读取数据字段 04、支持通过数据表的组合主键传递参数 05、支持CSS统一设置页面风格 06、支持多种控件输入方式: 文本框 文本域 UBB文本框(支持UBB文本输入) 密码框 隐藏域 日期选择 单选框 复选框 下拉框 多选列表 单选列表 批量上载 上载文件 上载到库 07、支持多种信息显示方式: 显示文字 链接文件 文本框 文本域 显示图片 背景声音 视频播放 显示flash 08、支持检测提交字符的最小、最大输入长度、是否空值/唯一值、文本类型:★ 不检测 非特殊字符 仅单词字符 仅单词字符空格 仅26个字母 仅文字符 仅允许整数 仅允许小数 仅日期/时间 仅日期+时间 仅日期 仅时间 仅允许邮箱 仅允许网址 仅允许IP 仅身份证号 仅国内电话 仅国内手机 09、支持对用户输入内容进行服务器端与客户端JS双重验证,有效防止SQL注入 ★ 10、支持自动生成多组多级的级联下拉框功能,快速建立如:省、市、县/公司、部门、小组等形式下拉框 ★ 11、支持表单提交超过100KB的文本数据 ★ 12、支持多文件上载、修改、删除记录时同步删除文件 13、支持控件名加密,使输入控件的名称与字段名不同,防止他人从客户端HTML猜解 ★ 14、支持列表、搜索页面对数据记录进行实时排序、修改、批量删除等功能 15、支持表头/单独表格搜索两种布局方式 16、提供多种灵活翻页方案,用户可设置每页记录条数、上/下页、前/后N页、输入数字跳转到指定页面等,提高海量数据翻页速度 17、提供丰富的建站常用VB、JS函数库 ★ 18、更多扩展功能: 添加、修改页面在保存信息前进行预览功能 添加、修改页面提交后自动跳转并刷新列表页 字段描述批量格式化,可从字段名、描述生成,加强英文字符处理 列表、搜索页面隔行颜色、点击变色设置 根据数据库字段允许空值状态自动设置输入检测代码 页面皮肤模板设置,根据网页模板快速生成页面 ★ 设置指定字段在编辑信息时为只读状态 字段需要二次输入(如输入两次密码,以验证其正确性) ★ 在列表直接批量编辑字段值,便于管理员维护 列表、搜索文件自动读取链接数据表值的实际信息 发送邮件功能,设置字段为邮件对应信息,可发送附件 ★ (繁、简、英)单语言版本 ★ 多语言页面实时翻译功能(默认:繁、简、英,可增加其它语言) ★ 多语言编码支持(GB2312/UTF8) ★ 生成提交校验码图片 ★ 搜索、列表文件以详细列表页(留言板风格)显示 生成权限,限制用户对指定页面的添加、删除、编辑权 将查询结果导出为CSV、HTML、EXCEL文件 ★ 生成不同选择字段的SQL语句 生成数据库字典 ★ 模板代码生成器,可自定义模板、变量生成代码 ★ 19、提供建站常用辅助工具: 屏幕尺 剪切板,保存最近指定次数的历史记录 常用加解密、编解码(DES、MD5、SHA、BASE64) 批量提取文本,支持正则表达式,可将HTML等文件指定内容存入数据库 批量查找替换,支持正则表达式 批量文件、文件夹改名,支持正则表达式 正则表达式测试器(可设置、保存常用正则表达式) 获取键盘的按键值 网页隐藏资源下载,可下载无法直接得到URL的SWF、图片、音乐等资源 获取汉字的拼音、五笔编码、笔画数、笔顺名、部首等信息,并可进行汉字繁/简体,GB/BIG转换 代码编排器,CSS排版、JS、ASP、HTML注
DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。程序主要针对0xc000007b问题设计,可以完美修复该问题。本程序包含了最新版的DirectX redist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。 本程序为了应对一般电脑用户的使用,采用了傻瓜式一键设计,只要点击主界面上的“检测并修复”按钮,程序就会自动完成校验、检测、修复以及注册的全部功能,无需用户的介入,大大降低了使用难度。 本程序适用于多个操作系统,如Windows XP(需先安装.NET 2.0,详情请参阅“致Windows XP用户.txt”文件)、Windows Vista以及Windows 7,同时兼容32位操作系统和64位操作系统。本程序会根据系统的不同,自动调整任务模式,无需用户进行设置。 本程序采用了多线程编程技术,可充分利用系统的资源,减少时间的等待。同时,针对部分低性能电脑,也做了一定程度的优化。 本程序的V1.2版分为精简版、标准版以及增强版。其精简版仅包含部分DirectX组件,适合高级用户使用,精简版可以有针对性的减少程序的体积。但要注意,必须在程序“选项”勾选“允许使用精简版的数据包”后方可使用,否则会出现自我校验失败的问题;标准版以及增强版都包含完整的DirectX组件,增强版还额外包含了c++ Redistributable Package,因此增强版适合无法自行解决c++相关问题的用户使用。 程序有自动更新c++功能。由于绝大多数软件运行时需要c++的支持,并且c++的异常也会导致0xc000007b错误,因此程序在检测修复的同时,也会根据需要更新系统的c++组件。此功能仅限于增强版。 本程序有自动记录日志功能,可以记录每一次检测修复结果,方便在出现问题时,及时分析和查找原因,以便找到解决办法。 程序的“选项”对话框包含了2项高级功能。点击其的“注册系统所有dll文件”按钮可以自动注册系统文件夹下的所有dll文件。该项功能不仅能修复DirectX的问题,还可以修复系统很多其他由于dll未注册而产生的问题,颇为实用。点击第二个按钮可以为dll文件的右键菜单添加“注册”和“卸载”项,方便对单独的dll文件进行注册。请注意,并不是所有的dll文件都可以通过这种方式注册。 程序附带了用户反馈程序,可以在用户允许的前提下发送检测修复结果。用户也可以在出现问题时通过反馈程序和软件作者进行交流,共同查找问题。反馈是完全自愿和匿名(如果不填写E-mail地址)的。 本程序基于Microsoft .NET Framework 2.0开发,对于Windows 2000、Windows XP、Windows 2003的用户需要首先安装.NET Framework 2.0或更高版本方可运行本程序。有关下载和安装的详细信息请参阅“致Windows XP用户.txt”文件。对于Windows Vista、Windows 7用户,可以直接运行本程序。 本程序的官方博客地址为:http://blog.csdn.net/vbcom/article/details/6962388所有的更新以及技术支持都可以到该博客上找到。 DirectX修复工具V1.2.2更新日志 新增的功能: 新增在线修复功能(该功能为测试功能)。使用在线修复,可以使程序精简到极致的1MB,方便移动。同时仍支持离线修复,自由选择两不误。如果您无法连接到Internet,也可以手动下载离线数据包: http://blog.csdn.net/vbcom/article/details/7303410 修正的BUG: 修正了主程序的一些BUG。 修正了反馈程序的一些BUG。
如果您熟悉“Everything”搜索工具,那么您就会知道,当您无法以最快的速度在计算机上找到文件时,使用 Everything 就可以快捷找到您想要的文件。EverythingToolbar 作为 Everything 的扩展,它可以将此功能添加到 Windows 任务栏,即可替换常用的搜索功能。 Windows 10 增加搜索工具栏 EverythingToolbar 文版 Windows 10 增加搜索工具栏 EverythingToolbar 文版 EverythingToolbar 特征 使用 Everything 即时搜索结果 通过键盘快捷键快速导航 浅色和深色主题(或自定义主题) 可自定义打开命令 打开文件的规则 使用在 Everything 定义的过滤 无论您在计算机上进行何种工作或活动,都几乎不会使用搜索功能来定位某些文件,程序或功能的机会很小。如果需要,卸载应用程序也很容易。就像安装时一样,有一个卸载命令将使您在执行后摆脱所有 EverythingToolbar 组件。 EverythingToolbar 更像是原始的 Everything 应用程序的附件,而不是独立的程序。尽管如此,它仍设法通过引入新功能来改善应用程序,这些功能确实有助于提高愿意尝试该应用程序的任何用户的生产率。坦率地说,这是最终要紧的事,这是有效的。 要求 .NET Framework ≥ 4.7 Everything ≥1.4.1 的所有组件都必须正在运行(不支持精简版) 高 DPI 支持至少需要 Windows 10 Creators Update。 安装 以管理员身份运行 install.cmd 通过任务栏的上下文菜单启用 EverythingToolbar 注意:您可能必须打开上下文菜单两次,因为它并不总是立即显示。 解锁任务栏后调整大小和位置 卸载 以管理员身份运行 uninstall.cmd

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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