写了一个Console程序(可以改写为WindowsApplication),说一下我的实现:using System;
using System.Diagnostics;class OnlyOneInstance{
public static void Main(){
//public static Process[] GetProcesses();
int iInstance = -1;
Process[] processes = Process.GetProcesses();
foreach(Process process in processes){
string ProName = process.ProcessName;
if(ProName == "OnlyOneInstance")
iInstance++;
}
if(iInstance >= 1)
{
//结束它,使用原来的那个Process
}
else
Console.ReadLine();//测试用
}
}
using System.Diagnostics;class OnlyOneInstance{
public static void Main(){
//public static Process[] GetProcesses();
int iInstance = -1;
Process[] processes = Process.GetProcesses();
foreach(Process process in processes){
string ProName = process.ProcessName;
if(ProName == "OnlyOneInstance")
iInstance++;
}
if(iInstance >= 1)
{
//结束它,使用原来的那个Process
}
else
Console.ReadLine();//测试用
}
}
解决方案 »
- 急!急!通过模板导出Excel;设置activesheet问题在线等
- gridview绑定Dataset后无法显示网页了?
- using (SqlConnection conn = new SqlConnection(connString)) ?
- 关于.net的一个继承的问题
- 关于无刷新,前台数据显示问题请教
- 简单问题:vs2005如何可视化添加dataconnection/dataadapter/dataset?
- 一个简单的问题,关于职位.急急..
- 如何在让一个应用程序实现命令输入的启动方式
- 求解 关于在屏幕上画图 不一定是在当前窗口中
- 获取系统时间!
- 如何使用GID+进行渐变色的填充
- 讨论:C#和XML写一个CGI论坛的可实现性与技术[200分],重在参与
using System;
using System.Runtime.InteropServices;
class OnlyOneInstance{
[DllImport("user32.dll", EntryPoint="FindWindow")]
public static extern int FindWindow (
string lpClassName,
string lpWindowName
);
public static void Main(){
if(FindWindow(null,@"C:\WINDOWS\System32\cmd.exe - OnlyOneInstance") != 0)
Console.WriteLine("Exists");
Console.ReadLine();
}
}FindWindow(null,@"C:\WINDOWS\System32\cmd.exe - OnlyOneInstance") ;
---null 是类名,不清楚可以设置为null
---@"C:\WINDOWS\System32\cmd.exe - OnlyOneInstance" 是窗口的名字,若类名为空,这里必须设置精确
---返回值 0:未找到 otherwise找到
[DllImport("user32.dll", EntryPoint="FindWindow")]
public static extern int FindWindow(string lpClassName,string lpWindowName); //当某个窗口在最小化是将其进行显示。
[DllImport("user32.dll", EntryPoint="ShowWindow")]
public static extern int ShowWindow(int hwnd,int nCmdShow);
// //将窗口激活并且显示到顶部。
// [DllImport("user32.dll",EntryPoint="BringWindowToTop")]
// public static extern int BringWindowToTop(int hwnd);
//将被隐藏的窗口显示到前端
[DllImport("user32.dll",EntryPoint="SetForegroundWindow")]
public static extern int SetForegroundWindow(int hwnd);
public static void Main()
{
int hWndHandler;//要查找的窗口句柄
hWndHandler=FindWindow(null,"test");//运行的主窗口的名字是"test",当hWndHandler为0则没找到窗口,不为0意味着找到了窗口。
if(hWndHandler!= 0)
{
ShowWindow(hWndHandler,9);//9--在窗口的显示状态中为正常显示窗口并激活之。
SetForegroundWindow(hWndHandler);//将窗口显示到顶部
}
else
{
Application.Run(new frmTest());//正常状态下启动主程序。
}
}