using System; using System.Collections.Generic; using System.Linq; using System.Text; using sharpknife.Controls; #if WIN32 using MSHTML; #else using mshtml; #endif using System.Windows.Navigation; using System.Threading; using sharpknife.Utils; using sharpknife.Strategies; namespace sharpknife.Commands { public class NeoBuxAdPrizeCommand : Command { private WebBrowserControl browser; private PTCSource source; private Strategy strategy; private int counter = -1; private bool navigated = false; public NeoBuxAdPrizeCommand() { this.Group = "Browser"; this.Timeout = 5 * 60; browser = WebBrowserControl.GetWebBrowserControl(); source = PTCSource.GetSource("NeoBux"); strategy = Strategy.GetStrategy(source.Name); } public override void Execute() { base.Execute(); browser.LoadCompleted += ParseAdsCommand_LoadCompleted; Debug = "Navigating"; browser.Navigate(source.PTCUrl); int navigationTimeout = 0; while (counter != 0) { if (!navigated) { Thread.Sleep(1000); navigationTimeout++; if (navigationTimeout > 30) { navigated = true; } Debug = counter == -1 ? "Sleeping" : string.Format("Sleeping. {0} remaining", counter); } else { navigationTimeout = 0; navigated = false; for (int i = 10; i >= 0; i--) { Thread.Sleep(1000); Debug = string.Format("Sleeping {0}s", i); } browser.Dispatcher.BeginInvoke(new ThreadStart(() => { Status = StatusCode.Paused; //Next IHTMLElement element = HtmlUtils.GetElement(browser.Document, "nxt_bt_a"); element.click(); Status = StatusCode.Executing; })); //Next //IHTMLElement element = HtmlUtils.GetElement(browser.Document, "nxt_bt_a"); //element.click(); //while (!(Status == StatusCode.Executing)) //{ // Thread.Sleep(1000); // Debug = "Sleeping"; //} //browser.Navigate(source.PTCUrl); } } for (int i = 10; i >= 0; i--) { Thread.Sleep(1000); Debug = string.Format("Sleeping {0}s", i); } browser.LoadCompleted -= ParseAdsCommand_LoadCompleted; Status = StatusCode.Completed; } void ParseAdsCommand_LoadCompleted(object sender, NavigationEventArgs e) { string uri = StringUtils.CleanUri(e.Uri.AbsoluteUri); string baseUrl = StringUtils.CleanUri(source.BaseUrl); string loginUrl = StringUtils.CleanUri(source.LogInUrl); string balanceUrl = StringUtils.CleanUri(source.BalanceUrl); string ptcUrl = StringUtils.CleanUri(source.PTCUrl); if (!StringUtils.Contains(uri, loginUrl) && strategy.CheckLogin(browser, source)) { browser.Navigate(source.LogInUrl); return; } else if (uri == ptcUrl) { //View Advertisements  IHTMLElementCollection elements = HtmlUtils.GetElementCollection(browser.Document, "a"); foreach (IHTMLElement element in elements) { if (element.innerText == "View Advertisements") { IHTMLAnchorElement link = (IHTMLAnchorElement)element; browser.Navigate(link.href); return; } } } else if (StringUtils.Contains(uri, ptcUrl)) { //39 IHTMLElement element = HtmlUtils.GetElement(browser.Document, "ap_h"); if (element != null) { counter = int.Parse(element.innerText); IHTMLAnchorElement link = (IHTMLAnchorElement)element; browser.Navigate(link.href); } else { browser.LoadCompleted -= ParseAdsCommand_LoadCompleted; Status = StatusCode.Completed; } return; } else if (StringUtils.Contains(uri, loginUrl)) { strategy.Login(browser, source); return; } else if (StringUtils.Contains(uri, "neobux.com/v/?xc")) { navigated = true; counter--; //for (int i = 0; i < 10; i++) //{ // Thread.Sleep(1000); //} //Next //IHTMLElement element = HtmlUtils.GetElement(browser.Document, "nxt_bt_a"); //element.click(); //IHTMLAnchorElement link = (IHTMLAnchorElement)element; //browser.Navigate(link.href); //browser.Navigate(source.PTCUrl); //browser.LoadCompleted -= ParseAdsCommand_LoadCompleted; //Status = StatusCode.Completed; return; } else { browser.Navigate(source.PTCUrl); return; } // //39 // //IHTMLElement element = HtmlUtils.GetElement(browser.Document, "ap_h"); //IHTMLAnchorElement link = (IHTMLAnchorElement)element; //browser.Navigate(link.href); //browser.LoadCompleted -= ParseAdsCommand_LoadCompleted; //Status = StatusCode.Completed; } } }