Командная строка скрыть / удалить при съемке экрана - PullRequest
3 голосов
/ 20 января 2012

У меня есть следующий код для создания скриншота, но единственная проблема, с которой я сталкиваюсь, это то, что он открывает командную строку и заставляет пользователя закрыть ее, могу ли я скрыть / удалить эту командную строку?

private const int TIMEOUT = 30000;
private const string TMP_NAME = "TMP_SHOT1.png";

protected void Page_Load(object sender, EventArgs e)
{
    theImage.ImageUrl = GetImage("http://www.google.com", "MyImage",
              Server.MapPath("~"),
              Convert.ToInt32("400"),
              Convert.ToInt32("400")
            );
}

public string GetImage(string url, string name, 
                       string rootDir, int width, int height)
{
    try
    {
        string fileName = rootDir + "\\" + TMP_NAME;
        GenerateScreenShot1(url, rootDir);
        System.Drawing.Image thumbImage = 
                      System.Drawing.Image.FromFile(fileName);
        fileName = rootDir + "\\" + name + ".png";
        if (File.Exists(fileName))
            File.Delete(fileName);

        thumbImage.Save(fileName, ImageFormat.Png);

        return name + ".png";
    }
    catch (Exception ex)
    {
        return null;
    }
}

public void GenerateScreenShot1(string url1, string rootDir1)
{
    string arguments = url1 + " " + rootDir1 + "\\" + TMP_NAME;
    Process myProcess = new Process();
    myProcess.EnableRaisingEvents = false;
    myProcess.StartInfo.RedirectStandardOutput = false;
    myProcess.StartInfo.CreateNoWindow = false;
    myProcess.StartInfo.UseShellExecute = true;
    myProcess.StartInfo.FileName = rootDir1 + "\\" + "IECapt.exe";
    myProcess.StartInfo.Arguments = arguments;
    myProcess.Start();
    myProcess.WaitForExit();
    myProcess.Close();
    myProcess.Dispose();
}

Для запуска приведенного выше кода вам нужно поместить IECapt.exe в корневую папку.

Ответы [ 3 ]

2 голосов
/ 20 января 2012

попробуйте

myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

также

Чтобы использовать ProcessWindowStyle.Hidden, свойство ProcessStartInfo.UseShellExecute должно иметь значение false.

отсюда http://msdn.microsoft.com/en-us/library/system.diagnostics.processwindowstyle.aspx

1 голос
/ 20 января 2012

Изменить строку

myProcess.StartInfo.CreateNoWindow = false;

с помощью

myProcess.StartInfo.CreateNoWindow = true;

http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.createnowindow.aspx

0 голосов
/ 20 января 2012

Попробуйте установить myproces.StartInfo.UseShellExecute = false;

...