ท่านอาจารย์ช่วยกระผมที ปัญหาเรื่อง Shutdown จะทำอย
กระทู้เก่าบอร์ด อ.Yeadram

 3,929   13
URL.หัวข้อ / URL
ท่านอาจารย์ช่วยกระผมที ปัญหาเรื่อง Shutdown จะทำอย

อาจารย์ครับรบกวนที ผมีปัญหาว่า
ผมอยากให้ Click ที่ปุ้ม โปรแกรม Access แล้วให้เครื่อง Shutdown เลยครับ
ผมจะเขียน Code อย่าไรดี ผมลองใช้ Bat File คำสั่ง shutdown -s -t1
ทั้ง Open ทั้ง double Click ก็ไม่ทำงาน ทั้งที่เมื่อก่อนก็ใช้งานได้ปกติ
ก็ไม่รู้เหมือนกันว่าเพราะอะไร แต่คำสั่ง Copy ก็ใช้งานได้ทั้งที่ก็เป็นคำสั่ง Bat File เหมือนกัน
-------------------------------และก็ลองทำ
ประกาศไว้ที่โมดูล

Public Declare Function ExitWindowsEx Lib "user32" _
    (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

ใส่ไว้ใน Command button

Call ExitWindowsEx(EWX_SHUTDOWN, 0)

แต่มันยังติดปัญหาว่ามันไม่ยอมปิดเครื่องไปเลยครับ เหมือนมันจะ Restart แล้วกลับไปติดหน้าต่าง Log On to Windows

------------------------------และก็ลองเขียนคำสั่งที่ปุ่ม

Shell "Shutdown -r "           ' สั่ง Restart ก็ทำงาน
Shell "Shutdown -s -t 00"   ' สั่ง Shutdown มันกลับไม่ทำงาน


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

1 @R03932
ตรวจสอบดู โปรแกรม c:\windows\system32\Shutdown.exe
มีปัญหาอะไรหรือเปล่า มีไวรัสเกาะหรือเปล่า
หรือไม่ก็ลองเขียนพาธเต็มๆ ให้มันดูครับ
ผมยังไม่เคยลองเหมือนกัน เดี๋ยวว่างๆ จะลองดูแล้วเอามาแจ้งข่าวเพิ่ม (ถ้าของคุณวิษณุยังทำไม่ได้นะ)

shell "C:\windows\system32\shutdown.exe -s"

ผมเดาว่า อาจมีบางโปรแกรมที่กำลังรันอยู่ในเครื่องนั้นๆ ที่มันขัดแย้งกับคำสั่งของเราหรือเปล่า
ให้ลองค้น ของ อ.Badman (ใช่หรือเปล่านะ) คำว่า killProcess ดูครับ
2 @R03933
EWX_SHUTDOWN มีค่าเป็นอะไร ? กำหนดไว้แล้วหรือยัง ? เพราะดูจากโค้ดนี้ มันยังไม่ได้มีค่าเลยไม่ใช่หรือ   ลองค้นจากเวป Microsoft ดู น่ามีอธิบายไว้นะครับว่า parameter แต่ละค่าของฟังก์ชั่น ExitWindowsEx จะสั่งให้ทำอะไรบ้าง
3 @R03934
จากที่ผมเคยเห็นในตัวอย่างที่อ. BADMan เคยให้ไว้เป็นแบบนี้
Option Compare Database
Option Explicit

'**************** Code Begin *******************
Private Declare Function apiExitWindowsEx Lib "user32" _
        Alias "ExitWindowsEx" _
        (ByVal uFlags As Long, ByVal dwReserved As Long) _
        As Long

Public Const EWX_FORCE = 4      'Forcibly terminates processes
                                'that do not respond.
Public Const EWX_LOGOFF = 0     'Terminates processes, then logs off.
Public Const EWX_SHUTDOWN = 1   'Powers the system off, if possible.
Public Const EWX_REBOOT = 2     'Reboots the system.

Function fTerminateWin(lngExitVal As Long)
    fTerminateWin = apiExitWindowsEx(lngExitVal, 0)
End Function
'***************** Code End *******************

หรือลองเข้าไปดูตัวอย่างจากที่ส่งไปไว้ที่
accboard@gmail.com
password : accgmail
mail ที่ชื่อ The Warning
4 @R03935
อ.yeadram ผมลอง shell "C:\windows\system32\shutdown.exe -s" แค่กระพริบ 1 ครั้ง และก็ตรวจสอบไฟล์ shutdown.exe ก็ยังมีอยู่ และก็ลองหาคำว่า killProcess ก็ไม่มี และลองหา คำว่า อ.Badman ในGoogle ก็เห็นกระทู้บอกว่าไม่รู้ อ.Badman หายไปไหน และ ก็ SCAN VIRUS แล้วก็ No Virus

อ.สันติสุข ครับ ผมเองก็ไม่ค่อยรู้เรื่อง Code เท่าไหร่ส่วน ที่ผมเขียนมาก็มี อ.รักน้องบิวท์
บอกมา
แต่ผมก็ยังไม่หมดความพยายามครับไปหาใน Google ดังนี้
------------------------------------------------------------------------
ประกาศที่ Module ไว้ดังนี้


Public Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

Public Const EWX_REBOOT = 2
Public Const EWX_SHUTDOWN = 0



และที่ปุ่มคำสั่งของฟอร์มไว้ดังนี้

Private Sub CmdRestart_Click()
    If MsgBox("คุณต้องการ Restart ?", vbYesNo + vbCritical, "โปรดระมัดระวัง") = vbYes Then
            Call ExitWindowsEx(EWX_REBOOT, 2)
    End If
End Sub

Private Sub CmdShutDown_Click()
    If MsgBox("คุณต้องการปิดเครื่อง ?", vbYesNo + vbCritical, "โปรดระมัดระวัง") = vbYes Then
            Call ExitWindowsEx(EWX_SHUTDOWN, 0)
    End If
End Sub
-----------
แต่ก็ เหมือนเดิมครับมันยังติดปัญหาว่ามันไม่ยอมปิดเครื่องไปเลยครับ
อาจารย์ครับ ได้โปรดช่วยกระผมที ผมควรทำอย่างไรดี
--------------------------------------------------------------------------------
อ.sjs ผมลองดูแล้วแต่ไม่เห็นหัวข้อ The Warning
เลยครับ

5 @R03936
อิอิ ต้องขออภัยอย่างแรง เมล์ชื่อ ตัวอย่าง 26-12-51
หรือ
http://mail.google.com/mail/?shva=1#inbox/11e741eb3ab4fa95
6 @R03937
ผมอยากหาสาเหตุช่วยครับ
เท่าที่อ่านมายังบอกไม่ได้ว่า เป็นที่ VBA สั่งการเพี้ยน หรือว่า เป็นที่ OS ของเครื่องนั้นๆ กันแน่

อยากได้ผลการทดสอบดังนี้ครับ
- 1 ปิดโปรแกรมทุกอย่าง ทดสอบสั่ง ผ่าน ms dos promt ว่ามันปิดได้ปกติหรือเปล่า

- 2 ปิดโปรแกรมทุกอย่าง ทดสอบสั่ง ผ่าน batch file ว่ามันปิดได้ปกติหรือเปล่า

- 3 เปิดโปรแกรม access ค้างไว้ 1 ตัว แล้วสั่ง shutdown ตามข้อ1

- 4 เปิดโปรแกรม Access กด ctl+G
     พิมพ์ Shell "Shutdown -s -t 0"
     กด enter
7 @R03938
คุณวิษณุ ค่าของ EWX_SHUTDOWN มันเป็น 1 ครับ ไม่ใช่ 0

ผมเอามาจาก http://msdn.microsoft.com/en-us/library/aa376868%28VS.85%29.aspx
8 @R03946
อ.sjs ขอบคุณครับแต่ขอเวลาแกะ โปรแกรมพักใหญ่เลยครับเพราะไม่เก่งเรื่อง Code จริงๆ
-----------------------------------
อ.yeadram ผมลองทำที่อาจารย์แนะนำแล้วครับ แต่ก็ยังปิดไม่ได้เหมือนเดิมครับ
ใช้ทั้ง ms dos promt ใช้ทั้ง batch file และก็ Shell "Shutdown -s -t 0"

----------------------------------
อ.สันติสุข รบกวนอาจารย์แบบเต็มๆ Code ได้ไหมครับเพราะผมไม่เก่งเรื่องนี้จริงๆ ว่าผมควรต้องประกาศโมดูลอย่างไร และเขียนคำส่งอย่าไรดี เพราะที่ผมทำมามันไปติดที่หน้าต่าง Log On to Windows ทุกทีเลยครับ
9 @R03961
บรรทัดที่คุณเขียนมาว่า

Public Const EWX_SHUTDOWN = 0

ให้เปลี่ยนเป็น

Public Const EWX_SHUTDOWN = 1

นอกนั้นก็คงโค้ดเดิมตามคำตอบของคุณใน (R03935) แต่จะทำงานได้หรือไม่ ผมไม่ทราบนะครับ ผมไม่มีความรู้เรื่อง API และก็ไม่รู้ว่าฟังก์ชั่น ExitWindowsEx นี้ มีการทำงานในรายละเอียดอย่างไรเหมือนกัน ผมแค่ไปหาเพจที่ Microsoft อธิบาย เอามาให้คุณดูเท่านั้นเอง
10 @R03962
อ.สันติสุข ครับผมลองทำตามที่อาจารย์แนะนำแล้วครับ ผลที่ทดลองนิ่งสนิดเลยครับไม่ทำงาน แต่เป็น 0 ถึงจะทำงานครับ ผมลองทำ ตรงที่ Module และที่ปุ่มคำสั่ง สลับไปมาตามความน่าจะเป็นแต่ก็ไม่ทำงานครับนอกจาก จะเป็น Public Const EWX_SHUTDOWN = 0 ถึงจะทำงานแต่ก็ติดปัญหาเดิมคือมันไม่ปิดเครื่องไปเลยครับ
11 @R03963
จาก R03937
ข้อ 1 (สำหรับ window)
- ปิดโปรแกรมทั้งหมด
- กด start > run > พิมพ์ cmd >กด enter
- พิมพ์ cd\ กด enter
- พิมพ์ shutdown -s กด enter
เครื่องคอมพิวเตอร์จะต้อง ปิดตัวเองในอีก 30วินาที

จาก R03946
คุณ วิษณุ แจ้งผลว่า มันยังปิดไม่ได้

สรุปได้เลยครับ ไม่ใช่ปัญหาของ vba แล้วครับ
ให้ไปไล่ตรวจเช็คที่ window เลยครับ
อาจจะสแกนไวรัส เช็ค hdd หรือ repair window นู่นเลยครับ
12 @R03964
ขออนุญาตตอบครับ
คุณวิษณุ ลองดูตัวอย่างจากใน mail board นะครับ ผมส่งไฟล์ตัวอย่างไว้ที่นั่น เป็นการเรียกใช้ Function API ของอ.ศักดา ครับ

accboard
accgmail

หัวข้อ "ตัวอย่างการสั่ง Shut down windows จากโปรแกรม Access" ซึ่งในตัวอย่างประกอบด้วยปุ่มคำสั่ง Shut down / Restart / Log Off

ขอบคุณครับ

ปล.หากตัวอย่างใช้ไม่ได้ น่าจะเป็นตามที่ อ. yeadram แจ้งครับ

13 @R03966
ขอบคุณ
อ.yeadram อ.สันติสุข อ.sjs อ.รักน้องบิวท์ และ อ.jackychaan

และอาจารย์ทุกท่านที่ไม่ได้เอ่ยนามนะครับ ผมได้ข้อสรุปแล้วว่าผมคงต้องใช้โปรแกรมเสริมครับ ไม่ต้อง Install ด้วยเป็นนามสกุล EXE ผมทดลองใช้แล้วก็ได้ผล แต่ผมจำไม่ได้ว่าผม Download มาจากเว็ปไหนแต่ผม Upload เก็บไว้ที่


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