打开Notepad.exe,然后使用打开过程,命令记事本打开目录中的现有文件

时间:2018-11-25 18:01:15

标签: c# wpf system.io.file

因此,我正在构建一个将记事本实例停靠在wpf窗口中的应用程序。现在,我的wpf窗口中有一个空的文本文件。在我的方法中,我编写JSON或XML文件。完成这些操作后,我想使用现有的Notepad.exe进程并命令它打开文件浏览器并打开我刚刚创建的文件。这可能吗?

如果不可能的话,将记事本文件停靠在窗口中的一种好方法是什么,以便能够打开各种文本文件?

编辑:

不知道我应该包括哪些详细信息,但是我正在打开记事本过程,如下所示:

 public SampleCodeWindow()
    {
        InitializeComponent();
        Loaded += (s, e) =>
                  {
                      Process p = Process.Start("notepad.exe");
                      p.WaitForInputIdle(); // Allow the process to open it's window
                      var windowHandle = new WindowInteropHelper(this).Handle;
                  };

        panel = new System.Windows.Forms.Panel();
        host.Child = panel;
        dockIt("notepad.exe");
    }


private void dockIt(string utility)
        {
            if (hWndDocked != IntPtr.Zero)
            {
                return;

            }

            pDocked = Process.Start(utility);

            while (hWndDocked == IntPtr.Zero)
            {
                pDocked.WaitForInputIdle(1000); //wait for the window to be ready for input;
                pDocked.Refresh();              //update process info
                if (pDocked.HasExited)
                {
                    return; //abort if the process finished before we got a handle.
                }
                hWndDocked = pDocked.MainWindowHandle; //cache the window handle
            }
            //Windows API call to change the parent of the target window.
            //It returns the hWnd of the window's parent prior to this call.
            hWndOriginalParent = SetParent(hWndDocked, panel.Handle);

            //Wire up the event to keep the window sized to match the control
            SizeChanged += window_SizeChanged;
            //Perform an initial call to set the size.
            AlignToPannel();
        }

        private void AlignToPannel()
        {
            MoveWindow(hWndDocked, 0, 0, panel.Width, panel.Height, true);
        }

        void window_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            AlignToPannel();
        }

我正在寻找一种方法来告诉现有的记事本进程打开我创建的文件,或者关闭该记事本进程并使用文件路径打开另一个记事本进程。我不太确定要达到我在这里寻找的最佳方法是什么。

0 个答案:

没有答案