由于公司安全问题,想知道每台机器都运行了什么软件。
所以要做这样一个东西,调用hijackthis,生成报告,然后自动把报告添加到autolook的附件中发送给我。关键是现在没有思路,麻烦高手指条明路~~
调用exe,模仿点击按钮需要怎么做。
autolook如何用程序添加附件~

解决方案 »

  1.   

    ProcessStartInfo startInfo = new ProcessStartInfo(要调用的程序地址);
    Process qqProcess=new Process();
    qqProcess.StartInfo=startInfo;
    qqProcess.Start();发E-Mail的话,可以自己用.net写一段程序来发。Visual Studio直接支持
      

  2.   

    用windows自带的"任务计划"来执行exe文件,
    定时发送邮件
    在控制面版里
      

  3.   

    System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
    Encoding eEncod = Encoding.GetEncoding("gb2312");
    mail.BodyEncoding = eEncod;
    mail.SubjectEncoding = eEncod;
    mail.From = new MailAddress("[email protected]","张三", eEncod);
    mail.IsBodyHtml =true;//设置是否为html邮件
    //增加附件sAttachments是存放附件地址的string[]
    for (int i = 0; i < sAttachments.Length; i++)
    {
    mail.Attachments.Add(new Attachment(sAttachments[i]));
    }
    System.Net.Mail.SmtpClient smtp = new SmtpClient();
    smtp.UseDefaultCredentials = true;
    smtp.Host ="smtp.sina.com";
    smtp.Port = 25;
    smtp.Credentials = new NetworkCredential(this.sUser, this.sPassword);
    smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
    string sMailBody = "<b>测试邮件</b>";
    string sMailTitle = "这是一个html邮件";
    ReturnMessage oReturnMessage = new ReturnMessage();
    mail.Body = sMailBody;
    mail.Subject = sMailTitle;
    mail.To.Add("[email protected]");
    try
    {
    smtp.Send(mail);
    }
    catch (Exception ex)
    {
    //显示出错信息
    }
      

  4.   

    你是说outlook2003里用程序控制发邮件的时候会提示你“是否允许发送”并且让你点一下“是”  是么?
      

  5.   

    不是,发送邮件的问题 blestcc(我穿墙而过)  已经解决了。
    现在是要点击一下hijackthis上的生成报告的按钮,用来生成系统的报告。
      

  6.   

    或者调用API
    先捕获按钮的窗口句柄然后用
    [DllImport("User32.dll",EntryPoint="SendMessage")]
    private static extern int SendMessage(IntPtr hWnd,int Msg, IntPtr wParam, string lParam);
      

  7.   

    如何获得窗口中按钮的IntPtr呢?
    这是个什么样的值?
    SendMessage(qqProcess.Handle, 273, 1001, ret);这么写不对,我应该怎么弄?
      

  8.   

    按钮的IntPtrl这个也要用API来获得
    [DllImport("user32.dll",EntryPoint="FindWindowEx")]
    private static extern IntPtr FindWindowEx(IntPtr hwndParent,IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
    要借助一下spy++
      

  9.   

    Process[] process = Process.GetProcessesByName("hijackthis");
    // 这步没有问题
    IntPtr hEdit = FindWindowEx(process[0].MainWindowHandle, IntPtr.Zero, string.Empty, "New users quickstart");
    // 这里返回的始终是0,怎么弄?
      

  10.   

    个人觉得还是不调用其它程序发送email好
    因为这个调用其它程序在消息处理和操作方面不稳定
    还是用c#自己写一个smtp或pop3的邮件发送程序
    很easy的
    compare调用其它程序发送来说
    稳定
      

  11.   

    who not use WMI and System.Net.Mail?
      

  12.   

    Process[] process = Process.GetProcessesByName("hijackthis");
    // 这步没有问题
    IntPtr hEdit = FindWindowEx(process[0].MainWindowHandle, IntPtr.Zero, string.Empty, "New users quickstart");
    // 这里返回的始终是0,怎么弄?
    你借助spy++看一下hijackthis窗口的句柄,进程ID跟窗口句柄不是一回事
      

  13.   

    没有用过hijackthis,如果“New users quickstart”是按钮的话用这个:
    IntPtr hEdit = FindWindowEx(process[0].MainWindowHandle, IntPtr.Zero, "Button", "New users quickstart");试一试。
      

  14.   

    调用WinApi,FindWindow   // 用Spy++找到按钮句柄
    SendMessage  // 发送MouseDown消息和MouseUp消息来模拟鼠标单击好好看看使用方法,或搜一下相关源码。