Как ссылаться на сборки Paint.NET напрямую с помощью C#

Я хотел обратиться к сборкам Paint.NET напрямую и использовать его функциональность таким образом. Я не знаю, как использовать.dll-файл PaintDotNet.Core.dll и использовать его функциональность в C# Visual Studio любой помогает. пожалуйста

хочу сослаться на эти сборки: C:\Program Files\Paint.NET\PaintDotNet.*.dll. Затем поэкспериментируйте с классами в этих пространствах имен.

Коды:-

  private void button2_Click(object sender, EventArgs e)
{
    OpenFileDialog ofd = new OpenFileDialog();
    string filename = "";

    if (ofd.ShowDialog() == DialogResult.OK)
    {
        filename = System.IO.Path.GetFullPath(ofd.FileName);
    }
   // MessageBox.Show(filename, "file");
    pictureBox1.ImageLocation = filename;
    pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

    DialogResult result = MessageBox.Show("Do you wish to continue?", "Save Changes", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    if (result == DialogResult.Yes)
    {
        System.Diagnostics.Process.Start(@"C:\Program Files\Paint.NET\PaintDotNet.exe");
       // here i need to perform the function like
       //Open + O`
       //ctrl + Shift + L)` then `
       //(ctrl + Shift + G)`. then save 
       //`ctrl + Shift + S`
    }
    else
    {
        return;
    }
}

2 ответа

Решение

Просто следуйте инструкции, чтобы отправить ярлык в другое приложение

Добавьте это пространство имен в класс

using System.Runtime.InteropServices;

Тогда объявите SetForegroundWindow функция с DllImport заявление. это создаст объект этого метода, который был создан в User32.dll

[DllImport ("User32.dll")]
static extern int SetForegroundWindow(IntPtr point);

И добавьте следующий код к нажатию кнопки или в любом месте вашего проекта. Этот код будет перемещаться OpenFileDialog открыть существующий файл в Paint.NET приложение.

private void button1_Click(object sender, EventArgs e)
{
    Process p = Process.GetProcessesByName("PaintDotNet").FirstOrDefault();
    if (p != null)
    {
        SetForegroundWindow(p.MainWindowHandle); //Set the Paint.NET application at front
        SendKeys.SendWait("^(o)"); //^(o) will sends the Ctrl+O key to the application. 
    }
}

большинство программистов допустили ошибку между Ctrl+O а также Ctrl+o похоже, но значение ascii для обоих ключей разное. Итак, убедитесь, что ключевой символ не в верхнем регистре. Вы также можете прочитать полную информацию о SendKey метод на мсдн. Вы можете сделать любую комбинацию клавиш и отправить через SendWait() метод.

Просто добавьте одну или несколько или все библиотеки в ваш проект. в качестве измерений состояний затем используйте проводник объекта.

ПРИМЕЧАНИЕ: не берите в голову материал.xaml или реальные проекты, которые я пытаюсь визуализировать SharpDX D3D11 в приложении wpf для создания редактора карт (и без инструментария (не спрашивайте меня, почему. Я сумасшедший)).

Клянусь, у меня есть код прошлой ночью, ты пытаешься автоматизировать paint.net? вам нужно будет создать плагин, который сделает процесс более упорядоченным, чем запуск второго приложения.

скриншот vs2012

Другие вопросы по тегам