:!: โปรดทราบ Image
    1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ดครับ Image
    2. การสมัครสมาชิกเพื่อโพสต์คำถาม ดาวน์โหลดไฟล์แนบไปศึกษา ทำตามขั้นตอนด้านล่างครับ
      1. สมัครสมาชิก ดูขั้นตอนตาม Link นี้ครับ => สมัครสมาชิก กรณีลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่นี่ครับ => Reset รหัสผ่านImage
      2. Login เข้าระบบโดยคลิก Login ตรงมุมขวาบนของหน้านี้ Image กรณีมีปัญหาในการเข้าใช้งาน คลิก Link นี้เพื่อแจ้งผู้ดูแลระบบครับ => ติดต่อผู้ดูแลระบบ
    3. เมื่อ Login แล้วสามารถกำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษได้ที่ Link นี้ครับ => ตั้งค่าส่วนตัว Image
    4. วิธีการตั้งและตอบกระทู้ดูได้ที่ Link นี้ครับ => วิธีการตั้งและตอบกระทู้ Image
    5. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ Link นี้ครับ => จัดรูปแบบตัวอักษร และสามารถกำหนดขนาดตัวอักษรใน Browser ได้ที่นี่ครับ ==> กำหนดขนาดตัวอักษรใน Browser Image

กระทู้นี้ขอสอบถามเรื่องการ จับเวลาเพื่อใช้กับwebbrowser หน่อยครับ

ฟอรัมถาม-ตอบเกี่ยวกับ C#
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถาม-ตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบ ต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. อธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. ควรแนบตัวอย่างไฟล์มาที่ฟอรั่มนี้เพื่อเพิ่มความสะดวกในการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่น นอกจากนี้ไม่ควรแนบไฟลที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. สำหรับคำถามเกี่ยวกับ VBA ให้ลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน ควรโพสต์ Code ให้แสดงเป็น Code เพื่อสะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. แจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Taksaporn
Member
Member
Posts: 19
Joined: Fri Sep 30, 2016 4:04 pm

กระทู้นี้ขอสอบถามเรื่องการ จับเวลาเพื่อใช้กับwebbrowser หน่อยครับ

#1

Postby Taksaporn » Sun Oct 16, 2016 10:45 pm

หลังจากที่แก้ code cmd ไปได้ก็ต้องทำ timer เพื่อจับเวลาการทำงานของWebbrowser
เข้าประเด็น ตอนนี้ติดปัญหา ในการจับเวลา ที่เว็บ เว็บหนึ่ง เวลาที่ต้องกาจับ คือ เมื่อเว็บทำการโหลดให้จับเวลา แล้วเมื่อเว็บโหลดเสร็จ ให้เวลาหยุดเล้วเซฟไว้ที่ textbox
ทีนี้ปัญหาที่เจอคือ เมื่อเว็บโหลดเสร็จ webbrowser_completed event มันกลับไม่ทำงาน แต่เว็บมันโหลดเสร็จ (จากการสังเกตจากตาเรา)
ต่อมาคือ ขณะที่เว็บโหลดอยู่ หน้าต่างform จะค้างและทำไรไม่ได้เลย สักพักเว็บมันจะกลับมาใช้งานได้ตามปกติ ระหว่างที่ค้างเวลาก็ค้างไปด้วยแล้วก็ไม่นับเผื่อให้
โค้ดการทำงาน

Code: Select all

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Timers;
using System.Windows.Forms;

namespace Auto_Connection_WD_MycloudPR4100
{
    public partial class Auto_Connecttion_WD_MycloudPR4100 : Form
    {
       
        int count = 0;
        System.Timers.Timer t;
        int h, m, s;

        private async void btn_connext_Click(object sender, EventArgs e)
        {
            serialPort1.PortName = portComboBox.SelectedItem + "";
            serialPort1.BaudRate = 115200;
            serialPort1.Open();
            btn_connext.Enabled = false;
            listStatu.Items.Add("Connected....");
            await Task.Delay(1000);
            listStatu.Items.Add("Please Click ''TEST''");
        }

        private void btn_TestAuto_Click(object sender, EventArgs e)
        {
            //  webBrowser1.Url = new Uri(txtAddress.Text);
            timer1.Start();
            groupBox3.Enabled = false;
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            // MessageBox.Show(webBrowser1.Url.ToString());
        }

