Die zu implementierten Funktionen sind im folgenden Bild angezeigt. Die spezifischen Details sind wie folgt:
Jetzt werde ich einige andere Funktionen der Software vorstellen. Ich hoffe, dass jeder davon profitieren wird.
Simulator -Suchprodukte
Wenn Sie Bestellungen bürsten, können Sie keine Produkt -URL direkt erhalten und die Kaufseite eingeben. Sie müssen eine künstliche Suche simulieren.
Es gibt zwei Schwierigkeiten in diesem Prozess:
1) asynchrone Laden der Produktliste; 2) Seiten drehen und Screenshots machen;
Im Garten spiele ich nicht mehr mit einem großen Schwert vor Guan Gong.
Laden Sie den Schlüsselcode direkt hoch:
I: Suchen Sie nach Produkten und drehen Sie Seiten
öffentlicher Bool? SearchProduct (TaskdetailModel TaskdetailData) {bool? result = null; bool issidex = true; bool isList = true; webbrowsertask.instance.setProperties (); webbrowsertask.instance.cleardocumentCompletEd (); webbrowsertask.instance.documentCompleted +(Wbsendersarch, wbessearch) => system.windows.WeBrowser, Wbessearch) => {{{{{{oder als System.Windows.Forms.WebBrowser; System.Windows.Forms.htmldocument currentdoc = currentwb.document; System.Windows.Forms.WebBrowserReadyState.Complete){#region Home Search if (wbUrl.Contains("www.taobao.com")){if (isIndex == true){isIndex = false;taskDetailData.DetailRemark = String.Format(@"Enter keywords""{0}""Search for product...", TaskdetailData.TaskName); . hitem.children; li.getAttribute ("className"); if (licklass.contains ("ausgewählt") {System.Windows.Forms.htmlelement q = currentDoc.getElementById ("q"); System.Windows.Forms.htmlelement BtnSearch = CurrentDoc.GetOc.GetOc.GetEchbyid ("j_tsearchForm". (q! = null && btnsearch! = null) {q.focus (); Submission.jpg "," "); CaptureImage.CaptureWebpagearea (Currentdom, SavePath); = false; func <bool> func = () => {bool asynctag = false; asynctag = true; asynctag return; TaskdetailData); result = true;}}, null);}}#Endregion -Produktliste}}; // documentCompleted End System.windows.application.current.dispatcher.invoke (neues System.Action (() => {webbrowsertask.instance.navigate ("https://www.taoba.com/");}); (Ergebnis! = null) {break;}} Rückgabeergebnis;} II: Da jede Seite ungewöhnlich geladen ist, wählen Sie die entsprechende Zeit für einen Screenshot der Webseite und erfassen die gesamte Webseite:
/*Da die Steuerung enthalten ist, muss die Invoke -Methode mit System verwendet werden. String.Format (@"D:/{0} .jpg", Guid.Newguid (). toString ()); CaptureImage.CaptureWebpage (WebBrowStask, SavePath);}), System.windows.Threading.DispatcherPriority.back -Page); </summary> //// <param name = "web"> </param> //// <param name = "savePath"> </param> public static void captureWebpage (System.Windows.Forms.WebBrowser Web, String SavePath) {Rechteck by. 0), size = neue Größe (Körper. use (bitmap bitmap = new bitmap (imGrectangle.width, imGrectangle.Height)) {iviewObject ivo = web.Document Intptr.zero, intptr.zero, HDC, Ref imGrectangle, Ref Docrectangle, intptr.zero, 0); Schnappen Sie einen bestimmten Bereich der Webseite:
/// <summary>//// Intercept part of the web page /// </summary>/// <param name="htmlDom"></param>/// <param name="savePath"></param>public static void CaptureWebPageArea(mshtml.HTMLDocument htmlDom, String savePath){String saveDir = System.io.path.getDirectoryName (SavePath); if (! htmldom.body.offseteight) size = new Size ((int) System.Windows.SystemParameters.PrimaryScreenwidth, (int) System.Windows.SystemParameters.PrimaryScreenHeight)}; rectangle imGrectangle = docrectangle; using (bitmap bitmap = new Bitmap (imGrectangle.width, imGrectangle.Height)) {iviewObject ivo = htmldom as iviewObject; Verwendung (Graphics g = graphics Intptr.zero, intptr.zero, HDC, Ref imGrectangle, Ref Docrectangle, intptr.zero, 0); Es gibt viele interessante Ausschnitte in diesem Code. Freunde, die interessiert sind, werden es herausfinden.