我们使用Web IDE创建插件.我的test.dll位于数据文件夹中.如何通过js-ctypes加载它?
像"c:\ test.dll"这样的绝对路径没有问题,但我不能用这个路径来分发它.
var lib = ctypes.open("c:\\test.dll");
// works but how i get path to addon inner data directory?
Run Code Online (Sandbox Code Playgroud) 如果我不首先使用 WM_SETICON 来设置图标,那么 WM_GETICON 总是返回 0。这很奇怪。请帮忙。
这是我的代码,可以复制粘贴到暂存器并运行。
当执行SendMessage(targetWindow_handle, WM_GETICON , ICON_SMALL, ctypes.voidptr_t(0)), hIconSmall_origandhIconBig_orig时总是返回 0 我不知道为什么。如果您首先在窗口上使用 WM_SETICON,那么它会正确获取 HICON,但整个目的是获取默认图标。
Cu.import('resource://gre/modules/ctypes.jsm');
var user32 = ctypes.open('user32.dll');
/* http://msdn.microsoft.com/en-us/library/windows/desktop/ms644950%28v=vs.85%29.aspx
* LRESULT WINAPI SendMessage(
* __in HWND hWnd,
* __in UINT Msg,
* __in WPARAM wParam,
* __in LPARAM lParam
* );
*/
var SendMessage = user32.declare('SendMessageW', ctypes.winapi_abi, ctypes.uintptr_t,
ctypes.voidptr_t,
ctypes.unsigned_int,
ctypes.int32_t,
ctypes.voidptr_t
);
var WM_GETICON = 0x007F;
var WM_SETICON = 0x0080;
var ICON_SMALL = 0;
var ICON_BIG = 1;
var …Run Code Online (Sandbox Code Playgroud) 我有这个:
"ctypes.UInt64("7")"
它是由这个返回的:
var chars = SendMessage(hToolbar, TB_GETBUTTONTEXTW, local_tbb.idCommand, ctypes.voidptr_t(0));
Run Code Online (Sandbox Code Playgroud)
所以
console.log('chars=', chars, chars.toString(), uneval(chars));
Run Code Online (Sandbox Code Playgroud)
给
'chars=' 'UInt64 { }' "7" 'ctypes.UInt64("7")'
Run Code Online (Sandbox Code Playgroud)
所以我可以通过 go 来获取值chars.toString(),但我必须在上面运行一个parseInt,反正有没有像属性一样读取它?喜欢chars.UInt64?
为简单起见,我正在将基于XUL的Firefox插件转换为基于SDK的版本.我在基于XUL的版本中使用的XPCOM模块似乎可以工作,但ci.nsIFile的行为有所不同.
我无法弄清楚如何导航到目前位于目录最高级别的smartProxy.py.
在XUL版本中,smartProxy.py位于chrome/bin/smartproxy.py上.我使用下面的命令来执行程序,它可以正常工作.
getExeFile: function() {
var file = cc["@mozilla.org/file/directory_service;1"].getService(ci.nsIProperties).get("ProfD", ci.nsIFile);
file.append("smartProxy.py");
return file;
},
Run Code Online (Sandbox Code Playgroud)
下面是它执行的地方,它应该可以全面了解附加组件的工作原理.
start: function() {
if (this.process && this.process.isRunning)
return;
this.process = cc["@mozilla.org/process/util;1"].createInstance(ci.nsIProcess);
this.process.init(this.getExeFile());
this.process.runAsync([], 0, this.processObserver);
this.setProxy();
this.executeObservers();
},
Run Code Online (Sandbox Code Playgroud)
我如何找到smartProxy.py以便它可以被执行?
import os
os.chdir('my directory')
data = open('text.txt', 'r')
data = data.replace(",", " ")
print(data)
Run Code Online (Sandbox Code Playgroud)
我得到错误:
AttributeError:'_io.TextIOWrapper'对象没有属性'replace'