        private void btn_close_Click(object sender, EventArgs e)
        {
            serialPort1.Write("5");
            serialPort1.Write("6");
            serialPort1.Write("7");
            serialPort1.Write("8");
            Application.Exit();
        }

        private async void timer1_Tick(object sender, EventArgs e)
        {
            if (count <= 7)
            {
                timer1.Stop();
                // webBrowser1.Url = new Uri("http://mycloudpr4100/");
                webBrowser1.Url = new Uri(txtAddress.Text);
                await Task.Delay(2000);
                webBrowser1.Document.GetElementById("login_login_button").InvokeMember("Click");
                await Task.Delay(2000);
                webBrowser1.Document.GetElementById("id_logout").InvokeMember("Click");
                await Task.Delay(1500);
                webBrowser1.Document.GetElementById("home_reboot_link").InvokeMember("Click");
                await Task.Delay(1500);
                //webBrowser1.Document.GetElementById("popup_apply_button").InvokeMember("Click");
                count = count + 1;
                label44.Text = count.ToString();
                listStatu.Items.Add("Please Waiting");
                serialPort1.Write("1");
                await Task.Delay(20000);
                pictureON1.Visible = true;
                pictureOFF1.Visible = false;
                lbOn1.Text = "ON";
                lbOn1.BackColor = Color.GreenYellow;
                listStatu.Items.Add("Test Drive 2.0 [1]ON...");
            }
            Application.DoEvents();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            serialPort1.Write("1");
            pictureON1.Visible = true;
            pictureOFF1.Visible = false;
            lbOn1.Text = "ON";
            lbOn1.BackColor = Color.GreenYellow;
            button2.Enabled = false;
            listStatu.Items.Add("Test Drive 2.0 [1]ON...");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            serialPort1.Write("2");
            pictureON2.Visible = true;
            pictureOFF2.Visible = false;
            lbOn2.Text = "ON";
            lbOn2.BackColor = Color.GreenYellow;
            button3.Enabled = false;
            listStatu.Items.Add("Test Drive 2.0 [2]ON...");
        }

        private void button4_Click(object sender, EventArgs e)
        {
            serialPort1.Write("3");
            pictureON3.Visible = true;
            pictureOFF3.Visible = false;
            lbOn3.Text = "ON";
            lbOn3.BackColor = Color.GreenYellow;
            button4.Enabled = false;
            listStatu.Items.Add("Test Drive 3.0 [1]ON...");
        }

        private void button5_Click(object sender, EventArgs e)
        {
            serialPort1.Write("4");
            pictureON4.Visible = true;
            pictureOFF4.Visible = false;
            lbOn4.Text = "ON";
            lbOn4.BackColor = Color.GreenYellow;
            button5.Enabled = false;
            listStatu.Items.Add("Test Drive 3.0 [2]ON...");
        }

        private void button6_Click(object sender, EventArgs e)
        {
            serialPort1.Write("5");
            serialPort1.Write("6");
            serialPort1.Write("7");
            serialPort1.Write("8");
            //
            pictureON1.Visible = false;
            pictureOFF1.Visible = true;
            lbOn1.Text = "OFF";
            lbOn1.BackColor = Color.Red;
            //
            pictureON2.Visible = false;
            pictureOFF2.Visible = true;
            lbOn2.Text = "OFF";
            lbOn2.BackColor = Color.Red;
            //
            pictureON3.Visible = false;
            pictureOFF3.Visible = true;
            lbOn3.Text = "OFF";
            lbOn3.BackColor = Color.Red;
            //
            pictureON4.Visible = false;
            pictureOFF4.Visible = true;
            lbOn4.Text = "OFF";
            lbOn4.BackColor = Color.Red;
            button2.Enabled = true;
            button3.Enabled = true;
            button4.Enabled = true;
            button5.Enabled = true;
            btn_TestAuto.Enabled = true;
            listStatu.Items.Add("Clear Test Button [AUTO] open.\n");
        }

        private void portComboBox_SelectionChangeCommitted(object sender, EventArgs e)
        {
            listStatu.Items.Add("Please Click Connect...");
            btn_connext.Visible = true;
        }

