.net C#如何保证打开winform程序唯一性

.net C#如何保证打开winform程序唯一性,第1张

Programcs

using System;

using SystemWindowsForms;

namespace SMS

{

static class Program

{

//private static SystemThreadingMutex mutex;

public static SystemThreadingMutex Run;

/// <summary>

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

/// </summary>

[STAThread]

static void Main()

{

bool noRun = false;

Run = new SystemThreadingMutex(true, "SmsProgram", out noRun);

//检测是否已经运行

if (noRun)

{

RunReleaseMutex();

ApplicationEnableVisualStyles();

ApplicationSetCompatibleTextRenderingDefault(false);

//创建登录窗体的实例

FormLogin fml = new FormLogin();

//设置在屏幕中央显示

fmlStartPosition = FormStartPositionCenterScreen;

//启动程序

ApplicationRun(fml); ;

}

else

{

MessageBoxShow("程序已运行!", "提示", MessageBoxButtonsOK, MessageBoxIconInformation);

ApplicationExit();

}

}

}

}

获取当前屏幕分辨率->获取当前窗口大小->计算如果居中的话当前窗口的位置->给当前窗口位置赋值

楼主应该是设置了最大的尺寸。下面的代码在最大化的事件里面添加上就OK了。方法挺笨的,不过可以实现,代码如下,测试通过。

int height = SystemWindowsFormsSystemInformationWorkingAreaHeight;

int width = SystemWindowsFormsSystemInformationWorkingAreaWidth;

int formheight = thisSizeHeight;

int formwidth = thisSizeWidth;

int newformx = width / 2 - formwidth / 2;

int newformy = height / 2 - formheight / 2;

thisSetDesktopLocation(newformx, newformy);

用C#创建Windows服务的步骤:

1创建Windows Service项目

从Visual C# 工程中选取 Windows 服务(Windows Service)选项,给工程一个新文件名,然后点击 确定。

2向服务中函数功能实现

OnStart函数在启动服务时执行,OnStop函数在停止服务时执行。在这里,当启动和停止服务时,向一个文本文件中写入一些文字信息,代码如下:

using System;

using SystemCollectionsGeneric;

using SystemComponentModel;

using SystemData;

using SystemDiagnostics;

using SystemIO;

using SystemLinq;

using SystemServiceProcess;

using SystemText;

using SystemThreadingTasks;

namespace MyService

{

public partial class Service1 : ServiceBase

{

public Service1()

{

InitializeComponent();

}

protected override void OnStart(string[] args)

{

FileStream fs = new FileStream(@"d:\xxtxt", FileModeOpenOrCreate, FileAccessWrite);

StreamWriter sw = new StreamWriter(fs);

swBaseStreamSeek(0, SeekOriginEnd);

swWriteLine("WindowsService: Service Started" + DateTimeNowToString() + "\n");

swFlush();

swClose();

fsClose();

}

//protected override void OnContinue()

//{

// baseOnContinue();

//}

//protected override void OnPause()

//{

// baseOnPause(); // father class method inherit

//}

//protected override void OnShutdown()

//{

// baseOnShutdown();

//}

protected override void OnStop()

{

FileStream fs = new FileStream(@"d:\xxtxt", FileModeOpenOrCreate, FileAccessWrite);

StreamWriter sw = new StreamWriter(fs);

swBaseStreamSeek(0, SeekOriginEnd);

swWriteLine("WindowsService: Service Stopped" + DateTimeNowToString() + "\n");

swFlush();

swClose();

fsClose();

}

}

}

4回到设计窗口点右键选择-添加安装程序 -生成serviceInstaller1和 serviceProcessInstaller1两个组件

把serviceInstaller1的属性ServiceName改写为你的服务程序名,并把启动模 式设置为AUTOMATIC

把serviceProcessInstaller1的属性account改写为 LocalSystem

5编译链接生成服务程序

通过从生成菜单中选择生成来生成项目。

6安装服务

用net framework工具INSTALLUTIL安装服务程序即可。

用项目的输出作为参数,从命令行运行 InstallUtilexe。在命令行中输入下列代码:

installutil yourprojectexe

Hint: a windows service must first be installed using installutilexe and then started with the serviceExplorer, windows Services Administrative tool or the NET START command

7卸载服务

用项目的输出作为参数,从命令行运行 InstallUtilexe。

installutil /u yourprojectexe

以上就是关于.net C#如何保证打开winform程序唯一性全部的内容,包括:.net C#如何保证打开winform程序唯一性、winform 程序 直接打开时 窗口大小正好 可最大化后就停靠在左上角了 能不能最大化后还是居中呢、用C#winform程序开启windows服务 怎么做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存