114 lines
4.8 KiB
C#
114 lines
4.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.Diagnostics;
|
|
using ConnectPoint;
|
|
namespace ConnectPoint
|
|
{
|
|
public partial class message : Form
|
|
{
|
|
public static string ProcessName;
|
|
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
|
|
public static extern int WinExec(string exeName, int operType);
|
|
//调用API
|
|
[System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, ExactSpelling = true)]
|
|
public static extern IntPtr GetForegroundWindow(); //获得本窗体的句柄
|
|
[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetForegroundWindow")]
|
|
public static extern bool SetForegroundWindow(IntPtr hWnd);//设置此窗体为活动窗体
|
|
//定义变量,句柄类型
|
|
public IntPtr Handle1;
|
|
Timer timer2 = new Timer();
|
|
/// <summary>
|
|
/// 弹窗参数
|
|
/// </summary>
|
|
/// <param name="_name">标题名称</param>
|
|
/// <param name="_memory">内存地址</param>
|
|
public message(string _name,string _memory)
|
|
{
|
|
InitializeComponent();
|
|
ProcessName = _name;
|
|
this.Text = _name + ".exe - 应用程序错误";
|
|
this.label1.Text = "\""+_memory +"\"指令引用的\""+_memory+"\"内存。该内存不能为\"read\"。" ;
|
|
this.label2.Text = "要终止程序,请单击\"确定\"。";
|
|
this.label3.Text = "要调试程序,请单击\"取消\"。";
|
|
this.picICO.Image= Properties.Resources.Error;
|
|
}
|
|
private void message_Load(object sender, EventArgs e)
|
|
{
|
|
Handle1 = this.Handle;
|
|
timer2.Tick += new EventHandler(timer2_Tick);
|
|
timer2.Interval = 2000;
|
|
timer2.Start();
|
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
WinExec("taskkill.exe /im "+ ProcessName + ".exe /f /t", 0);
|
|
//Process[] MyProcess1 = Process.GetProcessesByName(ProcessName);
|
|
//Process MyProcess = new Process();
|
|
////设定程序名
|
|
//MyProcess.StartInfo.FileName = "cmd.exe";
|
|
////关闭Shell的使用
|
|
//MyProcess.StartInfo.UseShellExecute = false;
|
|
////重定向标准输入
|
|
//MyProcess.StartInfo.RedirectStandardInput = true;
|
|
////重定向标准输出
|
|
//MyProcess.StartInfo.RedirectStandardOutput = true;
|
|
////重定向错误输出
|
|
//MyProcess.StartInfo.RedirectStandardError = true;
|
|
////设置不显示窗口
|
|
//MyProcess.StartInfo.CreateNoWindow = true;
|
|
////执行强制结束命令
|
|
//MyProcess.Start();
|
|
//MyProcess.StandardInput.WriteLine("ntsd -c q -p " + (MyProcess1[0].Id).ToString());//直接结束进程ID
|
|
//MyProcess.StandardInput.WriteLine("Exit");
|
|
Close();
|
|
}
|
|
catch { }
|
|
}
|
|
|
|
private void button2_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
WinExec("taskkill.exe /im " + ProcessName + ".exe /f /t", 0);
|
|
//Process[] MyProcess1 = Process.GetProcessesByName(ProcessName);
|
|
//Process MyProcess = new Process();
|
|
////设定程序名
|
|
//MyProcess.StartInfo.FileName = "cmd.exe";
|
|
////关闭Shell的使用
|
|
//MyProcess.StartInfo.UseShellExecute = false;
|
|
////重定向标准输入
|
|
//MyProcess.StartInfo.RedirectStandardInput = true;
|
|
////重定向标准输出
|
|
//MyProcess.StartInfo.RedirectStandardOutput = true;
|
|
////重定向错误输出
|
|
//MyProcess.StartInfo.RedirectStandardError = true;
|
|
////设置不显示窗口
|
|
//MyProcess.StartInfo.CreateNoWindow = true;
|
|
////执行强制结束命令
|
|
//MyProcess.Start();
|
|
//MyProcess.StandardInput.WriteLine("ntsd -c q -p " + (MyProcess1[0].Id).ToString());//直接结束进程ID
|
|
//MyProcess.StandardInput.WriteLine("Exit");
|
|
Close();
|
|
}
|
|
catch { }
|
|
}
|
|
private void timer2_Tick(object sender, EventArgs e)
|
|
{
|
|
if (Handle1 != GetForegroundWindow()) //持续使该窗体置为最前,屏蔽该行则单次置顶
|
|
{
|
|
SetForegroundWindow(Handle1);
|
|
//timer2.Stop();//此处可以关掉定时器,则实现单次置顶
|
|
}
|
|
}
|
|
}
|
|
}
|