首页
统计
关于
骗子曝光
Search
1
电脑微信企业微信双开/多开的方法(这可能是最简单粗暴高效的解决方案)
1,609 阅读
2
网址自动推送百度API源码(PHP源码)(百度php推送源代码)
656 阅读
3
宝塔面板7.7.0版本原版安装+升级脚本(宝塔面板7.6.0破解版)
647 阅读
4
宝塔LINUX企业永久付费破解版(宝塔企业版破解版)所有专业版企业版插件免费使用!
514 阅读
5
宝塔面板插件破解方法(宝塔面板插件破解方法教程)
451 阅读
闲聊
骗子曝光
线报
WinForm
WinForm成品
WinForm源码
WinForm代码段
WEB
HTML代码
PHP代码
网站文章
网站源码
建站程序
Typecho
Typecho模板
Typecho插件
服务器运维面板
宝塔面板
网络安全
软件工具
技术教程
域名
自营程序
短链网DLW.IM
登录
Search
标签搜索
宝塔面板
BT
源码
PHP
Telegram
百度
Typecho
CDN
谷歌翻译
nginx
IP
宝塔面板企业版免授权安装脚本
宝塔面板破解版
子比主题
在线截图生成器
网站源码
2023最新可用dai挂网源码
阿里云域名快速转出的方法
国内服务器绕过备案详细操作教程
C#进程守护
Root
累计撰写
139
篇文章
累计收到
161
条评论
今日撰写
3
篇文章
首页
栏目
闲聊
骗子曝光
线报
WinForm
WinForm成品
WinForm源码
WinForm代码段
WEB
HTML代码
PHP代码
网站文章
网站源码
建站程序
Typecho
Typecho模板
Typecho插件
服务器运维面板
宝塔面板
网络安全
软件工具
技术教程
域名
自营程序
短链网DLW.IM
页面
统计
关于
骗子曝光
用户登录
登录
搜索到
14
篇与
WinForm
的结果
2023-03-19
Winform 程序多开
在使用应用程序的过程中,经常要求应用程序只能运行一次。如果发现重复开启,应从系统进程列表中搜索到已经开启的进程,并将该进程窗口移到最前端显示。实现过程在 Program.cs 文件的 Program 类中声明两个外部调用函数 [DllImport("User32")] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("User32")] private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);两个外部调用 User32.dll 文件中的函数,其中SetForegroundWindow 主要用于将窗体移动到最前端显示,ShowWindowAsync函数用于显示窗体。修改 main 函数内容static void Main() { bool createdNew; //是否是第一次开启程序 Mutex mutex = new Mutex(false, "Single", out createdNew); //实例化一个进程互斥变量,标记名称Single if (!createdNew) //如果多次开启了进程 { Process currentProcess = Process.GetCurrentProcess();//获取当前进程 foreach (Process process in Process.GetProcessesByName(currentProcess.ProcessName)) { //通过进程ID和程序路径获取一个已经开启的进程 if ((process.Id != currentProcess.Id) && (Assembly.GetExecutingAssembly().Location == process.MainModule.FileName)) { //获取已经开启的进程的主窗体句柄 IntPtr mainFormHandle = process.MainWindowHandle; if (mainFormHandle != IntPtr.Zero) { ShowWindowAsync(mainFormHandle, 1); //显示已经开启的进程窗口 SetForegroundWindow(mainFormHandle); //将已经开启的进程窗口移动到前端 } } } mutex.WaitOne(); mutex.ReleaseMutex(); //释放Mutex一次 //MessageBox.Show("进程已经开启"); return; } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainFrame()); } }Mutex类,该类位于System.Threading命名空间下,主要用于创建线程或进程的互斥变量。本实例创建了一个名为Single的互斥变量,在运行程序时,首先访问该互斥变量,看该变量是否已经被创建,如果已经被创建,说明已经有相同的进程正在运行。
2023年03月19日
4 阅读
0 评论
0 点赞
2023-02-02
WinForm微软推出的强大桌面程序开发技术满足开发者的多种需求
WinForm是微软公司推出的一种使用C#或VB.NET编写的桌面程序开发技术。它提供了从用户界面到数据库连接的一系列组件,为开发者提供了强大的功能,同时也是一个易于使用、稳定可靠的系统。WinForm的优势WinForm的优势在于它的易用性,它提供了一系列灵活的组件,可以快速简便地编写出一个完整的桌面程序。它还支持多种数据库,可以方便地连接和操作数据库。此外,它还支持多种语言,可以使用C#或VB.NET来编写程序,并有良好的开发环境,使得开发者可以快速、高效地开发出自己所需要的程序。WinForm的缺点WinForm的缺点在于它的性能不是很高,在大量数据处理的情况下,它的运行效率是相对较低的。此外,它的UI界面也不够灵活,对于比较复杂的UI界面,它的编写效率是较低的。WinForm的使用场景WinForm的使用场景主要是在桌面程序开发,用它来开发简单的桌面程序,效果很好。它也可以用来开发一些数据处理程序,比如数据库查询程序,因为它的连接数据库的功能很强大,而且使用起来也很方便。WinForm的维护WinForm的维护比较简单,因为它的结构非常清晰,只需要对程序的每部分进行简单的维护就可以了。当更新了一些新的功能时,也只需要更新相应的部分即可,不用担心会影响到其他部分。WinForm的安全性WinForm的安全性也很高,它使用了强大的加密技术,可以有效地防止程序被破解和攻击。此外,它也支持一些安全认证技术,可以有效地防止数据泄露,保证数据安全。总而言之,WinForm是一种强大的桌面程序开发技术,它具有易用性、稳定性、高效性、安全性等优势,可以满足开发者的大多数需求,是一种非常好的桌面程序开发技术。以上便是关于“WinForm”的相关内容,WinForm:微软推出的强大桌面程序开发技术(满足开发者的多种需求)
2023年02月02日
12 阅读
0 评论
0 点赞
2023-02-01
C# WinForm程序防止多开的方法总结
Winform启动的时候,检测是否存在同样的进程名,防止程序多开;方法1:static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Process[] processes = Process.GetProcesses(); Process currentProcess = Process.GetCurrentProcess(); bool processExist = false; foreach (Process p in processes) { if (p.ProcessName == currentProcess.ProcessName && p.Id != currentProcess.Id) { processExist = true; } } if (processExist) { Application.Exit(); } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } 方法2:static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { string processName = Process.GetCurrentProcess().ProcessName; Process[] processes = Process.GetProcessesByName(processName); //如果该数组长度大于1,说明多次运行 if (processes.Length > 1) { MessageBox.Show("程序已运行,不能再次打开!"); Environment.Exit(1); } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } 利用Mutex互斥对象防止程序多开;static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { bool isAppRunning = false; Mutex mutex = new Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out isAppRunning); if (!isAppRunning) { MessageBox.Show("程序已运行,不能再次打开!"); Environment.Exit(1); } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } }
2023年02月01日
16 阅读
0 评论
0 点赞
2023-02-01
C#实现控制Windows系统关机、重启和注销的方法:
shutdown命令的参数:shutdown.exe -s:关机 shutdown.exe -r:关机并重启 shutdown.exe -l:注销当前用户 shutdown.exe -s -t 时间:设置关机倒计时 shutdown.exe -h:休眠 shutdown.exe -t 时间:设置关机倒计时。默认值是 30 秒。 shutdown.exe -a:取消关机 shutdown.exe -f:强行关闭应用程序而没有警告 shutdown.exe -m 计算机名:控制远程计算机 shutdown.exe -i:显示“远程关机”图形用户界面,但必须是Shutdown的第一个参数 shutdown.exe -c "消息内容":输入关机对话框中的消息内容 shutdown.exe -d u:xx:yy :列出系统关闭的原因代码:u 是用户代码 ,p 是一个计划的关闭代码 ,xx 是一个主要原因代码(小于 256 的正整数) ,yy 是一个次要原因代码(小于 65536 的正整数)比如你的电脑要在12:00关机,可以选择“开始→运行”,输入“at 12:00 Shutdown -s",这样,到了12点电脑就会出现“系统关机”对话框,默认有30秒钟的倒计时并提示你保存工作。如果你想以倒计时的方式关机,可以输入 “Shutdown.exe -s -t 3600",这里表示60分钟后自动关机,“3600"代表60分钟。一键关机:1、首先在桌面的空白处单击鼠标右键,新建一个“快捷方式”。2、在创建快捷方式的“命令行”中输入以下的指令:“shutdown –s –t 0 ”。(在windows98按此输入“C:windowsRUNDLL32.EXE user,ExitWindows”。)3、按着鼠标选择“下一步”,在快捷方式的名称栏中输入“一键关机”或其他自己喜欢的名称。4、之后,你就会在桌面见到一个名为“一键关机”的快捷方式图标,在该图标上单击鼠标右键,选择“属性”,再进入“快捷方式”页,然后在“快速键一栏内随便按选一个功能键(如F1-F12)。建议大家最好选一个平时不常用的功能键,最后按确定退出即可。Windows系统通过一个名为shutdown.exe的程序来完成关机操作(位置WindowsSystem32下),一般情况下Windows系统的关机都可以由关机程序 shutdown.exe来实现的,关机的时候调用shutdown.exe。由此可知要阻止强行关机就是要取消对shutdown.exe的调用。使用C#代码实现控制Windows系统关机、重启和注销的方法,使用.NET和C#.NET,我们可以对当前PC执行关机,重启,注销操作,.NET Framework中,有一个命名空间System.Diagnostics具有所需的类和方法,从当前PC上运行.NET应用程序来执行这些操作 。一般使用System.Diagnostics.Process.Start()方法来启动shutdown.exe程序。下面是一个winform程序说明,使用按钮来执行关机,重启和注销。 //关机 和 计时关机 private void btnShutDown_Click(object sender, EventArgs e) { if (checkBox1.Checked) { if (MessageBox.Show("将要设定计划关机,是否确认操作?", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK) { decimal decl = numericUpDown1.Value * + numericUpDown2.Value * + numericUpDown3.Value; string str = decl.ToString(); Process.Start("shutdown.exe", "-s -t " + str);//计时关机 } } else { if (MessageBox.Show("是否确认关机?", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK) { Process.Start("shutdown.exe", "-s");//关机 //Process.Start("shutdown.exe", "-s -t xx"); } } } //重启 private void butRestar_Click(object sender, EventArgs e) { if (MessageBox.Show("是否确认重启?", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK) { Process.Start("shutdown.exe", "-r");//重启 Process.Start("shutdown.exe", "-r -t 10"); } } //注销 private void butLogOff_Click(object sender, EventArgs e) { if (MessageBox.Show("是否确认注销?", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK) Process.Start("shutdown.exe", "-l");//注销 }
2023年02月01日
8 阅读
0 评论
0 点赞
2023-02-01
C#Winform获取当前系统的基本信息
SystemInformation类在.net的系统信息类库中,最基本的类库是SystemInformation类,包含在System.Windows.Forms名字空间中。该类库可以帮助我们获得有关系统的基本信息;这个类中只包含了几个从System.Object类继承的公共方法,没有提供其他的方法。系统的信息可以通过这个类的公共静态成员获得,我们可以根据需要获得的信息选取合适的成员。命名空间: System.Windows.Forms 程集集: System.Window.Forms.dll 提供当前系统环境的有关信息public static class SystemInformation继承Object → SystemInformationEnvironment 类第二种方法是通过Environment 类该类提供了有关当前环境和平台的信息以及操作它们的方法;Environment 类除了提供了一些静态成员外,还提供了一些静态方法。命名空间: System 程序集: System.Runtime.dll 提供有关当前环境和平台的信息以及操作它们的方法(此类不能被继承)。public static class Environment继承Object → EnvironmentRegistryKey 类第三种方式是通过注册表查询系统信息,这是最传统的方法,也是功能最强大的方法和最复杂的方法。.net中注册表封装在RegistryKey 类 中,位于Microsoft.win32命名空间中。这个类和前两个类不同,它的公共属性我们能利用的机会很少,我们为了获得系统信息主要是使用它的OpenSubKey 方法,然而为了使用这个方法,我们必须对注册表有相当的了解才行,这也正是使用这个类获得系统信息的复杂之处。命名空间: Microsoft.Win32 程序集: Microsoft.Win32.Registry.dll 表示Windows注册表中的项级节点。此类是注册表封装。public sealed class RegistryKey : MarshalByRefobject,IDisposable继承Object → MarshalByRefobject → RegistryKey练习实例using System; using System.Windows.Forms; namespace Winform_1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // 计算机名称 SystemInformation richTextBox1.AppendText("计算机名称: " + SystemInformation.ComputerName); // 换行 richTextBox1.AppendText(Environment.NewLine); // 计算机名称 Environment richTextBox1.AppendText("计算机名称: " + Environment.MachineName); richTextBox1.AppendText(Environment.NewLine); // 用户名称 richTextBox1.AppendText("用户名称: " + Environment.UserName); richTextBox1.AppendText(Environment.NewLine); // 平台标识 richTextBox1.AppendText("平台标识: " + Environment.OSVersion.Platform); richTextBox1.AppendText(Environment.NewLine); // 操作系统版本号 richTextBox1.AppendText("版本号: " + Environment.OSVersion.VersionString); richTextBox1.AppendText(Environment.NewLine); // 处理器个数 richTextBox1.AppendText("处理器个数: " + Environment.ProcessorCount); richTextBox1.AppendText(Environment.NewLine); // 判断操作系统位数 64位&32位 if (Environment.Is64BitOperatingSystem) { richTextBox1.AppendText("操作系统位数: 64bit."); } else { richTextBox1.AppendText("操作系统位数: 32bit."); } richTextBox1.AppendText(Environment.NewLine); // 判断网络 if (SystemInformation.Network) { richTextBox1.AppendText("网络连接: 已连接"); } else { richTextBox1.AppendText("网络连接: 未连接"); } richTextBox1.AppendText(Environment.NewLine); // 判断系统启动模式 if (SystemInformation.BootMode.ToString() == "Normal") richTextBox1.AppendText("启动模式: 正常启动"); if (SystemInformation.BootMode.ToString() == "FailSafe") richTextBox1.AppendText("启动模式: 安全启动"); if (SystemInformation.BootMode.ToString() == "FailSafeWithNework") richTextBox1.AppendText("启动方式: 通过网络服务启动"); richTextBox1.AppendText(Environment.NewLine); // 显示器数量 richTextBox1.AppendText("显示器数量: " + SystemInformation.MonitorCount); richTextBox1.AppendText(Environment.NewLine); // 显示器分辨率 richTextBox1.AppendText("显示器分辨率: " + SystemInformation.PrimaryMonitorMaximizedWindowSize.Width + " * " + SystemInformation.PrimaryMonitorMaximizedWindowSize.Height); richTextBox1.AppendText(Environment.NewLine); // 当前分辨率 richTextBox1.AppendText("主显示器当前分辨率: " + SystemInformation.PrimaryMonitorSize.Width + " * " + SystemInformation.PrimaryMonitorSize.Height); richTextBox1.AppendText(Environment.NewLine); // 鼠标按钮个数 richTextBox1.AppendText("鼠标按钮个数: " + SystemInformation.MouseButtons.ToString()); richTextBox1.AppendText(Environment.NewLine); // 鼠标速度 richTextBox1.AppendText("鼠标速度: " + SystemInformation.MouseSpeed.ToString()); richTextBox1.AppendText(Environment.NewLine); // 系统目录 richTextBox1.AppendText("系统目录: " + Environment.SystemDirectory); richTextBox1.AppendText(Environment.NewLine); // 系统内存页 richTextBox1.AppendText("系统内存页: " + Environment.SystemPageSize.ToString() + "MB"); richTextBox1.AppendText(Environment.NewLine); } } }
2023年02月01日
7 阅读
0 评论
0 点赞
2022-06-20
C#中的WinForm问题——使用滚动条时页面闪烁及重影问题
C#中的WinForm问题——使用滚动条时页面闪烁及重影问题当使用鼠标进行滚动查看页面时,由于页面会频繁刷新,如果页面中控件较多会导致页面出现闪烁、重影等问题,如下图所示:具体的解决方案是通过设置CreateParams的ExStyle为ExStyle 为 0x02000000 (WS_EX_COMPOSITED)。protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; return cp; } }
2022年06月20日
37 阅读
0 评论
0 点赞
2022-06-12
WinForm系统托盘双击打开窗体
this.Visible = true; this.WindowState = FormWindowState.Normal;//双击打开窗体
2022年06月12日
34 阅读
0 评论
0 点赞
2022-06-12
WinForm关闭窗体时系统托盘不死
在窗体的FormClosing事件添加代码↓notifyIcon.Visible = false;//关闭系统托盘
2022年06月12日
42 阅读
0 评论
0 点赞
2022-06-11
WinForm(C#)制作的PC浏览器
Winform浏览器案例下载隐藏内容,请前往内页查看详情
2022年06月11日
43 阅读
0 评论
0 点赞
2022-06-11
WinForm播放mp3音频代码段
#region 播放音频 public class Mp3Player { //定义API函数使用的字符串变量 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] private string Name = ""; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] private string durLength = ""; [MarshalAs(UnmanagedType.LPTStr, SizeConst = 128)] private string TemStr = ""; private int ilong; //定义播放状态枚举变量 public enum State { mPlaying = 1, mPuase = 2, mStop = 3 }; //结构变量 public struct structMCI { public bool bMut; public int iDur; public int iPos; public int iVol; public int iBal; public string iName; public State state; }; public structMCI mc = new structMCI(); //取得播放文件属性 public string FileName { get { return mc.iName; } set { //ASCIIEncoding asc = new ASCIIEncoding(); try { TemStr = ""; TemStr = TemStr.PadLeft(127, Convert.ToChar(" ")); Name = Name.PadLeft(260, Convert.ToChar(" ")); mc.iName = value; ilong = APIClass.GetShortPathName(mc.iName, Name, Name.Length); Name = GetCurrPath(Name); //Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media"; Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media"; ilong = APIClass.mciSendString("close all", TemStr, TemStr.Length, 0); ilong = APIClass.mciSendString(Name, TemStr, TemStr.Length, 0); ilong = APIClass.mciSendString("set media time format milliseconds", TemStr, TemStr.Length, 0); mc.state = State.mStop; } catch { } } } //播放 public void play() { TemStr = ""; TemStr = TemStr.PadLeft(127, Convert.ToChar(" ")); APIClass.mciSendString("play media", TemStr, TemStr.Length, 0); mc.state = State.mPlaying; } //停止 public void StopT() { TemStr = ""; TemStr = TemStr.PadLeft(128, Convert.ToChar(" ")); ilong = APIClass.mciSendString("close media", TemStr, 128, 0); ilong = APIClass.mciSendString("close all", TemStr, 128, 0); mc.state = State.mStop; } public void Puase() { TemStr = ""; TemStr = TemStr.PadLeft(128, Convert.ToChar(" ")); ilong = APIClass.mciSendString("pause media", TemStr, TemStr.Length, 0); mc.state = State.mPuase; } private string GetCurrPath(string name) { if (name.Length < 1) return ""; name = name.Trim(); name = name.Substring(0, name.Length - 1); return name; } //总时间 public int Duration { get { durLength = ""; durLength = durLength.PadLeft(128, Convert.ToChar(" ")); APIClass.mciSendString("status media length", durLength, durLength.Length, 0); durLength = durLength.Trim(); if (durLength == "") return 0; return (int)(Convert.ToDouble(durLength) / 1000f); } } //当前时间 public int CurrentPosition { get { durLength = ""; durLength = durLength.PadLeft(128, Convert.ToChar(" ")); APIClass.mciSendString("status media position", durLength, durLength.Length, 0); mc.iPos = (int)(Convert.ToDouble(durLength) / 1000f); return mc.iPos; } } } public class APIClass { [DllImport("kernel32.dll", CharSet = CharSet.Auto)] public static extern int GetShortPathName( string lpszLongPath, string shortFile, int cchBuffer ); [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)] public static extern int mciSendString( string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback ); } #endregion /* *下面的代码可以放到按钮控件内 /* #region 播放 Mp3Player mp3Play = new Mp3Player() { FileName = @"C:\ProgramData\User\music.mp3", }; mp3Play.play(); #endregion #region 暂停 Mp3Player mp3Play = new Mp3Player() { }; mp3Play.Puase(); #endregion
2022年06月11日
34 阅读
0 评论
0 点赞
1
2