C#判断某程序是否运行的方法

本文实例讲述了C#判断某程序是否运行的方法,分享给大家供大家参考。

具体实现方法如下:

[DllImport("user32.dll")]
private static extern bool
SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
[DllImport("user32.dll")]
private static extern bool IsIconic(IntPtr hWnd);
// 消息函数
[DllImport("user32.dll", EntryPoint = "PostMessageA")]
public static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string strclassName, string strWindowName);
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

public const int WM_SYSCOMMAND = 0x0112;
public const int SC_MAXIMIZE = 0xF030;

private string exeName = "SaoMiaoApp";
public void SetForm()
{
  Process[] processes = Process.GetProcessesByName(exeName);

  if (processes.Length > 0)
  {
 IntPtr hWnd = processes[0].MainWindowHandle;

 if (IsIconic(hWnd))
   ShowWindowAsync(hWnd, 9);// 9就是SW_RESTORE标志,表示还原窗体
 //SendMessage(hWnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
 SetForegroundWindow(hWnd);
  }
  else
  {
 Process.Start(exeName + ".exe");
  }
}

希望本文所述对大家的C#程序设计有所帮助。

(0)

相关推荐

  • C#确保只有一个实例在运行的方法

    本文实例讲述了C#确保只有一个实例在运行的方法.分享给大家供大家参考.具体实现方法如下: public static Process RunningInstance() { Process current = Process.GetCurrentProcess(); Process[] processes = Process.GetProcessesByName (current.ProcessName); //查找相同名称的进程 foreach (Process process in proc

  • C#编程中设置程序只可被运行一次的方法

    防止程序运行多个实例的方法有多种,如:通过使用互斥量和进程名等.而我想要实现的是:在程序运行多个实例时激活的是第一个实例,使其获得焦点,并在前端显示. 主要用到两个API 函数: ShowWindowAsync 该函数设置由不同线程产生的窗口的显示状态. SetForegroundWindow 该函数将创建指定窗口的线程设置到前台,并且激活该窗口.键盘输入转向该窗口,并为用户改各种可视的记号.系统给创建前台窗口的线程分配的权限稍高于其他线程. 代码如下: 引用以下命名空间: using Syst

  • C#如何防止程序多次运行的技巧

    一.引言 最近发现很多人在论坛中问到如何防止程序被多次运行的问题的,如: http://social.msdn.microsoft.com/Forums/zh-CN/6398fb10-ecc2-4c03-ab25-d03544f5fcc9, 所以这里就记录下来,希望给遇到同样问题的朋友有所参考的,同时也是对自己的一个积累.在介绍具体实现代码之前,我们必须明确解决这个问题的思路是什么的?下面只要分享我的一个思考的这个问题的方式: 1.当我们点击一个exe文件时,此时该exe程序将会运行,我们可以看

  • 解决C#程序只允许运行一个实例的几种方法详解

    本文和大家讲一下如何使用C#来创建系统中只能有该程序的一个实例运行.要实现程序的互斥,通常有下面几种方式,下面用 C# 语言来实现:方法一:使用线程互斥变量. 通过定义互斥变量来判断是否已运行实例.把program.cs文件里的Main()函数改为如下代码: 复制代码 代码如下: using System;using System.Windows.Forms;using System.Runtime.InteropServices;namespace NetTools{    static cl

  • C#简单实现防止多个程序运行的方法

    本文实例讲述了C#简单实现防止多个程序运行的方法.分享给大家供大家参考,具体如下: /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Main() { System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcessesByName(System.Diagnostics.Process.GetCurrentProcess

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

    我们开发WinFrom程序,很多时候都希望程序只有一个实例在运行,避免运行多个同样的程序,一是没有意义,二是容易出错. 为了更便于使用,笔者整理了一段自己用的代码,可以判断程序是否在运行,只运行一个实例,而且能实现当程序在运行时,再去双击程序图标,直接呼出已经运行的程序. 下面看代码,只需在程序的入口文件中加如下代码即可: static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] s

  • bat脚本实例实现只允许运行一个实例(安装程序、创建快捷方式脚本)

    复制代码 代码如下: ;我的第一个安装脚本!include "MUI2.nsh"!define DIR "D:\workspace\nsis\files" Name "安装程序"Icon "${DIR}\setup128.ico"OutFile "setup.exe"InstallDir "$PROGRAMFILES\kaserv"RequestExecutionLevel admin

  • C#运行时相互关系浅析

    本文主要讲述运行时类型.对象.线程栈和托管堆之间的相互关系,静态方法.实例方法和虚方法的区别,以及内存的分配和回收. 线程栈:在一个进程中可能包含多个线程,一个线程在创建的时候,会分配到一个大小1MB大小的栈,栈用于存储方法的实参.形参以及方法内部的局部变量,栈是从高位内存地址向地位地址构建的,由于栈有先进后出的特点,所以先定义的变量后被回收. 下面来看一个简单的例子,让你更了解线程栈 由于线程栈是从高位开始分配内存,先分配的我就画在上面了,在调用F1();方法时,分配内存的顺序是:name->

  • 让应用程序只运行一个实例的实现方法

    在我们的程序当中如果要实现类似<360软件管家>的功能,就要解决两个问题,首先是要判断该程序已有一个实例在运行,其次是要将已运行的应用程序实例激活,同时退出第二个应用程序实例. 对于第一个问题,我们可以通过设置命名互斥对象或命名信标对象,在程序启动的时候检测互斥对象或信标对象,如互斥对象或信标对象已存在,则可以判断此程序已有一个实例正在运行. 第二个问题是如何找到已经运行的应用程序实例,如果我们能够找到已运行实例主窗口的指针,即可调用SetForegroundWindow来激活该实例.我们可以

  • C#判断某程序是否运行的方法

    本文实例讲述了C#判断某程序是否运行的方法,分享给大家供大家参考. 具体实现方法如下: [DllImport("user32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll")] private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); [DllImp

  • android判断软件是否第一次运行的方法

    本文实例讲述了android判断软件是否第一次运行的方法.分享给大家供大家参考.具体如下: SharedPreferences sharedPreferences = this.getSharedPreferences("share", MODE_PRIVATE); boolean isFirstRun = sharedPreferences.getBoolean("isFirstRun", true); Editor editor = sharedPreferen

  • python判断自身是否正在运行的方法

    如下所示: # coding: utf-8 import os import psutil import time def write_pid(): pid = os.getpid() fp = open("pid.log",'w') fp.write(str(pid)) fp.close() def read_pid(): if os.path.exists("pid.log"): fp = open("pid.log",'r') pid =

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

    本文实例讲述了WinForm防止程序重复运行的方法.分享给大家供大家参考,具体如下: 需求: 1.点击"关闭"按钮时,程序最小化到托盘,并没有退出,这时再次运行程序,不会重复运行,而是显示已运行的程序: 2.支持不同目录: 3.支持修改名称. 代码(不支持修改名称,不支持不同目录): using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text;

  • C#判断当前程序是否通过管理员运行的方法

    本文实例讲述了C#判断当前程序是否通过管理员运行的方法.分享给大家供大家参考. 具体实现代码如下: 复制代码 代码如下: public bool IsAdministrator() { WindowsIdentity current = WindowsIdentity.GetCurrent(); WindowsPrincipal windowsPrincipal = new WindowsPrincipal(current); return windowsPrincipal.IsInRole(W

  • Android开发判断一个app应用是否在运行的方法详解

    本文实例讲述了Android开发判断一个app应用是否在运行的方法.分享给大家供大家参考,具体如下: 在一个应用中,或一个Service .Receiver中有时候需要判断一个应用是否正在运行,以便进行一些相关的处理,这个时候我们需要得到一个ActivityManager,这个Manager顾名思意就是管理Activity的,它有一个方法叫getRunningTasks,可以得到当前系统正在运行的Task的列表,代码如下: ActivityManager am = (ActivityManage

  • Android编程判断当前应用是否在后台运行的方法示例

    本文实例讲述了Android编程判断当前应用是否在后台运行的方法.分享给大家供大家参考,具体如下: /** 判断程序是否在后台运行 */ public static boolean isRunBackground(Context context) { ActivityManager activityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List<RunningAppProc

  • ASP.NET也像WinForm程序一样运行的实现方法

    由于现在会使用WinForm的人是越来越少了,可能有时候做点小东西就只好用ASP.NET去完成了(喜欢控制台的朋友请不要顶针),如果是这样,悲剧就发生了:一个小工具(或者小的演示项目),发给朋友去用,总不至于让人家也装个IIS或者VS20XX吧?如果没有这二样,这种小工具还真不方便运行.怎么办?做过ASP.NET开发的人都知道:网站通常要布署到IIS上才能直接运行,当然也不排除你用VS打开项目并使用VS自带的WebDev.WebServer.exe来启动程序.这种方式难免有不方便的时候. 我平时

  • VC++实现程序开机启动运行的方法

    本文所述实例主要介绍如何在VC++下让程序开机自动运行的方法.一般而言添加到开机启动项,这是很多程序都有的做法,具体实现思路是利用win.in文件实现相关程序的开机自动启动.主要是通过WritePrivateProfileString函数来实现.下面来看这一功能的实现方法. 主要功能代码如下: HCURSOR CAutoRunDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CAutoRunDlg::OnBrowse() { //

随机推荐