<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><!--<br /><br />code highlighting produced by actipro codehighlighter (freeware)<br />http://www.codehighlighter.com/<br /><br />--><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;"><summary></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;"></summary></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>