C# System.Diagnostics.Process发送邮件&修改内存中值&发送表格格式内容邮件

来源:互联网 发布:icloud备份微信数据 编辑:程序博客网 时间:2024/06/02 05:31

 StringBuilder sb = new StringBuilder("mailto:?");
   sb.Append("subject=");
  sb.Append(dgv.Rows[e.RowIndex].Cells["工位"].Value+" ");
sb.Append(Convert.ToDateTime(dgv.Rows[e.RowIndex].Cells["日期"].Value).ToString("yyyy-MM-dd"));
 sb.Append(dgv.Rows[e.RowIndex].Cells["班次"].Value);
 sb.Append(dgv.Rows[e.RowIndex].Cells["机台"].Value+"异常");
sb.Append("&body=hi,%0d发生时间:"); //%0d表示回车换行
 sb.Append(dgv.Rows[e.RowIndex].Cells["发生时间"].Value);
sb.Append("%0d异常程度:" + dgv.Rows[e.RowIndex].Cells["异常程度"].Value);
  sb.Append("%0d异常描述:" + dgv.Rows[e.RowIndex].Cells["异常描述"].Value);

 System.Diagnostics.Process.Start(sb.ToString());

或用以下方法

using System.Runtime.InteropServices;

 public class Win32
    {
        [DllImport("shell32.dll", EntryPoint = "ShellExecuteA")]
        public static extern int ShellExecute(
         int hwnd,
         String lpOperation,
         String lpFile,
         String lpParameters,
         String lpDirectory,
         int nShowCmd
         );
    }

 Win32.ShellExecute(0, string.Empty, sb.ToString(), string.Empty, string.Empty, 1);

----修改内存值

using System.Threading;

namespace WindowsApplication1
{
    public partial class frmProcessMemory : Form
    {
        public frmProcessMemory()
        {
            InitializeComponent();
        }
        private const int BaseAddress = 0x00A35DB4;
        private const string ProcessName = "notepad";

        private void frmProcessMemory_Load(object sender, EventArgs e)
        {
           // while (true)
            //{
                if (Helper.GetPidByProcessName(ProcessName) == 0)
                {
                    label1.Text=("对不起,您还没有启动红色警戒Ⅱ游戏!");
                  
                    return;
                }
                var moneyAddress = Helper.ReadMemoryValue(BaseAddress, ProcessName) + 0x24C;//基址+偏移地址
                Helper.WriteMemoryValue(moneyAddress, ProcessName, 999999999);

              Helper.WriteMemoryValue(0x005402AA, ProcessName, 999999999);//直接写入地址
                label1.Text=(DateTime.Now + ":" + Helper.ReadMemoryValue(moneyAddress, ProcessName));
                Thread.Sleep(1000);
           // }

        }
    }
}

---

using System.Runtime.InteropServices;
using System.Diagnostics;


namespace WindowsApplication1
{
    public abstract class Helper
    {
        #region API

        [DllImport("kernel32.dll")]
        public static extern bool ReadProcessMemory
            (
            IntPtr hProcess,
            IntPtr lpBaseAddress,
            IntPtr lpBuffer,
            int nSize,
            IntPtr lpNumberOfBytesRead
            );

        [DllImportAttribute("kernel32.dll")]
        public static extern bool WriteProcessMemory
            (
            IntPtr hProcess,
            IntPtr lpBaseAddress,
            int[] lpBuffer,
            int nSize,
            IntPtr lpNumberOfBytesWritten
            );

        [DllImportAttribute("kernel32.dll")]
        public static extern IntPtr OpenProcess
            (
            int dwDesiredAccess,
            bool bInheritHandle,
            int dwProcessId
            );

        [DllImport("kernel32.dll")]
        private static extern void CloseHandle
            (
            IntPtr hObject
            );

        #endregion

        #region 方法

        /// <summary>
        /// 根据窗口标题获取PID
        /// </summary>
        /// <param name="windowTitle">窗口标题</param>
        /// <returns></returns>
        public static int GetPidByTitle(string windowTitle)
        {
            int rs = 0;
            Process[] arrayProcess = Process.GetProcesses();
            foreach (Process p in arrayProcess)
            {
                if (p.MainWindowTitle.IndexOf(windowTitle) != -1)
                {
                    rs = p.Id;
                    break;
                }
            }
            return rs;
        }

