因此,我正在构建一个将记事本实例停靠在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();
}
我正在寻找一种方法来告诉现有的记事本进程打开我创建的文件,或者关闭该记事本进程并使用文件路径打开另一个记事本进程。我不太确定要达到我在这里寻找的最佳方法是什么。