有没有办法让我的winform程序开着就不让用户关机? 可以的吧 我原来用过一种版本的Winamp就是这样的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你添加一个notifyIcon 控件放你程序里应该就行,我用了notifyIcon控件就不能关机非得先退出程序才能关机 see this:在关机或Logff前信息的拦截 如果我们关机或Logoff时,我们的程序有时会因而无法按正常程序结束,一般我们会在Form的Unload中一段程序结束时要做什么事,但是,如果使用者直接用开始功能菜单的关机,会使UnLoad的部份没有做到,我们现在就想办法来拦截关机(或Logoff)时的信息。一般来说,关机或Logff后,Windows会传依序送出WM_QUERYENDSESSION的信息给每个Process,如果中间有一个Process不能顺利结束(例如:Word修改后未存档,而出现是否存档,但我们按取消),这时该信息执行的结果会传回False(0),这时Windows也就不再继续送WM_QUERYENDSESSION给下一个Proccess。反之,如果所有的Process都可以顺利结束(也就是每个送出的WM_QUERYENDSESSION都传回True),那才代表以以顺利结束。不管WM_QUERYENDSESSION最后的结果是可以顺利结束或不能顺利结束,Windows会再送一个WM_ENDSESSION的信息给所有的Process,而wParam的内容便是指出是否可以顺利结束(True菜单可以,False菜单不行,在vb中则Check wParam = 0 菜单False , 0菜单True),说到这里大概就知道该如何做啦,程序如下: using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;namespace RefuseShutup{ /// <summary> /// Form1 的摘要说明。 /// </summary> public class Form1 : System.Windows.Forms.Form { /// <summary> /// 必需的设计器变量。 /// </summary> private System.ComponentModel.Container components = null; public Form1() { // // Windows 窗体设计器支持所必需的 // InitializeComponent(); // // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 // } /// <summary> /// 清理所有正在使用的资源。 /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.Size = new System.Drawing.Size(300,300); this.Text = "Form1"; } #endregion /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); } private const int WM_QUERYENDSESSION=0x0011; protected override void WndProc(ref Message m) { int i=0; switch(m.Msg) { case WM_QUERYENDSESSION: { m.Result=(IntPtr)i; MessageBox.Show("Stop!","dagu"); break; } default: base.WndProc(ref m); break; } } }} 用户想关机,你拦得住吗,拔电源haah !电源拔都拔不动,停电也没用。 using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;namespace RefuseShutup{ /// <summary> /// Form1 的摘要说明。 /// </summary> public class Form1 : System.Windows.Forms.Form { /// <summary> /// 必需的设计器变量。 /// </summary> private System.ComponentModel.Container components = null; public Form1() { // // Windows 窗体设计器支持所必需的 // InitializeComponent(); // // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 // } /// <summary> /// 清理所有正在使用的资源。 /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.components = new System.ComponentModel.Container(); } #endregion /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); } private const int WM_QUERYENDSESSION=0x0011; protected override void WndProc(ref Message m) { int i=0; switch(m.Msg) { case WM_QUERYENDSESSION: { m.Result=(IntPtr)i; break; } default: base.WndProc(ref m); break; } } }} 关于正则表达式怎样忽略换行符 大家帮忙解决下Textbox内光标移动的问题吧,很急。。。。 高手帮忙啊, 急!急!急! c# 2005如何在word文档中指定位置插入图片或图像 编写一个图片上传函数 给定图片路径 如何上传图片 动态插入菜单问题,高分简单! 这能实现吗 请问:微软的msagent与IBM的Aglets功能上是不是一样的??? 提取html中的URL 各位帮我看看这个问题 如何获取打印报表的总页数,以及如何实现奇偶页打印功能?着急啊 各位谁能给我一个报表生成的例子,要原码 高分?
如果我们关机或Logoff时,我们的程序有时会因而无法按正常程序结束,一般我们会在
Form的Unload中一段程序结束时要做什么事,但是,如果使用者直接用开始功能菜单的关
机,会使UnLoad的部份没有做到,我们现在就想办法来拦截关机(或Logoff)时的信息。一般来说,关机或Logff后,Windows会传依序送出WM_QUERYENDSESSION的信息给每个
Process,如果中间有一个Process不能顺利结束(例如:Word修改后未存档,而出现是
否存档,但我们按取消),这时该信息执行的结果会传回False(0),这时Windows也就
不再继续送WM_QUERYENDSESSION给下一个Proccess。反之,如果所有的Process都可以
顺利结束(也就是每个送出的WM_QUERYENDSESSION都传回True),那才代表以以顺利结束。不管WM_QUERYENDSESSION最后的结果是可以顺利结束或不能顺利结束,Windows会再送
一个WM_ENDSESSION的信息给所有的Process,而wParam的内容便是指出是否可以顺利
结束(True菜单可以,False菜单不行,在vb中则Check wParam = 0 菜单False , 0菜单True)
,说到这里大概就知道该如何做啦,程序如下:
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;namespace RefuseShutup{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent(); //
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
} #region Windows Form Designer generated code
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.Size = new System.Drawing.Size(300,300);
this.Text = "Form1";
}
#endregion /// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
} private const int WM_QUERYENDSESSION=0x0011;
protected override void WndProc(ref Message m)
{
int i=0;
switch(m.Msg)
{
case WM_QUERYENDSESSION:
{
m.Result=(IntPtr)i;
MessageBox.Show("Stop!","dagu");
break;
}
default:
base.WndProc(ref m);
break;
}
}
}
}
haah !
电源拔都拔不动,停电也没用。
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;namespace RefuseShutup{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent(); //
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
} #region Windows Form Designer generated code
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
}
#endregion /// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
} private const int WM_QUERYENDSESSION=0x0011; protected override void WndProc(ref Message m)
{
int i=0;
switch(m.Msg)
{
case WM_QUERYENDSESSION:
{
m.Result=(IntPtr)i;
break;
}
default:
base.WndProc(ref m);
break;
}
}
}
}