如何将退出命令发送到当前的 ffmpeg.exe
How can I send quit command to current ffmpeg.exe
var fpath="C:''TVT_"+cur_date+"_"+cur_time+".avi";
Components.utils.import("resource://gre/modules/FileUtils.jsm");
var env = Components.classes["@mozilla.org/process/environment;1"]
.getService(Components.interfaces.nsIEnvironment);
var shell = new FileUtils.File(env.get("COMSPEC"));
var args = ["/c", "cd.. & cd.. & C: & cd C:/ffmpeg/bin & record.bat "+fpath];
var process = Components.classes["@mozilla.org/process/util;1"]
.createInstance(Components.interfaces.nsIProcess);
process.init(shell);
process.runAsync(args, args.length);
- 我不想使用 taskkill.exe、/MIN、/C、/B,而是我想退出这个 ffmpeg 进程
- 我阅读了有关CMDOW的信息,但在system32目录中没有找到cmdow.exe。
- 那么如何在运行 ffmpeg 进程的同一窗口中发送退出命令呢?
将 Windows XP Service Pack 2 与 Firefox 12 配合
使用谢谢。。
这不是一件小事 - Firefox 没有任何内置功能,这意味着您需要为此使用 js-ctypes 并直接调用 Win32 API 函数。Win32 - 获取应用程序的主 Wnd 句柄描述了如何获取应用程序的顶级窗口,之后可以向其发送WM_QUIT
消息。这种方法实际上有效:
Components.utils.import("resource://gre/modules/ctypes.jsm");
var userlib = ctypes.open("user32");
var HWND = ctypes.voidptr_t;
var UINT = ctypes.uint32_t;
var WPARAM = ctypes.uint16_t;
var LPARAM = ctypes.uint32_t;
var LRESULT = ctypes.uint32_t;
var DWORD = ctypes.uint32_t;
var WNDENUMPROC = ctypes.FunctionType(ctypes.stdcall_abi,
ctypes.bool,
[HWND, LPARAM]).ptr;
var WM_CLOSE = 0x0010;
var EnumWindows = userlib.declare(
"EnumWindows", ctypes.winapi_abi,
ctypes.bool,
WNDENUMPROC, LPARAM
);
var GetWindowThreadProcessId = userlib.declare(
"GetWindowThreadProcessId", ctypes.winapi_abi,
DWORD,
HWND, DWORD.ptr
);
var IsWindowVisible = userlib.declare(
"IsWindowVisible", ctypes.winapi_abi,
ctypes.bool,
HWND
);
var SendMessage = userlib.declare(
"SendMessageW", ctypes.winapi_abi,
LRESULT,
HWND, UINT, WPARAM, LPARAM
);
var callback = WNDENUMPROC(function(hWnd, lParam)
{
var procId = DWORD();
GetWindowThreadProcessId(hWnd, procId.address());
if (procId.value == pid && IsWindowVisible(hWnd))
SendMessage(hWnd, WM_CLOSE, 0, 0);
return true;
});
EnumWindows(callback, 0);
userlib.close();
我对此进行了测试,并可以使用它成功关闭记事本窗口(如果文本尚未保存,则会出现通常的警告,因此它是干净关闭)。然而,在您的情况下,问题可能是您没有直接运行 ffmpeg,而是通过命令行 shell 运行 - 因此您将关闭可能不会终止 ffmpeg 的命令行窗口。我想你只需要尝试一下,如果它不起作用,你可能不得不查看窗口的标题而不是它的进程ID(这显然是一种不太可靠的方法)。
相关文章:
- 如何从Node.js执行.exe文件
- 从服务器返回exe文件,并通过浏览器在客户端下载
- 未处理的 JavaScript 异常终止 MSAppHost/WWAHost.exe
- 如何测试运行 node-fluent-ffmpeg(异步模块)的自定义模块
- 从web应用程序运行.exe文件
- 量角器-通过量角器上传文件/运行exe
- 使用chrome在本地计算机中运行exe文件
- Firefox 扩展中的无窗口嵌入式 exe
- 将 xml(从 exe)呈现到新窗口
- 是否可以在客户端使用 silverlight c# 或 javascript 运行 exe 文件
- 使用 Node.js 执行 EXE 文件
- 加载 exe 文件并从网页设置变量
- 如何在没有用户批准的情况下使用 JS 从 Web 浏览器运行和安装 EXE 文件
- 在Unity WebPlayer中使用FFmpeg
- 使用NodeJS和FFMpeg Fluent API的视频字幕
- 如何将退出命令发送到当前的 ffmpeg.exe
- 我可以使用网络将 m3u8 文件的所有片段下载为一个 mp4 文件吗(没有 ffmpeg )
- HTML to exe>阻止 Internet Explorer 对象中的 JavaScript 和 ActiveX 安
- 从浏览器执行.EXE文件
- 什么命令可以找到音频文件的编解码器由ffmpeg.exe