Require Administration Permission in VS 2013

C++ Project

  1. Right click the Project, click Properties
  2. Navigate to Linker
  3. Navigate to Manifest File
  4. Edit the UAC Execution Level to requireAdministrator

C# project:

Edit the properties\app.manifest, modify the permission node as the one in the specifications there.

Debug with UAC:

Start the VisualStudio with Administrator permission, and you can debug the projects need UAC.

通过javascript控制flash

昨天研究一个用C#写的自动化应用,针对一个网页的按钮进行点击操作,这一步可以用javascript很自然的解决(见:利用JavaScript从UIWebView获取、修改、提交网页内数据的方法)。

怎么在C#中利用webbrowser运行javascript可以参见:C#中让WebBrowser运行Javascript脚本

然后页面居然弹出来一个flash,第二步的操作时针对这个flash的。为了解决这个问题,只好对flash进行反编译(用到了一个叫做“硕思闪客精灵”的软件),才看到里面的代码。好在于网上有很多关于javascript和flash的交互方法。可以通过javascript来调用flash中的方法。在查看了flash的源代码之后,发现需要调用其中一个函数(叫做function吧)。

实现方法就是:
第一步,拿到flash对象
好在于在页面内部我直接找到了这个函数,要针对不同的浏览器用不同的方式获取,代码如下:

  1. function getSWF(a){
  2.   if(navigator.appName.indexOf(\”Microsoft\”)!=-1){
  3.     return window[a];
  4.   } else {
  5.     if(window.navigator.userAgent.indexOf(\”Firefox\”)!=-1){
  6.       return document[a];
  7.     } else {
  8.       if(window.navigator.userAgent.indexOf(\”Chrome\”)!=-1){
  9.         return document[a];
  10.       } else {
  11.         if(window.navigator.userAgent.indexOf(\”Safari\”)!=-1){
  12.           return document.getElementById(a);
  13.         } else {
  14.           if(window.navigator.userAgent.indexOf(\”Opera\”)!=-1){
  15.             return document[a];
  16.           }
  17.         }
  18.       }
  19.     }
  20.   }
  21. }
  1. flash=getSWF(‘flashName’);

第二步,调用flash中的方法

  1. flash.function();

另外一些可用的方法如下:
播放:Play()
停止: StopPlay()
停止并回到首帧: Rewind()
下一帧: TGetProperty(nameOfTargetMovieClip, propertyIndex) and GotoFrame(frameNum)
方大或缩小: Zoom(relative percentage)
发送数据: SetVariable(variableName, variableValue)
读取数据: GetVariable(variableName)

C#中让WebBrowser运行Javascript脚本

C#中可以让Webbrowser运行Javascript脚本来实现各种自动化操作,比如点击网页上的按钮,输入用户名密码等等。代码也很简单:

>>>>>>>>>>>>>>>>>>>>方法一:
只需要先获取HtmlElement,然后对获取的element进行操作即可,比如:

  1.             HtmlElement btn = webBrowser1.Document.GetElementById(“aBtn”);
  2.             if (btn != null)
  3.                 btn.InvokeMember(“click”);

>>>>>>>>>>>>>>>>>>>>方法二:
给页面注入javascript代码:

  1. HtmlElement ele = webBrowser1.Document.CreateElement(“script”);
  2. ele.SetAttribute(“type”, “text/javascript”);
  3. ele.SetAttribute(“text”, “someJavaScript”);
  4. webBrowser1.Document.Body.AppendChild(ele);

最后一句话执行之后会自动执行javascript

>>>>>>>>>>>>>>>>>>>>方法三:
运行页面中已经有的脚本:

  1. webBrowser1.Document.InvokeScript(“someInPageJavaFunction”, null);

>>>>>>>>>>>>>>>>>>>>另外:
另外webbrowser中加载网页,如果遇到脚本错误的话,默认会弹出对话框,这有时候比较烦人,不过可以关闭之:

  1. webbrowser.ScriptErrorsSuppressed = true;