关闭系统时自动单击程序(某一.EXE)的保存按钮?
由于操作员疏忽关闭系统时,程序没有关闭也没有单击“保存”按钮进行数据保存,而导致数据丢失,请问如何实现关闭系统时,自动单击所有程序的保存按钮之后,再关闭系统。 问题点数:50、回复次数:10Top
1 楼lhx1977(清水无鱼)回复于 2006-03-11 18:22:21 得分 10
在form_closeing事件里实现。
Top
2 楼520NET(思绪随风)回复于 2006-03-11 18:44:49 得分 0
不用form_closeing怎么实现,要是很多窗口都有保存按钮,每个都要写一遍很麻烦而且重复劳动。谢谢上面的兄弟!Top
3 楼angel_bear(angelbear)回复于 2006-03-11 18:53:56 得分 10
能不能把save_close()
事件委托给form的close事件呀
Top
4 楼mmcl(Constor)回复于 2006-03-11 19:12:49 得分 10
还要截获系统关闭进程吧?
要不然不等你保存就关机了.Top
5 楼520NET(思绪随风)回复于 2006-03-11 19:24:59 得分 0
我现在是有两个程序A.exe和B.exe,同时打开。当关闭程序A时,自动点击程序B的保存按钮?请问如何实现?Top
6 楼mmcl(Constor)回复于 2006-03-11 19:25:50 得分 0
我也遇到这种情况:
以前用system suite版本在debug模式下(release下没有试)编译成功的程序,
改装vs2005 专业版后在release下编译成功,而在debug下却出错,如下:
错误 1 fatal error C1853: “Debug\test.pch”预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反) g:\My Documents\Visual Studio 2005\Projects\c c++ c++.net合并\test\test.cpp 3
Top
7 楼mmcl(Constor)回复于 2006-03-11 19:26:22 得分 0
对不起,发错了!Top
8 楼angel_bear(angelbear)回复于 2006-03-11 19:41:26 得分 10
那应该是进程间的通信了
我也很想知道呀
顶一下Top
9 楼yzg100(100学编程)回复于 2006-03-11 22:19:16 得分 0
form_closeing 调用一下保存按钮的点击事件不就行了
btnSave_Click(Nothing,Nothing)Top
10 楼wuyazhe(wyz&xyl)回复于 2006-03-11 22:48:44 得分 10
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TestSaveOnQuitSystem
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Application.AddMessageFilter(MyMsgFilterClass.GetMsgFilter());
MyMsgFilterClass.GetMsgFilter().ExitWindowEvent += new EventHandler(Form1_ExitWindowEvent);
}
void Form1_ExitWindowEvent(object sender, EventArgs e)
{
//处理
}
}
public class MyMsgFilterClass : IMessageFilter
{
public static MyMsgFilterClass GetMsgFilter()
{
if (s_obj == null)
{
s_obj = new MyMsgFilterClass();
}
return s_obj;
}
private MyMsgFilterClass()
: base()
{
}
private static MyMsgFilterClass s_obj = null;
#region IMessageFilter 成员
private const int WM_QUERYENDSESSION = 0x0011;
public event EventHandler ExitWindowEvent = null;
bool IMessageFilter.PreFilterMessage(ref Message m)
{
if (m.Msg == WM_QUERYENDSESSION)
{
//写你的保存代码。或者在事件里写保存代码
if (ExitWindowEvent != null)
{
ExitWindowEvent(this, new EventArgs());
}
return true;
}
return false;
}
#endregion
}
}Top




