结束excel进程
2006-06-30 17:07
274 查看
用excel.dll生成excel文件后,不能及时的结束excel进程,用下面方法结束了excel进程。
1
2
using System.Runtime.InteropServices;
3
using System.Reflection;
4
5
6
API用来发送消息#region API用来发送消息
7
private object missing = Missing.Value;
8
/**//// <summary>
9
///API用来发送消息
10
/// </summary>
11
[DllImport("user32.dll", CharSet=CharSet.Auto)]
12
private static extern int SendMessage(int hWnd, int msg, string wParam, string lParam);
13
[ DllImport ( "user32" ) ]
14
private static extern uint FindWindow ( string lpClassName ,System.IntPtr WindowName ) ;
15
16
[DllImport("user32")]
17
private static extern uint GetWindowThreadProcessId(uint hwnd,ref uint lpdwProcessId);
18
19
[DllImport("kernel32")]
20
private static extern uint OpenProcess(uint dwDesiredAccess, uint bInheritHandle, uint dwProcessId);//(0xF0000 | 0x100000| 0xFFF)=ALL RIGHTS
21
[DllImport("kernel32")]
22
private static extern uint TerminateProcess(uint hProcess, uint uExitCode);
23
24
[DllImport("kernel32.dll", SetLastError=true)]
25
private static extern int WinExec ( string lpCmdLine, int nCmdShow) ;
26
27
/**//// <summary>
28
/// 打开浏览器
29
/// </summary>
30
[DllImport("shell32.dll", EntryPoint="ShellExecute", CharSet=CharSet.Auto)]
31
private static extern int ShellExecute(IntPtr hwnd,string lpOperation,string lpFile,string lpParameters,string lpDirectory,int nShowCmd);
32
#endregion
33
34
35
36
/**//// <summary>
37
/// 关闭所有EXCEL进程
38
/// </summary>
39
public void CloseAllExcel()
40
{
41
for(int i=0;i<1000;i++)
42
{
43
uint h=FindWindow("XLMAIN",System.IntPtr.Zero);
44
uint p=0;
45
if(h>0)
46
{
47
GetWindowThreadProcessId(h,ref p);
48
uint tmp=0x0001;
49
if(p!=0)
50
TerminateProcess(OpenProcess(tmp,0,p),0xFFFFFFFF);
51
}
52
else
53
break;
54
// SendMessage(handle, 0x10,"","");
55
}
56
}
57
58
1
2
using System.Runtime.InteropServices;
3
using System.Reflection;
4
5
6
API用来发送消息#region API用来发送消息
7
private object missing = Missing.Value;
8
/**//// <summary>
9
///API用来发送消息
10
/// </summary>
11
[DllImport("user32.dll", CharSet=CharSet.Auto)]
12
private static extern int SendMessage(int hWnd, int msg, string wParam, string lParam);
13
[ DllImport ( "user32" ) ]
14
private static extern uint FindWindow ( string lpClassName ,System.IntPtr WindowName ) ;
15
16
[DllImport("user32")]
17
private static extern uint GetWindowThreadProcessId(uint hwnd,ref uint lpdwProcessId);
18
19
[DllImport("kernel32")]
20
private static extern uint OpenProcess(uint dwDesiredAccess, uint bInheritHandle, uint dwProcessId);//(0xF0000 | 0x100000| 0xFFF)=ALL RIGHTS
21
[DllImport("kernel32")]
22
private static extern uint TerminateProcess(uint hProcess, uint uExitCode);
23
24
[DllImport("kernel32.dll", SetLastError=true)]
25
private static extern int WinExec ( string lpCmdLine, int nCmdShow) ;
26
27
/**//// <summary>
28
/// 打开浏览器
29
/// </summary>
30
[DllImport("shell32.dll", EntryPoint="ShellExecute", CharSet=CharSet.Auto)]
31
private static extern int ShellExecute(IntPtr hwnd,string lpOperation,string lpFile,string lpParameters,string lpDirectory,int nShowCmd);
32
#endregion
33
34
35
36
/**//// <summary>
37
/// 关闭所有EXCEL进程
38
/// </summary>
39
public void CloseAllExcel()
40
{
41
for(int i=0;i<1000;i++)
42
{
43
uint h=FindWindow("XLMAIN",System.IntPtr.Zero);
44
uint p=0;
45
if(h>0)
46
{
47
GetWindowThreadProcessId(h,ref p);
48
uint tmp=0x0001;
49
if(p!=0)
50
TerminateProcess(OpenProcess(tmp,0,p),0xFFFFFFFF);
51
}
52
else
53
break;
54
// SendMessage(handle, 0x10,"","");
55
}
56
}
57
58
相关文章推荐
- ole automation vc结束Excel进程
- 关于.NET程序中使用Excel对象后,如何结束残留的Excel进程
- 结束EXCEL进程
- 关于ASP.NET中调用Excel组件不能结束进程的解决方法
- 彻底结束EXCEL进程
- C#中如何结束Excel (Office)进程
- ASP.NET调用Excel不能结束进程的解决方法
- ASP.NET控制EXCEL,完全结束进程
- C#导出Excel后无法结束相应进程的解决办法
- 使用Excel COM组件导出数据后释放 Excel进程不能正常结束
- 用VB结束Excel的进程
- ole automation vc结束Excel进程
- .net 彻底结束excel进程
- 在.net中结束Excel,Word进程
- 从DataView中生成Excel报表的方案(C#) 可以结束进程
- 完美结束EXCEL进程
- [C#]结束Excel的进程的方法
- 关于 Excel 的结束进程的方法讨论
- Excel.exe进程结束方法
- [C#]结束Excel的进程的方法