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语言编程如何判断一个程序是否运行成功 (结果是一个界面) 等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)