Announcement

Collapse
No announcement yet.

การใช้งานโปรแกรม Auto Play Media Studio เบื้องต้น (ภาค1,2)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    มีหลายคนเรียกร้องกันมาว่า อยากเรียนรู้การเขียน Script Action ให้มากกว่านี้ ผมก็เลยจัดให้ครับ (เท่าที่จำเป็นต้องนำมาใช้งานเท่านั้น)
    ก่อนอื่นให้ท่านสร้างฟอร์มและปุ่ม 1 ปุ่มขึ้นมา เพื่อไว้ทดสอบสคริ๊ปที่เขียน
    ดับเบิ้ลคลิ๊กที่ปุ่ม เพื่อเปิดรายละเอียด ..คลิ๊กที่ Script เพื่อเปิด Editor ..คลิ๊กที่ Add Action เพื่อเปิด Wizard
    -------------------------------------------------------------------------
    1.สคริ๊ป Message Box แบบ คลิ๊กปิดเอง
    ที่ Step1 ..เลือกคลิ๊กที่ Dialog
    ที่ Step2 ..เลือกคลิ๊กที่ Dialog.Message ..คลิ๊ก Next ..คลิ๊ก Finish ..คลิ๊ก OK
    แล้วลองทดสอบดูครับ



    Comment


    • #17
      2.สคริ๊ป Message Box แบบ ตั้งเวลาปิดเอง
      ที่ Step1 ..เลือกคลิ๊กที่ Dialog
      ที่ Step2 ..เลือกคลิ๊กที่ Dialog.TimedMessage ..คลิ๊ก Next ..คลิ๊ก Finish ..คลิ๊ก OK
      แล้วลองทดสอบดูครับ (ตัวเลข 2000 หมายถึง ปิดตัวเองภายใน 2 วินาที)

      Code:
      Dialog.TimedMessage("Please Wait...", "Working...", 2000, MB_ICONINFORMATION);

      Comment


      • #18
        3.Message Box แบบมีเงื่อนไข
        Step1 Dialog
        Step2 ใช้ Dialog.Message ..เปลี่ยนจาก MB_OK เป็น MB_YESNO และใช้เงื่อนไข if else ร่วมด้วย
        เปลี่ยนตัวแปร จาก result เป็น BtnCode

        Comment


        • #19
          4.คำสั่งติดตั้งหรือรันโปรแกรม คำสั่งนี้จะอ้างที่เก็บโปรแกรมที่จะสั่งติดตั้งไว้ที่ CD_root ใน My Documents เสมอ
          ซึ่งอยู่ที่ C:\Documents and Settings\Administrator\My Documents\AutoPlay Media Studio 6.0 Projects\My Project\CD_Root\AutoPlay\Docs
          ที่ WiZard
          Step1 เลือก File
          Step2 เลือก File.Run

          Comment


          • #20
            5.คำสั่ง ปิดโปรแกรม มีอยู่ 2 คำสั่ง คือ
            Code:
            Application.Exit(0);
            Code:
            Window.Close(Application.GetWndHandle(), CLOSEWND_SENDMESSAGE);

            Comment


            • #21
              คำสั่ง Set เป็นคำสั่งที่ใช้กระทำอะไร?บางอย่างบน Object เช่น สั่งโพสท์ข้อความ เป็นต้น คำสั่งที่นำมาใช้มีดังนี้
              -โพสท์ข้อความลงบน Progress Bar
              นำ Progress Bar มาวางไว้บนฟอร์ม แล้วเขียนโค๊ด ดังนี้ (ใช้ Loop for steb)





              Comment


              • #22
                -หยุดการทำงานของปุ่ม หลังจาก กดติดตั้งไปแล้ว ป้องกันการกดปุ่มซ้ำอีกในระหว่างที่กำลังติดตั้ง
                Step1 Buton
                Step2 ใช้ Button.SetVisible

                Comment


                • #23
                  -โพสท์หรือเปลี่ยนข้อความบน Label (ฉลาก)
                  ..ให้ติดตั้งLabel ลงบนฟอร์ม
                  Step1 Label
                  Step2 ใช้ Label.SetText



                  -----------------------------------------------------------
                  หรืออีกแบบหนึ่ง ใส่เปอร์เซ็น ลงบน Progressbar ..ดังตัวอย่าง



                  Code:
                  min = 0
                  max = 100
                  step = 1
                  for x = min,max,step do
                  Progress.SetCurrentPos("Progress1", x);
                  Progress.SetText("Progress1","Current:".. x .."%");
                  Application.Sleep(100);
                  if x >= 100 then
                  Progress.SetCurrentPos("Progress1", 0);
                  Progress.SetText("Progress1", "");
                  end
                  end
                  Last edited by sak2005; 10 Sep 2009, 12:12:45.

                  Comment


                  • #24
                    รูปแบบการเขียนสคริ๊ปนั้น โดยทั่วไป เราสามารถนำ 'คำนิยาม เปรียบเทียบ' มาใช้ในการเขียนสคริ๊ปได้ ดังตัวอย่าง
                    เช่นเคยอีกแล้วครับ ต้องสร้างPage From ขึ้นมา พร้อมนำ Progressbar และปุ่ม มาวางบนฟอร์ม
                    ดับเบิ้ลคลิ๊กที่ปุ่ม เพื่อเปิดรายละเอียด

                    ----------------------------------------------------------------------------------------------------------------------
                    คลิ๊กที่เมนู Script เพื่อไปยังหน้า Script Editor ..จัดการเขียนสคริ๊ปลงไปดังนี้ ด้วยตัวช่วยเขียนสคริ๊ป
                    ..ให้คลิ๊กขวาบนพื้นที่ว่างบน Editor ..เลือกคลิ๊กที่ Quick Scripts และเลือกคลิ๊กที่ for loop (with step)


                    ----------------------------------------------------------------------------------------------------------------------
                    ได้เป็นสคริ๊ปพื้นฐานออกมา ดังรูป


                    :คำอธิบาย:
                    count คือ ตัวแปร
                    min, max, step คือคำเปรียบเทียบ อ้างอิง ของ string (ตัวเลข)
                    ----------------------------------------------------------------------------------------------------------------------
                    จัดการแก้ไขสคริ๊ป เพื่อให้ใช้งานได้อย่างสมบูรณ์ ตามรูปเลย



                    Comment


                    • #25
                      การใช้งานScript Action: StatusDlg
                      StatusDlg เป็นหน้าต่าง Progress Status สำเร็จรูป ที่โปรแกรมมีไว้ให้ เวลาจะใช้ก็ไม่จำเป็นต้องสร้างขึ้นมาอีก เรียกใช้งานจากในโปรแกรมได้เลย
                      และเขียนสคริ๊ปเพิ่มเติมเข้าไป เพื่อให้ Progress Status ทำงานตามสั่ง ดังนี้
                      -----------------------------------------------------------
                      ก่อนอื่นท่านต้องสร้าง Page Form และ Button เพื่อการทดสอบขึ้นมาก่อน (ดังรูป)


                      -------------------------------------------------------------------
                      จากนั้นก็ดับเบิ้ลคลิ๊กที่ปุ่ม เพื่อเปิดรายละเอียด เข้าไปเรียกใช้งานและเขียน Action Script ที่ Script Editor ..คลิ๊กที่ Add Action
                      Step1 ..เลือกคลิ๊กที่ StatusDlg
                      Step2 ..เลือกคลิ๊กที่ StatusDlg.Show
                      ต่อไปก็เขียนสคริ๊ปเพิ่มเติม เพื่อสั่งให้ Progressbar ทำงาน ดังนี้


                      -------------------------------------------------------------------
                      ลอง Preview ดูครับ Progressbar ก็จะทำงานได้ (ดังรูป)


                      --------------------------------------------------
                      อันนี้เป็นการใส่ % และข้อความ ลงไปใน StatusDlg ด้วย ..ดูรูป





                      Code:
                      StatusDlg.Show(MB_ICONNONE, false);
                      min = 0
                      max = 100
                      step = 1
                      for x = min,max,step do
                      StatusDlg.SetMeterPos(x);
                      StatusDlg.SetStatusText("Current Status:" ..x .."%");
                      StatusDlg.SetMessage("Working...");
                      Application.Sleep(100);
                      if x >= 100 then
                      Application.Sleep(500);
                      StatusDlg.SetStatusText("Completed.");
                      StatusDlg.SetMessage("Done.");
                      Application.Sleep(500);
                      StatusDlg.Hide();
                      end
                      end
                      Last edited by sak2005; 10 Sep 2009, 13:34:27.

                      Comment


                      • #26
                        StatusDlg progress to File Copy
                        การใช้ StatusDlg progress แสดงความคืบหน้า ในการก๊อบปี้ หรือคัดลอกไฟล์
                        ในกรณีย์นี้ เป็นการก๊อบปี้ไฟล์จาก FlashDrive มาไว้ที่ Desktop
                        และก๊อบปี้ไฟล์จาก Desktop มาไว้ใน FlashDrive
                        ก่อนอื่นให้ท่านสร้าง Page Form และ Button ขึ้นมา 2 ปุ่ม (ดังรูป)


                        --------------------------------------------------------
                        จากนั้นให้สร้างโฟลเดอร์ขึ้นมาใหม่ 2 โฟลเดอร์ ไว้สำหรับเก็บไฟล์
                        โฟลเดอร์หนึ่ง นำมาไว้ที่ Desktop ตั้งชื่อให้โฟลเดอร์ว่า.. DestBackup
                        และอีกโฟลเดอร์ นำมาไว้ใน FlashDrive ตั้งชื่อเสียใหม่ว่า.. FlashBackup
                        เสร็จแล้วให้ดับเบิ้ลคลิ๊กที่ปุ่ม ชื่อ Desktop to FlashDrive เข้าไปเขียนสคริ๊ปคำสั่ง ดังนี้

                        Code:
                        StatusDlg.Show(MB_ICONNONE, false);
                        File.Copy("C:\\Documents and Settings\\Administrator\\Desktop\\DestBackup\\*.*", "G:\\FlashBackup\\", true, true, false, true, nil);
                        error = Application.GetLastError();
                        StatusDlg.Hide();
                        if error ~= 0 then
                        Dialog.Message("Error", "There was an error copying the files to your system. Please try again.", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
                        else
                        Dialog.TimedMessage("", "Completed.", 2500, MB_ICONNONE);
                        end
                        ----------------------------------------------------------------------------------------------------
                        ดับเบิ้ลคลิ๊กที่ปุ่ม ชื่อ FlashDrive to Desktop เข้าไปเขียนสคริ๊ปคำสั่ง ดังนี้

                        Code:
                        StatusDlg.Show(MB_ICONNONE, false);
                        File.Copy("G:\\FlashBackup\\*.*", "C:\\Documents and Settings\\Administrator\\Desktop\\DestBackup\\", true, true, false, true, nil);
                        error = Application.GetLastError();
                        StatusDlg.Hide();
                        if error ~= 0 then
                        Dialog.Message("Error", "There was an error copying the files to your system. Please try again.", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
                        else
                        Dialog.TimedMessage("", "Completed.", 2500, MB_ICONNONE);
                        end
                        ------------------------------------------------------------------
                        แนะนำ:เพื่อความสดวกและรวดเร็ว ให้ก๊อบปี้โค๊ด แล้วนำไป paste ใส่ใน Script Editor ได้เลย.
                        อนึ่ง..การก๊อบปี้จาก FlashDrive to Desktop จะทำได้รวดเร็วกว่าการก๊อบปี้จาก Desktop to FlashDrive
                        ลองนำไปประยุกต์ใช้กับการก๊อบปี้จากแผ่นCD ลงสู่เครื่อง หรือ Drive to Drive ก็ได้นะครับ

                        Comment


                        • #27
                          (ภาค2) Script Action Wizard
                          การใช้งาน StatusDialog เบื้องต้น ..StatusDialog เป็น หน้าต่าง Progressbar สำเร็จรูป ที่โปรแกรมมีมาให้ ใช้งานได้ทันที ไม่ต้องสร้างขึ้นมาอีก
                          :คำสั่งและความหมาย:
                          -----------------------------------------------------
                          StatusDlg.Show 'หมายถึง สั่งแสดงหน้าต่าง Progressbar ดังรูป


                          -----------------------------------------------------
                          ถ้าจะให้ Progressbar บนหน้าต่าง เกิดการทำงาน ก็ต้องใส่รูปแบบสคริ๊ปคำสั่ง Loop For หรือ While ลงไปดังนี้
                          (ถ้าต้องการทดสอบ ก็ให้สร้าง Page Form และ Button ขึ้นมา แล้วใส่สคริ๊ปทั้งหมดลงไปที่ปุ่ม)
                          Loop For
                          Code:
                          StatusDlg.Show(MB_ICONNONE, false);  
                          Window.Hide(Application.GetWndHandle());  --คำสั่งปิดบัง Page Form ไม่ให้เห็นชั่วคราว เมื่อ StatusDlg ปรากฏขึ้น
                          for x = 0, 100, 1 do   --คำสั่งวนลูป
                          StatusDlg.SetMeterPos(x);   --คำสั่งให้แถบ progresbar เคลื่อนที่ ตั้งแต่ต้น(0) จนจบ(100)
                          Application.Sleep(100);   --คำสั่งหน่วงเวลา
                          if x >= 100 then
                          Application.Sleep(1000);
                          StatusDlg.Hide();
                          Window.Show(Application.GetWndHandle());   --เมื่อStatusDlg หายไปแล้ว จะปรากฏ Page Form ขึ้นมาแทน
                          end
                          end
                          -----------------------------------------------------------------------------------------------
                          Loop While
                          Code:
                          StatusDlg.Show(MB_ICONNONE, false);
                          Window.Hide(Application.GetWndHandle());
                          x = 0
                          while (x < 100) do
                          StatusDlg.SetMeterPos(x);
                          x = x + 1;
                          Application.Sleep(100);
                          if x >= 100 then
                          Application.Sleep(1000);
                          StatusDlg.Hide();
                          Window.Show(Application.GetWndHandle());
                          end
                          end

                          Comment


                          • #28
                            Function CallBackเป็นชุดคำสั่งที่ใช้สำหรับทำให้ StatusDlg Progressbar แสดงผลอัตโนมัติ
                            เมื่อกระทำอะไรบางอย่าง เช่น ก๊อบปี้ไฟล์ หรือ ซิปไฟล์ เป็นต้น
                            เรามาดูตัวอย่างคำสั่งก๊อบปี้ไฟล์ ที่ใช้ CallBack Function และ StatusDlg ..คำสั่งCallBackที่ใช้ก็คือคำสั่ง.. nil
                            ------------------------------------------------------------------------------------------
                            ให้ท่านสร้าง Page Form และ Button ขึ้นมา ..ดับเบิ้ลคลิ๊กที่ Button แล้วเขียนสคริ๊ปลงไปดังนี้

                            Code:
                            DestFolder = Shell.GetFolder(SHF_MYDOCUMENTS);
                            Folder.Create(DestFolder.."\\TestBackup");
                            StatusDlg.Show(MB_ICONNONE, false);
                            File.Copy("AutoPlay\\Docs\\*.*", DestFolder.."\\TestBackup\\", true, true, false, true, nil);
                            error = Application.GetLastError();
                            StatusDlg.Hide();
                            if error ~= 0 then
                                result = Dialog.Message("Error", "There was an error copying the files to your system. Please try again.", MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);
                            else
                                Shell.Execute(DestFolder.."\\TestBackup", "explore", "", "", SW_SHOWNORMAL);
                            end
                            --------------------------------------------------------------------------
                            :รายละเอียด:
                            DestFolder = Shell.GetFolder(SHF_MYDOCUMENTS);
                            คำสั่งกำหนดพื้นที่ ที่จะนำข้อมูลเข้าไปวางไว้ ในกรณีย์นี้กำหนดไว้ที่ MyDocuments
                            ----------------------------------------------------------------
                            Folder.Create(DestFolder.."\\TestBackup");
                            คำสั่งสร้างโฟลเดอร์ใหม่ ชื่อ TestBackup สำหรับเก็บไฟล์ต่างๆที่ถูกก๊อบปี้ โฟลเดอร์นี้ ถูกกำหนดให้เก็บไว้ใน MyDocuments
                            -----------------------------------------------------------------
                            StatusDlg.Show(MB_ICONNONE, false);
                            คำสั่งให้แสดงหน้าต่าง StatusDlg Progressbar
                            ----------------------------------------------------------------
                            File.Copy("AutoPlay\\Docs\\*.*", DestFolder.."\\TestBackup\\", true, true, false, true, nil);
                            คำสั่งก๊อบปี้ไฟล์ต่างๆ จากโฟลเดอร์ Docs ซึ่งเป็นโฟลเดอร์เก็บข้อมูลที่จะก๊อบปี้และเกี่ยวข้องกับการสร้าง Project เปิดดูหรือใช้งานได้ที่ C:\Documents and Settings\Administrator\My Documents\AutoPlay Media Studio 7.0\Projects\My Project\CD_Root\AutoPlay\Docs
                            ----------------------------------------------------------------
                            คำสั่งเช็ค Error ซ่อน StatusDlg และเปิด explore เมื่อสิ้นสุดการทำงาน
                            error = Application.GetLastError();
                            StatusDlg.Hide();
                            if error ~= 0 then
                            result = Dialog.Message("Error", "There was an error copying the files to your system. Please try again.", MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);
                            else
                            Shell.Execute(DestFolder.."\\TestBackup", "explore", "", "", SW_SHOWNORMAL);
                            end
                            ------------------------------------------------------------------------------
                            รูปตัวอย่าง StatusDlg Progressbar CallBack Function ..กำลังทำงาน

                            Comment


                            • #29
                              อีกตัวอย่างหนึ่ง ..คำสั่ง Zip หรือบีบอัดไฟล์ข้อมูลต่างๆ ..ใช้ CallBack Function StatusDlg

                              Code:
                              archive_files = Dialog.FileBrowse(false, "Files to Add", _DesktopFolder, "All Files (*.*)|*.*|", "", "dat", true, false);
                              if (archive_files[1] ~= "CANCEL") and (archive_files ~= nil) then
                              StatusDlg.Show();
                              Zip.Add(_DesktopFolder.."\\NewArchive.zip", archive_files, true, "", 5, nil, false);
                              error = Application.GetLastError();
                              StatusDlg.Hide();
                              if (error == 0) then
                                  Dialog.Message("Success", "The files were successfully archived.", MB_OK, MB_ICONINFORMATION);
                                  File.ExploreFolder(_DesktopFolder, SW_SHOWNORMAL);
                              else
                                  Dialog.Message("Error", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION);
                              end
                              end
                              ---------------------------------------------------------------------------------------------------------
                              :รายละเอียด:

                              archive_files = Dialog.FileBrowse(false, "Files to Add", _DesktopFolder, "All Files (*.*)|*.*|", "", "dat", true, false);
                              คำสั่งเปิดหน้าต่าง Dialog เพื่อเลือกไฟล์ข้อมูลที่จะบีบอัด
                              ----------------------------------------------------------------------------------------------------------
                              Zip.Add(_DesktopFolder.."\\NewArchive.zip", archive_files, true, "", 5, nil, false);
                              คำสั่งบีบอัดไฟล์ ..เมื่อบีบอัดเสร็จเรียบร้อยแล้ว ไฟล์ข้อมูลที่ถูกบีบอัดทั้งหมด จะอยู่ใน NewArchive.zip ..วางอยู่บนเดสก์ทอป
                              -----------------------------------------------------------------------------------------------------------
                              if (error == 0) then
                              Dialog.Message("Success", "The files were successfully archived.", MB_OK, MB_ICONINFORMATION);
                              File.ExploreFolder(_DesktopFolder, SW_SHOWNORMAL);
                              else
                              Dialog.Message("Error", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION);
                              end
                              end
                              คำสั่งเช็ค Error ..แจ้งสิ้นสุดการทำงาน ด้วย MessageBox และเปิด ExploreFolder

                              Comment


                              • #30
                                การใช้งาน Input Box ..เป็นตัวอย่างการออกแบบโปรแกรมที่ทุกท่านควรศึกษาไว้ จะได้นำวิธีการ ไปประยุกต์ใช้ในการออกแบบกับโปรแกรมอื่นๆ
                                ตามสไตล์ที่ท่านอยากให้เป็น ..โปรแกรมตัวอย่างต่อไปนี้ ผมใช้เวลาค้นคว้าทดลอง 1 วันเต็มๆ กว่าจะออกแบบมาได้สำเร็จ เป็นโปรแกรม Auto Install ..ไว้สำหรับตั้งโปรแกรมต่างๆแบบอัตโนมัติ การออกแบบไม่มีอะไรซับซ้อนมากนัก ไม่ยากเกินกว่าที่ท่านจะทำความเข้าใจ
                                Download:Projectเพื่อการศึกษา
                                Size:2.3 MB
                                http://upload.one2car.com/download.a...2GE5KF2TQCTQR2
                                -----------------------------------------------------------------------------------------------
                                ให้ท่านสร้าง Page Form และใส่ Object ลงไปตามรูปเลยครับ


                                ------------------------------------------------------
                                อันนี้ปรับปรุงมาให้ใหม่ มี Parameter ของโปรแกรมให้เลือกใช้ในตัว


                                ------------------------------------------------------
                                ส่วนประกอบของโปรแกรมนี้แบ่งออกเป็น6ส่วนด้วยกัน แต่ละส่วนต้องเขียนสคริ๊ปกำกับไว้ดังนี้
                                1.Page1 หรือ Form

                                Code:
                                Input.SetEnabled("Input1", false);
                                Input.SetEnabled("Input2", false);
                                ComboBox.SetEnabled("ComboBox1", false);
                                Button.SetEnabled("Button2", false);
                                ------------------------------------------------------
                                2.Input1 หรือ File Path:

                                ส่วนนี้ไม่ต้องเขียนสคริ๊ปกำกับ
                                -------------------------------------------------
                                3.Button1 หรือ Browse

                                Code:
                                open_file = Dialog.FileBrowse(true, "Select a File to install:", _DesktopFolder, "Program Files (*.exe;*.msi)|*.exe;*.msi|All Files (*.*)|*.*|", "", "dat", false, false);
                                Input.SetText("Input1", open_file[1]);
                                Input.SetEnabled("Input1", true);
                                ComboBox.SetEnabled("ComboBox1", true);
                                ------------------------------------------------------------------
                                4.Input2 หรือ Parameter

                                ส่วนนี้ไม่ต้องเขียนสคริ๊ปกำกับ
                                -----------------------------------------------------------------
                                5.ComboBox1 หรือ Switches ..ส่วนนี้ต้องนำเข้า Switch parameter ของโปรแกรมต่างๆ
                                ที่ต้องใช้งาน เข้าไปอยู่ในลิสท์รายการ Item Text ด้วย ดังรูป



                                Code:
                                get_text = ComboBox.GetText("ComboBox1");
                                Input.SetText("Input2", get_text);
                                Input.SetEnabled("Input2", true);
                                Button.SetEnabled("Button2", true);
                                ------------------------------------------------------------------------------
                                6.Button2 หรือ Install

                                Code:
                                file_install = Input.GetText("Input1");
                                file_silent = Input.GetText("Input2");
                                File.Run(file_install, file_silent, "", SW_SHOWNORMAL, true);
                                Dialog.Message("", "Completed.", MB_OK, MB_ICONNONE, MB_DEFBUTTON3);
                                Window.Close(Application.GetWndHandle(), CLOSEWND_SENDMESSAGE);

                                Comment

                                Working...
                                X