`
itoracja
  • 浏览: 136809 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
阅读更多
    <p><font>以下方法转自网络</font></p><div class="cnblogs_code"><img id="code_closed_image_093901" height="16" src="http://www.cnblogs.com/images/outliningindicators/contractedblock.gif" width="11" align="top"><img id="code_open_image_093901" style="display: none;" height="16" src="http://www.cnblogs.com/images/outliningindicators/expandedblockstart.gif" width="11" align="top"><span class="cnblogs_code_collapse" id="code_closed_text_093901">code</span><span id="code_open_text_093901" style="display: none;"><br>&lt;!--&lt;br /&gt;&lt;br /&gt;code highlighting produced by actipro codehighlighter (freeware)&lt;br /&gt;http://www.codehighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;<span style="color: #0000ff;">using</span><span style="color: #000000;">system;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">system.collections.generic;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">system.windows.forms;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">system.runtime.interopservices;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">system.diagnostics;<br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">system.reflection;<br><br></span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">winformstudy<br>{<br></span><span style="color: #0000ff;">static</span><span style="color: #000000;"></span><span style="color: #0000ff;">class</span><span style="color: #000000;">program<br>{<br><br></span><span style="color: #808080;">///</span><span style="color: #008000;"></span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;"><br></span><span style="color: #808080;">///</span><span style="color: #008000;">应用程序的主入口点。<br></span><span style="color: #808080;">///</span><span style="color: #008000;"></span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #808080;"><br></span><span style="color: #000000;">[stathread]<br></span><span style="color: #0000ff;">static</span><span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">main()<br>{<br>processinstance</span><span style="color: #000000;">=</span><span style="color: #000000;">runninginstance();<br></span><span style="color: #0000ff;">if</span><span style="color: #000000;">(instance</span><span style="color: #000000;">==</span><span style="color: #000000;"></span><span style="color: #0000ff;">null</span><span style="color: #000000;">)<br>{<br></span><span style="color: #008000;">//</span><span style="color: #008000;">没有实例在运行</span><span style="color: #008000;"><br></span><span style="color: #000000;">application.run(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">form1());<br>}<br></span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>{<br></span><span style="color: #008000;">//</span><span style="color: #008000;">已经有一个实例在运行</span><span style="color: #008000;"><br></span><span style="color: #000000;">handlerunninginstance(instance);<br>}<br>}<br></span><span style="color: #0000ff;">#region</span><span style="color: #000000;">确保程序只运行一个实例</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">private</span><span style="color: #000000;"></span><span style="color: #0000ff;">static</span><span style="color: #000000;">processrunninginstance()<br>{<br>processcurrent</span><span style="color: #000000;">=</span><span style="color: #000000;">process.getcurrentprocess();<br>process[]processes</span><span style="color: #000000;">=</span><span style="color: #000000;">process.getprocessesbyname(current.processname);<br></span><span style="color: #008000;">//</span><span style="color: #008000;">遍历与当前进程名称相同的进程列表</span><span style="color: #008000;"><br></span><span style="color: #000000;"></span><span style="color: #0000ff;">foreach</span><span style="color: #000000;">(processprocess</span><span style="color: #0000ff;">in</span><span style="color: #000000;">processes)<br>{<br></span><span style="color: #008000;">//</span><span style="color: #008000;">如果实例已经存在则忽略当前进程</span><span style="color: #008000;"><br></span><span style="color: #000000;"></span><span style="color: #0000ff;">if</span><span style="color: #000000;">(process.id</span><span style="color: #000000;">!=</span><span style="color: #000000;">current.id)<br>{<br></span><span style="color: #008000;">//</span><span style="color: #008000;">保证要打开的进程同已经存在的进程来自同一文件路径</span><span style="color: #008000;"><br></span><span style="color: #000000;"></span><span style="color: #0000ff;">if</span><span style="color: #000000;">(assembly.getexecutingassembly().location.replace(</span><span style="color: #800000;">"</span><span style="color: #800000;">/</span><span style="color: #800000;">"</span><span style="color: #000000;">,</span><span style="color: #800000;">"</span><span style="color: #800000;">\\</span><span style="color: #800000;">"</span><span style="color: #000000;">)</span><span style="color: #000000;">==</span><span style="color: #000000;">current.mainmodule.filename)<br>{<br></span><span style="color: #008000;">//</span><span style="color: #008000;">返回已经存在的进程</span><span style="color: #008000;"><br></span><span style="color: #000000;"></span><span style="color: #0000ff;">return</span><span style="color: #000000;">process;<br><br>}<br>}<br>}<br></span><span style="color: #0000ff;">return</span><span style="color: #000000;"></span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #0000ff;">private</span><span style="color: #000000;"></span><span style="color: #0000ff;">static</span><span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">handlerunninginstance(processinstance)<br>{<br>messagebox.show(</span><span style="color: #800000;">"</span><span style="color: #800000;">已经在运行!</span><span style="color: #800000;">"</span><span style="color: #000000;">,</span><span style="color: #800000;">"</span><span style="color: #800000;">提示信息</span><span style="color: #800000;">"</span><span style="color: #000000;">,messageboxbuttons.ok,messageboxicon.information);<br>showwindowasync(instance.mainwindowhandle,</span><span style="color: #800080;">1</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">调用api函数,正常显示窗口</span><span style="color: #008000;"><br></span><span style="color: #000000;">setforegroundwindow(instance.mainwindowhandle);</span><span style="color: #008000;">//</span><span style="color: #008000;">将窗口放置最前端</span><span style="color: #008000;"><br></span><span style="color: #000000;">}<br>[dllimport(</span><span style="color: #800000;">"</span><span style="color: #800000;">user32.dll</span><span style="color: #800000;">"</span><span style="color: #000000;">)]<br></span><span style="color: #0000ff;">private</span><span style="color: #000000;"></span><span style="color: #0000ff;">static</span><span style="color: #000000;"></span><span style="color: #0000ff;">extern</span><span style="color: #000000;"></span><span style="color: #0000ff;">bool</span><span style="color: #000000;">showwindowasync(system.intptrhwnd,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">cmdshow);<br>[dllimport(</span><span style="color: #800000;">"</span><span style="color: #800000;">user32.dll</span><span style="color: #800000;">"</span><span style="color: #000000;">)]<br></span><span style="color: #0000ff;">private</span><span style="color: #000000;"></span><span style="color: #0000ff;">static</span><span style="color: #000000;"></span><span style="color: #0000ff;">extern</span><span style="color: #000000;"></span><span style="color: #0000ff;">bool</span><span style="color: #000000;">setforegroundwindow(system.intptrhwnd);<br></span><span style="color: #0000ff;">#endregion</span><span style="color: #000000;"><br>}<br>}</span></span>
分享到:
评论

相关推荐

    winform只运行一个实例

    winform窗体只运行一个,确保程序只运行一个实例,当该实例已在运行时候,唤醒此实例不会另开一个新的实例

    C# WinFrom 单实例运行

    C# WinForm 单实例运行 ,当第二次运行时,激活第一个运行实例。

    C#Winform日志输出例程源码

    本例程实现了日志的输出显示和日志文件的记录,包括程序的启动,关闭等系统事件,程序中执行了什么操作,都会窗口显示和后台记录到文件,每天会生成一个带日期的日志文件,程序反复打开不会覆盖记录。适合初学者快速...

    C#Winform应用程序判定是否已运行实例.rar

    C#语言Winform应用程序判定是否已运行实例,采用互斥锁

    C# WinForm 判断程序是否已经在运行,且只允许运行一个实例,附

    为了更便于使用,笔者整理了一段自己用的代码,可以判断程序是否在运行,只运行一个实例,而且能实现当程序在运行时,再去双击程序图标,直接呼出已经运行的程序。 下面看代码,只需在程序的入口文件中加如下代码...

    C# Winform WPF单例程序源码

    在C#Winform中单例程序示例 稍加改变也可用于WPF 可以用于同一程序不同进程的通信

    C# 启动C++生成的EXE文件,是否运行判断,只运行一个实例

    C# 启动C++生成的EXE文件,是否运行判断,只运行一个实例,exe路径和exe名称参数配置在TXT文件中,便于插件使用。

    C#实现只运行单个实例应用程序的方法(使用VB.Net的IsSingleInstance)

    &lt;Windows&gt;&gt; – Single-Instance Applications 这一章中, 学到了调用 VB.Net 中的 IsSingleInstance, 为 C# WinForm 添加只运行应用程序的单个实例 ( Single Instance Application). 是个好方法! 该方法显然从易用...

    C# 监控Powerpoint事件实例

    一个监控powerpoint的实例程序,可直接运行。

    Csharp__WinForm_打开一个进程、文件等.zip

    在WinForm/C#中打开一个文件,主要是用到进程的知识。 下面是一些实例,可以模仿着去实现。 1. 打开文件 2.打开浏览器 3. 打开指定URL 4. 打开文件夹 5.打印文件

    WinForm防止程序重复运行的方法分析

    1、点击“关闭”按钮时,程序最小化到托盘,并没有退出,这时再次运行程序,不会重复运行,而是显示已运行的程序; 2、支持不同目录; 3、支持修改名称。 代码(不支持修改名称,不支持不同目录): using System; ...

    C#实例+计算器+面向对象实现

    C#实例+计算器+面向对象实现 采用面向对象方式用C#实现,希望对初学者有所帮助,可以直接运行,是CS架构,WINFORM程序

    winform委托应实例

    两个实例都是用委托写的实例1是委托方法,实例二是委托button事件,程序代简单易懂,直接运行即可,不过两实例是写在一起的,想要运行哪个实例首先得先把哪个设置成“启动项目”

    C#调用C++类实例

    C#调用C++类实例,附C++类源码,以及C# winform程序源码,可以直接运行

    C#添加文字水印,图片水印,程序实例源代码

    使用vs2015编辑,可以直接运行查看源代码 文字水印可改变水印大小,水印位置,水印透明。 图片水印可改变水印大小,水印位置,水印透明。 内有直接封装好的类可以直接运行,懒人福利

    WinForm第三方开源控件源码及实例

    该压缩包中包含13个winform第三方开源控件源码及实例,其中有dockpanel(实现仿VS IDE界面),Group(分组框头显示复选框、单选框、折叠按钮),CollapsibleSplitter(折叠面板),ColorPicker(与WinForm原生的不同,效果...

    C# Winform数据库应用设计(附开发案例

    初步的认识,了解C#的开发环境,编写第一个C#控制台应用程序。C#语言的基本语法和我 们之前的学习的C语言、Java语言一样同属于C语言语法系列,有很多相似的地方,同时也 有一些不同的地方,因此我们在学习的时候需要注意...

Global site tag (gtag.js) - Google Analytics