กระทู้เก่าบอร์ด อ.Yeadram
9,403 10
URL.หัวข้อ /
URL
ขอวิธีทำให้ MsgBox ปิดตัวมันเอง ตามเวลาค่ะ
โดยปกติ MsgBox จะมีปุ่มให้เราต้องคลิก อย่างน้อย ก็ปุ่ม OK อะค่ะ MsgBox จึงจะปิดไป
ทีนี้หากเราจะทำให้มันโชว์ขึ้นมาซัก 3 วินาที่ แล้วก็ปิดตัวเองไป โดยที่เราไม่ต้องคลิก ไม่ทราบว่า มีวิธีทำได้ไหมคะ เสมือนว่าให้มันคลิก OK ด้วยตัวมันเอง เมื่อครบเวลา 3 วินาทีอะค่ะ
ขอบคุณค่ะ
ทีนี้หากเราจะทำให้มันโชว์ขึ้นมาซัก 3 วินาที่ แล้วก็ปิดตัวเองไป โดยที่เราไม่ต้องคลิก ไม่ทราบว่า มีวิธีทำได้ไหมคะ เสมือนว่าให้มันคลิก OK ด้วยตัวมันเอง เมื่อครบเวลา 3 วินาทีอะค่ะ
ขอบคุณค่ะ
10 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R05386
เย้...ได้แล้วค่ะ (ฟลุ๊ค)
ค้นไปเรื่อยๆจนเจอโค้ดนี้ สั้นๆ และใช้ได้ดีด้วยค่ะ
Private Sub Command0_Click()
CreateObject("WScript.Shell").PopUp "Sample Sample Sample", _
2, "Test"
End Sub
หน่วงเวลาอยู่ 2 วินาที แล้วจะปิดตัวเอง
เพื่อนสมาชิก สนใจลองนำไปใช้ดูนะคะ
ค้นไปเรื่อยๆจนเจอโค้ดนี้ สั้นๆ และใช้ได้ดีด้วยค่ะ
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 มาทำงานร่วมกันในบางโอกาส)
โอ้ว ช่างฉลาดเหลือเกินคนที่คิดได้เนี่ย
เรามักไม่คิดถึง 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
** ผมแค่แปลมานะครับ ยังไม่ได้ลอง **
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]
คุณเจ๋งจริงคับ ๆๆๆๆ [>:D]
7 @R05661
เห็นด้วย เยี่ยมจริง ๆ ขอคัดลอกไว้ใช้ด้วยนะครับ
8 @R06854
บางเครื่อง ใช้โค้ดนี้ไม่้ได้
9 @R08583
ผม งง มาก ๆ ครับ ครั้งแรกใช้ได้มันหน่วงเวลาน่ะ
พอกลับมาทดสอบอีก 5 นาที มันไม่หน่วงเวลาแล้ว ต้องเราให้เรา OK เอง
ผมชัก งง ๆ น่ะ ไม่เฉพาะโค้ดนี้ หลาย ๆ โค้ด บางทีมันก็ใช้ได้ บางทีก็ใช้ไม่ได้ ในเครื่องเดียวกันครับ สภาพแวดล้อมเหมือนกันเลย เอ่อ หรือว่า ไสยศาสตร์มีจริง (ฮา)
พอกลับมาทดสอบอีก 5 นาที มันไม่หน่วงเวลาแล้ว ต้องเราให้เรา OK เอง
ผมชัก งง ๆ น่ะ ไม่เฉพาะโค้ดนี้ หลาย ๆ โค้ด บางทีมันก็ใช้ได้ บางทีก็ใช้ไม่ได้ ในเครื่องเดียวกันครับ สภาพแวดล้อมเหมือนกันเลย เอ่อ หรือว่า ไสยศาสตร์มีจริง (ฮา)
10 @R08586
CreateObject("WScript.Shell")
ออบเจคตัวนี้ ในบางเครื่องไม่สามารถใช้ได้ อาจเพราะ
1 ความปลอดภัยโดย Internet explorer
2 ความปลอดภัยโดย software จำพวก anti-virus
มันไม่ยอมให้รันครับ เพราะถือเป็นความเสี่ยง พวกไวรัส หรือ สปายแวร์ต่างๆ มักใช้ object ตัวนี้ เพื่อสั่งการบางอย่างกับคอมพิวเตอร์ ดังนั้น ระบบความปลอดภัยต่างๆ บางตระกูลบางยี่ห้อ มักจะบล็อค ไม่ให้รัน สคริปต์ครับโดยจำกัดการเคลื่อนไหวของไฟล์ wscript.exe
*** จากประสบการณ์ที่เคยเดาครับ อิอิ ****
ออบเจคตัวนี้ ในบางเครื่องไม่สามารถใช้ได้ อาจเพราะ
1 ความปลอดภัยโดย Internet explorer
2 ความปลอดภัยโดย software จำพวก anti-virus
มันไม่ยอมให้รันครับ เพราะถือเป็นความเสี่ยง พวกไวรัส หรือ สปายแวร์ต่างๆ มักใช้ object ตัวนี้ เพื่อสั่งการบางอย่างกับคอมพิวเตอร์ ดังนั้น ระบบความปลอดภัยต่างๆ บางตระกูลบางยี่ห้อ มักจะบล็อค ไม่ให้รัน สคริปต์ครับโดยจำกัดการเคลื่อนไหวของไฟล์ wscript.exe
*** จากประสบการณ์ที่เคยเดาครับ อิอิ ****
Time: 0.3447s
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);
อาจารย์ช่วยดูให้หน่อยนะคะ