C#WINFORM判断程序是否运行,且只能运行一个实例

C#WINFORM判断程序是否运行,且只能运行一个实例,第1张

C# WinForm判断程序是否已经运行,使程序只能运行一个实例有很多方法。

第一种,通过进程判断是否启动:

[csharp] view plain copy

static class Program

{

/// <summary>

/// 应用程序的主入口点。

/// </summary>

[STAThread]

static void Main()

{

//获取当前进程的ID

int pId = ProcessGetCurrentProcess()Id;

bool isRun = false;

foreach (Process p in ProcessGetProcessesByName("CallMaster"))

{

//取得当前程序的进程,进行比较

if (CommonGetPath()ToLower() == pMainModuleFileName

bool IsProcessRun(char pName)

{

HANDLE hProcessSnap;

HANDLE hProcess;

PROCESSENTRY32 pe32;

DWORD dwPriorityClass;

bool bFind = false;

// Take a snapshot of all processes in the system

hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

if (hProcessSnap == INVALID_HANDLE_VALUE)

{

return false;

}

// Set the size of the structure before using it

pe32dwSize = sizeof(PROCESSENTRY32);

// Retrieve information about the first process,

// and exit if unsuccessful

if (!Process32First(hProcessSnap, &pe32))

{

CloseHandle(hProcessSnap);          // clean the snapshot object

return false;

}

// Now walk the snapshot of processes, and

// display information about each process in turn

do

{

// Retrieve the priority class

dwPriorityClass = 0;

if (::strstr(pe32szExeFile, pName) != NULL)

{

bFind = true;

break;

}

} while (Process32Next(hProcessSnap, &pe32));

CloseHandle(hProcessSnap);

return bFind;

}

其实这个问题很简单,不管你用什么语言编写程序,尤其是做应用方面的程序,其表现是相同的;对于判定一个程序是否运行成功主要是输入和输出,因为任何程序都要和输入输出打交道,否则程序便没有意义,这里讲的输入和输出是广义的;伴随输入输出,有以下几个方面可以作为判定:

1:明确的输入、输出,比如输入输出数据;

2:进程序列;

3:如有图形界面,当如有图形界面未必表示运行成功;

最后:你需要几个因素综合考虑,你写C语言程序,可以使用调试工具(gdb)跟踪

;写程序需要慢慢积累经验;当然灵感很重要!

以上就是关于C#WINFORM判断程序是否运行,且只能运行一个实例全部的内容,包括:C#WINFORM判断程序是否运行,且只能运行一个实例、windows上如何判断一个进程是否正在运行、linux下C语言编程如何判断一个程序是否运行成功 (结果是一个界面) 等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10045545.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存