        /// <summary>
        /// 根据进程名获取PID
        /// </summary>
        /// <param name="processName">进程名字</param>
        /// <returns></returns>
        public static int GetPidByProcessName(string processName)
        {
            Process[] arrayProcess = Process.GetProcessesByName(processName);
            foreach (Process p in arrayProcess)
            {
                return p.Id;
            }
            return 0;
        }

        /// <summary>
        /// 根据窗口标题查找窗口句柄
        /// </summary>
        /// <param name="title">窗口标题</param>
        /// <returns></returns>
        public static IntPtr FindWindow(string title)
        {
            Process[] ps = Process.GetProcesses();
            foreach (Process p in ps)
            {
                if (p.MainWindowTitle.IndexOf(title) != -1)
                {
                    return p.MainWindowHandle;
                }
            }
            return IntPtr.Zero;
        }

        /// <summary>
        /// 读取内存中的值
        /// </summary>
        /// <param name="baseAddress">地址</param>
        /// <param name="processName">进程名</param>
        /// <returns></returns>
        public static int ReadMemoryValue(int baseAddress, string processName)
        {
            try
            {
                var buffer = new byte[4];
                IntPtr byteAddress = Marshal.UnsafeAddrOfPinnedArrayElement(buffer, 0); //获取缓冲区地址
                IntPtr hProcess = OpenProcess(0x1F0FFF, false, GetPidByProcessName(processName));
                ReadProcessMemory(hProcess, (IntPtr)baseAddress, byteAddress, 4, IntPtr.Zero); //将制定内存中的值读入缓冲区
                CloseHandle(hProcess);
                return Marshal.ReadInt32(byteAddress);
            }
            catch
            {
                return 0;
            }
        }

        /// <summary>
        /// 将值写入指定内存地址中
        /// </summary>
        /// <param name="baseAddress">地址</param>
        /// <param name="processName">进程名</param>
        /// <param name="value"></param>
        public static void WriteMemoryValue(int baseAddress, string processName, int value)
        {
            IntPtr hProcess = OpenProcess(0x1F0FFF, false, GetPidByProcessName(processName)); //0x1F0FFF 最高权限
            WriteProcessMemory(hProcess, (IntPtr)baseAddress, new[] { value }, 4, IntPtr.Zero);
            CloseHandle(hProcess);
        }

        #endregion
    }

}

 ////////////发送HTML表格格式内容邮件

private string GetHTMLData(string title,DataTable dt, int startCol)
        {
            StringBuilder sb = new StringBuilder(title);
            sb.Append("<html><body><table border='1' cellpadding='0' cellspacing='0' style='border-collapse: collapse' BorderColor='#222222' bgcolor='#FFFFFF'>");
            int rowCount = dt.Rows.Count;
            int colCount = dt.Columns.Count;
            sb.Append("<tr>");
            for (int i = startCol; i < colCount; i++)
            {
                sb.Append("<td width=70>" + dt.Columns[i].ColumnName + "</td>"); 
            }
            sb.Append("</tr>");
            for (int i = 0; i < rowCount; i++)
            {
                sb.Append("<tr>");
                for (int j = startCol; j < colCount; j++)
                {
                    sb.Append("<td> " + dt.Rows[i][j].ToString() + "</td>"); 
                }
                sb.Append("</tr>");
            }
            sb.Append("</table></body></html>");
            return sb.ToString();
        }

private  bool SendHTMLMail(string SendFrom, string SendTo, string SendSubject, string SendBody)
        {
            bool flag;
            try
            {
                string username = Environment.UserName;
                MailMessage message = new MailMessage();
                message.From = new MailAddress(SendFrom);
                message.To.Add(SendTo);
                message.Subject = SendSubject;
                message.Body = SendBody;
                message.BodyEncoding = Encoding.UTF8;

                message.IsBodyHtml = true;
                message.Priority = MailPriority.Normal;  
                SmtpClient sc=new SmtpClient();
                sc.Host="172.66.222.22";
                sc.Send(message);
                flag = true;
            }
            catch
            {
                flag = false;
            }
            return flag;
        }

 

原创粉丝点击