我想实现一个shell上下文菜单“向左/向右打开”,用户可以打开一个文件,新窗口被重新定位以占据屏幕的左/右半部分。基本上我只是调用Process.Start(fileName)
,并获取进程MainWindowHandle
,然后将句柄传递SetWindowPos
给设置窗口的位置。
但是某些应用程序(如 Word)作为单例实例运行,因此Process.Start("new.docx")
只需将文件名传递给正在运行的实例,然后返回null
,因此我无法获取窗口句柄来进行重新定位。
有解决方法吗?
Any approach (preferred written in C#) is welcome.
PS。我知道我可以只使用EnumWindows
列出所有顶级窗口并让用户选择他喜欢重新定位的窗口。但那是另一种使用场景。我想在 shell 上下文菜单中实现该功能。