ขอวิธีทำให้ MsgBox ปิดตัวมันเอง ตามเวลาค่ะ
กระทู้เก่าบอร์ด อ.Yeadram

 9,403   10
URL.หัวข้อ / URL
ขอวิธีทำให้ MsgBox ปิดตัวมันเอง ตามเวลาค่ะ

โดยปกติ MsgBox จะมีปุ่มให้เราต้องคลิก อย่างน้อย ก็ปุ่ม OK อะค่ะ MsgBox จึงจะปิดไป

ทีนี้หากเราจะทำให้มันโชว์ขึ้นมาซัก 3 วินาที่ แล้วก็ปิดตัวเองไป โดยที่เราไม่ต้องคลิก ไม่ทราบว่า มีวิธีทำได้ไหมคะ เสมือนว่าให้มันคลิก OK ด้วยตัวมันเอง เมื่อครบเวลา 3 วินาทีอะค่ะ

ขอบคุณค่ะ


10 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R05385
พอดีไปค้นเจอโค้ดนี้ ไม่ทราบว่าใช่หรือเปล่า เห็นมีคำว่า Auto close อยู่ค่ะ

void CMsgBox::MessageBox(CString sMsg, CString sCaption, UINT nSleep,
                         UINT nFlags, bool bAutoClose)
{
    // Save the caption, for finding this
    // message box window later

    m_Caption = sCaption;

    // If auto close then, start the timer.

    if(bAutoClose)
        SetTimer(100, nSleep, NULL);

    // Show the message box

    CWnd::MessageBox(sMsg, sCaption, nFlags);
}

void CMsgBox::OnTimer(UINT nIDEvent)
{
    // TODO: Add your message handler code here and/or call default

    BOOL bRetVal = false;

    // Find the message box window using the caption

    CWnd* pWnd = FindWindow(NULL, m_Caption);
    if(pWnd != NULL)
    {
        // Send close command to the message box window

        ::PostMessage(pWnd->m_hWnd, WM_CLOSE, 0, 0);
    }

    // Kill the timer

    KillTimer(100);

    CWnd::OnTimer(nIDEvent);
}
======================================

obj.MessageBox("This message box will auto close in 2 seconds.",
               "Auto Close Msg Box", 2000, MB_OK | MB_ICONINFORMATION);


อาจารย์ช่วยดูให้หน่อยนะคะ
2 @R05386
เย้...ได้แล้วค่ะ (ฟลุ๊ค)
ค้นไปเรื่อยๆจนเจอโค้ดนี้ สั้นๆ และใช้ได้ดีด้วยค่ะ

Private Sub Command0_Click()
CreateObject("WScript.Shell").PopUp "Sample Sample Sample", _
        2, "Test"
End Sub

หน่วงเวลาอยู่ 2 วินาที แล้วจะปิดตัวเอง
เพื่อนสมาชิก สนใจลองนำไปใช้ดูนะคะ
3 @R05399
vbs = visual basic script
โอ้ว ช่างฉลาดเหลือเกินคนที่คิดได้เนี่ย
เรามักไม่คิดถึง vbs ในเมื่อเรามี vba อยู่ในมือ แต่งานอย่างเนี้ย เมื่อเอาทั้งสองอย่างมาทำงานร่วมกัน มันทำงานได้แจ่มเลย ขอบคุณคุณมาลี ที่เอาโค้ดมาปันครับ ได้แนวทางหลักๆ เพิ่มอีกอย่างเลยล่ะครับ (การนำ vb, vbs, asp, vba มาทำงานร่วมกันในบางโอกาส)
4 @R05409
ไปค้นดูใน msdn.com ได้ผลเป็นดังนี้

intButton = WshShell.Popup(strText,[nSecondsToWait],[strTitle],[nType])

strText = ข้อความที่ต้องการแสดง
nSecondsToWait = จำนวนเป็นวินาทีที่ให้กล่องข้อความรอคอย
strTitle = ไตเติลของกล่องข้อความ
nType = ประเภทของกล่องข้อความ

ถ้า nSecondsToWait ไม่ใส่หรือเป็นศูนย์ กล่องข้อความจะไม่ปิดโดนอัตโนมัติ จะรอจนกว่าผู้ใช้จะคลิกปุ่มที่อยู่บนกล่องข้อความ

ถ้า strTitle ไม่ใส่ มันจะแสดงคำว่า Windows Script Host ออกมาแทน

nType เป็นผลรวมของค่า option ต่างๆ โดยมีค่าเช่นกันเดียวกับ buttons argument ของ MsgBox function ที่ใช้ใน VBA เช่น vbYesNo + vbQuestion + vbDefaultButton2

intButton เป็นค่าที่คืนกลับมา ถ้ากล่องข้อความปิดไปเพราะหมดเวลาตามที่ระบุใน nSecondsToWait ค่านี้จะเป็น -1 นอกนั้นจะเป็นค่าเดียวกันกับที่คืนจาก MsgBox function ที่ใช้ใน VBA เช่น vbYes

** ผมแค่แปลมานะครับ ยังไม่ได้ลอง **
5 @R05410
แก้ไข : เปลี่ยน WshShell เป็น CreateObject("WScript.Shell")
6 @R05660
มาลี
คุณเจ๋งจริงคับ ๆๆๆๆ [>:D]
7 @R05661
เห็นด้วย เยี่ยมจริง ๆ ขอคัดลอกไว้ใช้ด้วยนะครับ
8 @R06854
บางเครื่อง ใช้โค้ดนี้ไม่้ได้
9 @R08583
ผม งง มาก ๆ ครับ ครั้งแรกใช้ได้มันหน่วงเวลาน่ะ
พอกลับมาทดสอบอีก 5 นาที มันไม่หน่วงเวลาแล้ว ต้องเราให้เรา OK เอง

ผมชัก งง ๆ น่ะ ไม่เฉพาะโค้ดนี้ หลาย ๆ โค้ด บางทีมันก็ใช้ได้ บางทีก็ใช้ไม่ได้ ในเครื่องเดียวกันครับ สภาพแวดล้อมเหมือนกันเลย เอ่อ หรือว่า ไสยศาสตร์มีจริง (ฮา)
10 @R08586
CreateObject("WScript.Shell")


ออบเจคตัวนี้ ในบางเครื่องไม่สามารถใช้ได้ อาจเพราะ
1 ความปลอดภัยโดย Internet explorer
2 ความปลอดภัยโดย software จำพวก anti-virus
มันไม่ยอมให้รันครับ เพราะถือเป็นความเสี่ยง พวกไวรัส หรือ สปายแวร์ต่างๆ มักใช้ object ตัวนี้ เพื่อสั่งการบางอย่างกับคอมพิวเตอร์ ดังนั้น ระบบความปลอดภัยต่างๆ บางตระกูลบางยี่ห้อ มักจะบล็อค ไม่ให้รัน สคริปต์ครับโดยจำกัดการเคลื่อนไหวของไฟล์ wscript.exe

*** จากประสบการณ์ที่เคยเดาครับ อิอิ ****
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3447s