如何在VB.NET中检查“打开/另存为”对话框是否打开

如何在VB.NET中检查“打开/另存为”对话框是否打开,vb.net,process,system.diagnostics,user32,Vb.net,Process,System.diagnostics,User32,我已经编写了一个vb.net应用程序来启动一个外部应用程序(notepad.exe),然后打开位于“D:\test.txt”中的txt文件。 我使用键盘事件来实现这一点 步骤1:打开记事本 Process.Start("notepad.exe") 步骤2:引发键盘事件Ctrl+O以打开打开对话框 keybd_event(VK_CONTROL, &H45, 0, 0) keybd_event(VK_O, 0, 0, 0) keybd_event(VK_CONTROL, &H45

我已经编写了一个
vb.net
应用程序来启动一个外部应用程序(notepad.exe),然后打开位于“D:\test.txt”中的txt文件。 我使用键盘事件来实现这一点

步骤1:打开记事本

Process.Start("notepad.exe")

步骤2:引发键盘事件Ctrl+O以打开打开对话框

keybd_event(VK_CONTROL, &H45, 0, 0)
keybd_event(VK_O, 0, 0, 0)
keybd_event(VK_CONTROL, &H45, KEYEVENTF_KEYUP, 0)
步骤3:等待2秒钟

Thread.Sleep(2000)
步骤4:引发键盘事件,在文件名文本框中键入文件路径“D:\Test.txt”。

问题:有时打开对话框操作需要更多的时间(超过2000毫秒),因此文件路径键入事件会在打开对话框之前启动。我增加了睡眠时间,但这个问题没有完全解决

是否有任何方法可以使用记事本进程id检查是否打开了打开对话框


我尝试过使用,但没有得到结果。

每次打开或关闭记事本时,PID都会改变。我建议使用图像名称来检查它是否打开。不过要注意这个选项,因为如果必须打开实例,这将导致问题

我可以推荐
Process.Start(“notepad.exe”,“D:\test.txt”)
作为替代方案吗?我对此投了反对票,因为我不明白为什么它对其他人有用。如果您想让用户在应用程序中编辑文本,可以使用textbox控件进行编辑。我原来的外部应用程序不是记事本。这是另一种产品。但另一种产品也总是有不同的PID编号