【发布时间】:2021-11-18 23:02:39
【问题描述】:
我想在运行时使用 c++ 程序关闭我的 txt 文件或 chrome。我们可以通过ShellExecute(NULL, "open", "C://File Path" , NULL, NULL, SW_SHOWNORMAL); 或SendMessage(WM_CLOSE) 做到这一点。
如果是,比如何?
【问题讨论】:
-
相当难。您真的不知道文件将如何打开。总的来说,我认为这是不可能的。
-
我不确定是否可以使用 WinApi。需要获取持有 txt 文件的打开文件句柄的进程的 PID。 IIRC 有一些技巧可以在 Linux 系统下获得这些关系,但对于 Windows 则不太确定。
-
@πάντα ῥεῖ 您可以在 Windows 中终止该进程,但可能用户正在编辑文件,或者 Chrome 打开了其他选项卡。例如,您可以使用 UI 自动化来定位单个应用程序,然后关闭选项卡或其他任何内容。
-
@πάν PID 在 POSIX 之外不是很有用。 TerminateProcess 接受一个进程句柄,CreateProcess 方便地返回。如果你需要找到打开文件的进程,那么that's supported也一样。
-
如果有多个text和chrome,如何选择?这真的不是一件容易的事。另请参阅How to effectively kill a process in C++ (Win32)?