如何使用C#直接引用Paint.NET程序集

时间:2014-10-09 20:44:40

标签: c# visual-studio dll dll-reference paint.net

我想直接引用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 个答案:

答案 0 :(得分:1)

只需将一个或部分或全部库添加到项目中即可。作为测量状态然后使用对象资源管理器。

注意:不要介意.xaml的东西或我试图在wpf应用程序中渲染SharpDX D3D11的实际项目来制作地图编辑器(并且没有工具包(不要问我为什么。我很疯狂) )。

我发誓我昨晚有代码你试图自动化paint.net吗? 你必须制作一个插件,这样可以使流程更加简化,而不必启动第二个应用程序。

vs2012 screen shot

答案 1 :(得分:1)

只需按照说明将快捷键发送到另一个应用程序

将此命名空间添加到类

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+OCtrl+o之间的错误似乎相似,但两个密钥的ascii值都不同。因此,请确保关键字符不是大写字母。您还可以在msdn上阅读有关SendKey方法的完整信息。您可以进行任何组合键并通过SendWait()方法发送。