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

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

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

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

#1

Post by Taksaporn »

หลังจากที่แก้ 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: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

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

#2

Post by snasui »

: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

Post by Taksaporn »

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