我正在寻找一种方法来获取onclick中定义的JavaScript代码.我正在使用.NET 2.0 C#Visual Studio 2005.
例:
<span id="foo" onclick+"window.location.href='someURL'>click here</span>
Run Code Online (Sandbox Code Playgroud)
我的目标是获取字符串"window.location.href ='someURL'".
场景:
用户点击Web页面元素,例如上面显示的标记,在WebBrowser控件内部.然后点击标签被吹罚至H tmlElement object.
在WebBrowser控件中我然后调用HtmlElement object's getAttribute("onclick")它,它只给我" System .__ ComObject".
我已经搜索了如何处理它然后发现它可以被铸造然后获得价值.
if (tag.GetAttribute("onclick").Equals("System.__ComObject"))
{
Console.WriteLine("dom elem >>>>>>>>>>> " + tag.DomElement.ToString());
mshtml.HTMLSpanElementClass span = (mshtml.HTMLSpanElementClass)tag.DomElement;
Console.WriteLine("js value ===>" + span.onclick);
}
Run Code Online (Sandbox Code Playgroud)
输出:
dom elem >>>>>>>>>>> mshtml.HTMLSpanElementClass
js value ===> System.__ComObject
Run Code Online (Sandbox Code Playgroud)
如图所示,span.onclick仍然给我System .__ ComObject,我做错了什么?
在为什么的HtmlElement的的getAttribute()方法返回"mshtml.HTMLInputElementClass",而不是属性的值? 这家伙说它在他的情况下工作,我跟着它,但我的有点不工作......
UPDATE
研究,研究.....
我可以在我的C#项目中添加引用VisualBasic.dll然后调用该方法来找出这个系统是谁.__ ComObject确实是.
Console.WriteLine(Microsoft.VisualBasic.Information.TypeName(span.onclick));
Run Code Online (Sandbox Code Playgroud)
输出:
JScriptTypeInfo
Run Code Online (Sandbox Code Playgroud)
看起来这是一个JScript类型......我该如何访问这个对象?
更多详情
以上描述基于我目前的项目.该项目旨在创建像Selenium IDE这样的东西.它使用WebBrowser控件.
Selenium IDE创建了3种不同的东西来记录Web文档中的元素.
1. actionType
2. xpath
3. …Run Code Online (Sandbox Code Playgroud) 我正在尝试自动化Outlook Web Access网站,填写一些文本框并单击按钮,
我可以在第一页(登录)和提交按钮中找到相关元素,所以我通过了登录阶段,我的问题是找到带有蒙版文本框的某个页面内的元素,我附上了3个步骤的快照,以及对象的DOM图像.
$IE = New-Object -ComObject InternetExplorer.Application
$URL = 'https://somewebsite/ecp/?rfr=owa&p=PersonalSettings/Password.aspx'
$IE.Visible = $true
$IE.Navigate($URL)
While ($IE.Busy -eq $true) {Start-Sleep -Milliseconds 2000}
$ie.Document.getElementById('username').value = "username"
$ie.Document.getElementById('password').value = "password"
$Submit = $ie.Document.getElementsByTagName('Input') | ? {$_.Type -eq "Submit"}
$Submit.click()
Run Code Online (Sandbox Code Playgroud)
到目前为止这么好,我的问题从里面的页面开始,我只是找不到密码字段的textboxes元素,
这里还有这些元素的DOM快照:
我真的很感激任何帮助
我在MS Visual Web Developer 2008 Express Ed上进行开发时遇到了问题.在Windows7 64位操作系统上开发ASP.NET C#.
我正在尝试打开Excel文档,但它给了我 Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))
我确实将构建配置到所有处理器(任何CPU,x64,x86),但它不起作用.我在互联网上搜索了答案,但无法找到如何处理它.
奇怪的是,当我在Microsoft Visual C#2010 Express上开发时,在同一系统上运行的代码相同!怎么会?是不是同样的dll工作?
我是否需要更改该COM dll以便它可以在x64系统上运行?
请帮帮我,我该怎么办?
我的代码是:
using Excel = Microsoft.Office.Interop.Excel;
xlApp = new Excel.Application();
__Log("Openning " + excelFileName);
xlWorkBook = xlApp.Workbooks.Open(excelFileName, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(2);
Run Code Online (Sandbox Code Playgroud) 我正在做一个程序,我想做一个反射,但是为此,我需要一个Type类的Object,对吗?使用.GetProperties()方法...所以我尝试了这个:
Type typeName = simObjects.getType();
但是.GetType()返回“ System .__ COMObject”。这没有帮助。.typeof()也会发生同样的情况。我搜索并找到了另一个代码,这个代码:
Type typeName = (Type)Microsoft.VisualBasic.Information.TypeName(simObjects);
但是此方法返回一个String,而我在System.Type中需要它,请问有什么帮助吗?
我有一个directShow过滤器:MyFilter.ax
当我尝试使用Regsvr32实用程序注册MyFilter.ax时,它不会出现任何错误或任何消息(成功或失败).但是过滤器未注册.
Regsvr32实用程序适用于我的其他过滤器.
为什么Regsvr32 deoes不给出任何成功或失败的消息?如何调试我的Regsvr32故障成功?用于注册directshow过滤器的任何替代实用程序可能会给出有意义的消息?
最好的祝愿
更新:
我在虚拟机上安装了干净的win7操作系统.然后再次尝试register.Fail而没有来自regsvr32的消息响应.
但是再在虚拟机上安装一个干净的win7操作系统.然后进行所有更新.在我进行更新后,regsvr32工作并安装我的过滤器....我不知道是什么原因导致regsvr32失败以及什么样的更新修复它.或者它真的是一个更新问题......
我正在尝试使用 Powershell 修改 MSI 文件的内容。为此,我创建了一个 WindowsInstaller.Installer 实例,然后使用 $installer.OpenDatabase 和 $database.OpenView。类似的功能在 VBScript 中也可以使用,而且我已经看到在线示例似乎可以正常工作。
$installer = new-object -comobject "WindowsInstaller.Installer"
$database = $installer.OpenDatabase("C:\Temp\Setup.msi", 1)
Run Code Online (Sandbox Code Playgroud)
对于上述代码,我收到错误消息“方法调用失败,因为 [System.__ComObject] 不包含名为‘OpenDatabase’的方法。”
$installer = new-object -comobject "WindowsInstaller.Installer"
$database = $installer.InvokeMethod("OpenDatabase","C:\Temp\Setup.msi", 1)
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用 $installer.InvokeMethod,我会收到同样的错误“方法调用失败,因为 [System.__ComObject] 不包含名为‘InvokeMethod’的方法。”
任何帮助将非常感激。
谢谢。
只有时候(我还没有注意到一个模式),当我右键单击一个项目(各种类型的项目)并选择"时,VS2010显示以下错误(我希望属性页的主体是)"属性":

我通常可以在重启VS2010后查看项目页面.我正在使用RTM版本.
什么可能导致此错误?
可以从这个新的Com对象($ ie)获取进程ID吗?
$ie=New-Object -comobject InternetExplorer.Application
$ie.visible=$true
$ie.Navigate("www.stackoverflow.com")
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过以下代码访问Excel文件:
Microsoft.Office.Interop.Excel.Application ObjExcel
= new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook book;
Microsoft.Office.Interop.Excel.Worksheet sheet;
Excel.Range range1 = null, range2 = null;
CultureInfo ci = new CultureInfo("en-US");
Thread thisThread = Thread.CurrentThread;
thisThread.CurrentCulture = new CultureInfo("en-US");
book = ObjExcel.Workbooks.Open(LinguisticInstructionsFileName);
Run Code Online (Sandbox Code Playgroud)
book 变量的最后一行内容是System.__ComObject在不同的应用程序代码中工作且变量具有...Excel.WorkbookClass。
所以我想问一下这种奇怪行为的原因可能是什么。我已经尝试使用额外的 Missing.Value 参数调用 Workbooks.Open 但结果是相同的。
我无法使用 Powershell将 Word 2010 (14.0.x) 文档保存为另存为或关闭。从网上的所有 tuts 看来,它应该可以与 2.0 一起使用,但我不再拥有它了。
简单案例:
$Path = "C:\MyDoc.docx"
$Word = New-Object -comobject Word.Application
$Word.Visible = $True #Do this to close it out without task manager
$Doc = $Word.Documents.Open($Path)
$Doc.SaveAs($Path)
$Doc.Close()
Run Code Online (Sandbox Code Playgroud)
此时一切正常,直到保存和关闭:
Argument: '1' should be a System.Management.Automation.PSReference. Use [ref].
At line:5 char:1
+ $Doc.SaveAs($Path)
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : NonRefArgumentToRefParameterMsg
Argument types do not match
At line:6 char:1
+ $Doc.Close()
+ ~~~~~~~~~~~~
+ …Run Code Online (Sandbox Code Playgroud) comobject ×10
powershell ×4
c# ×3
asp.net ×1
automation ×1
browser ×1
com ×1
directshow ×1
excel ×1
gettype ×1
hresult ×1
html ×1
installation ×1
interop ×1
process ×1
rcw ×1
reflection ×1
regsvr32 ×1
selenium-ide ×1
system.type ×1
windows ×1