0

I wanted to reference the Paint.NET assemblies directly and use a its functionality that way. i dont know how to use the .dll file PaintDotNet.Core.dll and use it functionality in C# visual studio any helps. Please

want to reference to these assemblies: C:\Program Files\Paint.NET\PaintDotNet.*.dll Then poke around the classes in those namespaces.

Codes:-

  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;
    }
}
4

2 回答 2

1

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

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

我发誓我昨晚有代码你想自动化paint.net吗?您将不得不制作一个插件,这将使流程比启动第二个应用程序更加简化。

vs2012截图

于 2014-10-09T23:35:35.950 回答
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+O看起来Ctrl+o很相似,但是两个键的ascii值不同。因此,请确保关键字符不是大写的。您还可以在msdnSendKey上阅读有关方法的完整信息。您可以进行任何组合键并通过该方法发送。SendWait()

于 2014-10-24T02:10:03.050 回答