使用GeckoFx60以编程方式上传文件(工作于29,而不是工作于60)

时间:2019-05-06 14:50:12

标签: xul gecko geckofx xulrunner

我花点时间通过GeckoFX60 C#上传文件。  它可以在GeckoFX29上完美运行,但不能在60上完美运行。

在过去的版本中,我使用了以下代码:

var fileNames = new IntPtr[1];
fileNames[0] = new Gecko.CustomMarshalers.WStringMarshaler().MarshalManagedToNative("c:\\myfile.jpg");
var domInput = Xpcom.QueryInterface<nsIDOMHTMLInputElement (aux2.DOMElement);
                                       domInput.MozSetFileNameArray(fileNames, (uint)fileNames.Length);
Marshal.ReleaseComObject(domInput);

然后我将触发更改事件:

 var ev = webbrowser.Document.CreateEvent("Event");
var webEvent = new Event((mozIDOMWindowProxy)webbrowser.Window.DomWindow, ev.DomEvent as nsISupports);
 webEvent.InitEvent("change", true, true);
el2.GetEventTarget().DispatchEvent(ev);

但是现在,在GeckoFX60中MozSetFileNameArray不可用。 我试图重新整合它并包含它,但是当我使用它时会崩溃。

我注意到现在该元素: HTMLInputElement

具有MozSetFileArray和MozSetFileNameArray,但是每当我使用它们时,都会出现错误。

有人使用GeckoFX60以编程方式成功上传文件吗?  我要实现的是加载具有输入type = file的表单,并自动完成输入和上传(无需用户进行任何交互)。

过去3天,我一直在绞尽脑汁,希望有人能提供帮助:)

谢谢!

0 个答案:

没有答案