Вам определенно нужен собственный плагин, расширение или ActiveX, установленные на клиенте.
В случае расширения Firefox вы можете использовать jsctypes для удобной упаковки вызовов.
Если вы используете Jetpack API, включенный в Firefox 4, все это будет JavaScript и даже не потребует перезапуска браузера.
Вот пример из mozilla.org для базового Hello World:
/* Load JS Ctypes Javascript module */
require("chrome").Cu.import("resource://gre/modules/ctypes.jsm");
/* Load windows api dll */
var lib = ctypes.open("user32.dll");
/* Declare the signature of the function we are going to call */
var msgBox = lib.declare("MessageBoxW",
ctypes.stdcall_abi,
ctypes.int32_t,
ctypes.int32_t,
ctypes.ustring,
ctypes.ustring,
ctypes.int32_t);
var MB_OK = 3;
/* Do it! */
var ret = msgBox(0, "Hello world", "title", MB_OK);
/* Display the returned value */
alert("MessageBox result : "+ret);
lib.close();