        private async void btn_Shutdown_Click(object sender, EventArgs e)
        {
            webBrowser1.Url = new Uri(txtAddress.Text);
            await Task.Delay(2000);
            webBrowser1.Document.GetElementById("login_login_button").InvokeMember("Click");
            await Task.Delay(2000);
            webBrowser1.Document.GetElementById("id_logout").InvokeMember("Click");
            await Task.Delay(1500);
            webBrowser1.Document.GetElementById("home_shutdown_link").InvokeMember("Click");
            await Task.Delay(1500);
            //webBrowser1.Document.GetElementById("popup_apply_button").InvokeMember("Click");
            count = count + 1;
            label44.Text = count.ToString();
            listStatu.Items.Add("Please Waiting");
            serialPort1.Write("1");
            await Task.Delay(20000);
            pictureON1.Visible = true;
            pictureOFF1.Visible = false;
            lbOn1.Text = "ON";
            lbOn1.BackColor = Color.GreenYellow;
            listStatu.Items.Add("Test Drive 2.0 [1]ON...");
        }
        //-----------------------------------------MANUAL----------------------------------------------------
        private async void btn_WakeMeOn_Click(object sender, EventArgs e)
        {
            Form1 frm = new Form1();
            MessageBox.Show(lbUser.Text);
            Process.Start("cmd.exe");
            await Task.Delay(500);
            SendKeys.Send("cd " + lbUser.Text + "{ENTER}");
            await Task.Delay(500);
            SendKeys.Send("Wolcmd.exe" + "{ENTER}");
            await Task.Delay(500);
            //wolcmd [mac address] [ip address] [subnet mask] [port number]
            SendKeys.Send("wolcmd " + lbMac.Text + " " + lbIP.Text + " " + lbSubnet.Text + "{ENTER}");
            await Task.Delay(500);
          //  SendKeys.Send("exit" + "{ENTER}");
        }

        //------------------------------Void Timer ----------------------------------------------------------
        //------------------------------Void Timer ----------------------------------------------------------
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            t.Stop();
            Application.DoEvents();
        }
        private void OntimeEvent(object sender, ElapsedEventArgs e)
        {

            Invoke(new Action(() =>
            {
                s += 1;
                if (s == 60)
                {
                    s = 0;
                    m += 1;

                }
                if (m == 60)
                {
                    m = 0;
                    h += 1;
                }
                txtResult.Text = string.Format("{0}:{1}:{2}", h.ToString().PadLeft(2, '0'), m.ToString().PadLeft(2, '0'), s.ToString().PadLeft(2, '0'));

             }));
        }




        //------------------------------Void Timer ----------------------------------------------------------

        public Auto_Connecttion_WD_MycloudPR4100()
        {
            InitializeComponent();
            serialPort1.Close();
        }

        private void Auto_Connecttion_WD_MycloudPR4100_Load(object sender, EventArgs e)
        {
            //-------------------SerialPort---------------------
            string[] strPortNames = SerialPort.GetPortNames();

            foreach (string n in strPortNames)
            {
                portComboBox.Items.Add(n);
            }
            //-------------------SerialPort----------------------

            t = new System.Timers.Timer();
            t.Interval = 1000;
            t.Elapsed += OntimeEvent;
            t.Start();
            btn_connext.Visible = false;
            btn_TestAuto.Enabled = false;
        }
    }
}


User avatar
snasui
Site Admin
Site Admin
Posts: 21972
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Contact:

Re: กระทู้นี้ขอสอบถามเรื่องการ จับเวลาเพื่อใช้กับwebbrowser หน่อยครับ

#2

Postby snasui » Mon Oct 17, 2016 8:52 pm

:D ลองดู Link นี้ซึ่งใช้ DocumentCompleted() Event เข้ามาช่วยว่าใช้ได้หรือไม่ครับ :arrow: http://www.code-kings.com/2012/12/creat ... sharp.html

Taksaporn
Member
Member
Posts: 19
Joined: Fri Sep 30, 2016 4:04 pm

Re: กระทู้นี้ขอสอบถามเรื่องการ จับเวลาเพื่อใช้กับwebbrowser หน่อยครับ

#3

Postby Taksaporn » Fri Oct 21, 2016 11:18 am

DocumentCopleted รู้เรื่องนี้ลึกเลย ทีนี้ แต่ใช้กับ Project นี้ไม่ได้ แต่ก็ขอบคุณครับ
ทดลองมาหลายวันเลย :thup: :cp: :cp: :cp: :cp:


Return to “C#.NET”

Who is online

Users browsing this forum: No registered users and 1 guest