กระทู้เก่าบอร์ด อ.Yeadram
2,089 5
URL.หัวข้อ /
URL
คำสั่ง Command line
คือผมจะเอาคำสั่ง msg admin /server:172.21.0.25 "พิมพ์ใบ TAG ด้วยครับ" ไปใส่ในปุ่ม Button เพื่อแจ้งไปที่เครื่องอื่นให้พิมพ์งาน แต่ทำไม่ เลยเปลี่ยนมาทำเป็น .bat โดยใช้คำสั่ง Shell "c:\Tag.bat" แทน คำสั่งก็ไม่ทำงานอีก ช่วยแนะนำหน่อยครับผมต้องแก้ไขตตรงไหนดีครับ
ขอบคุณครับ
คำสั่ง msg admin /server:172.21.0.25 "พิมพ์ใบ TAG ด้วยครับ" ทำเป็น .bat เมื่อดับเบิ้ลคลิ๊กก็ทำงานปกติน่ะครับ
ขอบคุณครับ
คำสั่ง msg admin /server:172.21.0.25 "พิมพ์ใบ TAG ด้วยครับ" ทำเป็น .bat เมื่อดับเบิ้ลคลิ๊กก็ทำงานปกติน่ะครับ
5 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R18986
ผมลองใช้ดูก็ใช้งานได้ปกตินะครับ หรืออาจเป็นที่ Security ของตัว Windows เวอร์อะไรครับ
2 @R18995
ผมใช้ windows 8 ครับ คุณ TTT ใช้ windows อะไรครับ
แต่ที่คุณ TTT ทำได้ น่าจะเอา คำสั่ง msg admin /server:172.21.0.25 "พิมพ์ใบ TAG ด้วยครับ" Save เป็น .bat แล้วดับเบิ้ลคลิ๊กที่หน้า windows มันจะได้
แต่ถ้าเอาคำสั่ง ไปใส่ใน Access Shell "c:\Tag.bat" มันจะไม่ได้ มันขึ้นแว๊บเดี่ยวมันก็หายไป
แต่ที่คุณ TTT ทำได้ น่าจะเอา คำสั่ง msg admin /server:172.21.0.25 "พิมพ์ใบ TAG ด้วยครับ" Save เป็น .bat แล้วดับเบิ้ลคลิ๊กที่หน้า windows มันจะได้
แต่ถ้าเอาคำสั่ง ไปใส่ใน Access Shell "c:\Tag.bat" มันจะไม่ได้ มันขึ้นแว๊บเดี่ยวมันก็หายไป
3 @R18996
อื่ม ผมใช้กับ Windows xp และ 7 ใช้ได้นะครับ เรียก Shell() นี่แหละครับ แต่ Windows 8 เครื่องผมรันงานอยู่เลยยังไม่ได้ลอง เดาว่า OS ของ windows 8 อาจให้คำสั่ง msg เป็นคำสั่งที่ใช้ได้เฉพาะ Admin ถ้าเป็นงั้นก็ต้องนึกว่าจะเข้า cmd แบบ Runas Administrator ยังไง เขียนไม่ถูกด้วย เอาเป็นว่าลองแบบนี้ดูครับ
1. ที่หน้าต่าง VBE ของฟอร์มให้โค๊ดนี้ลงในส่วนของพื้นที่ Declarations ดังนี้:
'Option Explicit
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare PtrSafe Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
'---------------------------------------------------------------------------------------
2. สร้างซับฟังก์ชั่นดังนี้:
Sub TTT(Password_Admin As String, Pathbatfile As String)
Call LoadKeyboardLayout("00000409", 1)
DoEvents
Dim oshell As Object
Set oshell = CreateObject("WSCript.shell")
With oshell
.Run "Runas /noprofile /user:" & Environ$("Computername") & "\" & Environ$("Username") & " " & Pathbatfile, 2
DoEvents
Sleep 1000
.SendKeys Password_Admin & "{ENTER}"
DoEvents
Sleep 3000
End With
End Sub
3. ที่ปุ่มที่คุณต้องการกดเพื่อใช้คำสั่ง msg command ให้ใส่โค๊ดที่ Event > On Click ดังนี้:
- สมุมติสร้าง batfile ที่จะเรียกไว้ที่ C:\Temp\Test.bat
- password ที่ใช้ในการ Login เข้า Windows 8 คือ 1234 (รหัสจริงนะครับ ไม่ใช่ Pin หรือหากไม่มีให้ใส่เป็น "" แทน)
Call TTT("1234", "C:\Temp\Test.bat")
ลองดูครับ ถ้าใช้ได้แสดงว่าน่าเป็นที่ Security ของตัว Windows เองครับ
ปล. จริงๆแล้วไม่ยากใช้ SendKeys เลย เพราะปัญหาเยอะแต่นึกวิธีอื่นยังไม่ออก จะเห็นว่าพอเราใช้ SendKeys เราเลยต้องมีการหน่วงเวลาเพราะกลัวส่งคีย์ไม่ทัน และต้องมีการใช้ฟังก์ชั่นเปลี่ยนภาษาเป็น EN เสมอ กรณีค้างอยู่เป็น TH ซึ่งทำให้คำที่ส่งไปผิด ส่วนตัวไม่ชอบ Sendkeys ถ้าเลือกได้
1. ที่หน้าต่าง VBE ของฟอร์มให้โค๊ดนี้ลงในส่วนของพื้นที่ Declarations ดังนี้:
'Option Explicit
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare PtrSafe Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
'---------------------------------------------------------------------------------------
2. สร้างซับฟังก์ชั่นดังนี้:
Sub TTT(Password_Admin As String, Pathbatfile As String)
Call LoadKeyboardLayout("00000409", 1)
DoEvents
Dim oshell As Object
Set oshell = CreateObject("WSCript.shell")
With oshell
.Run "Runas /noprofile /user:" & Environ$("Computername") & "\" & Environ$("Username") & " " & Pathbatfile, 2
DoEvents
Sleep 1000
.SendKeys Password_Admin & "{ENTER}"
DoEvents
Sleep 3000
End With
End Sub
3. ที่ปุ่มที่คุณต้องการกดเพื่อใช้คำสั่ง msg command ให้ใส่โค๊ดที่ Event > On Click ดังนี้:
- สมุมติสร้าง batfile ที่จะเรียกไว้ที่ C:\Temp\Test.bat
- password ที่ใช้ในการ Login เข้า Windows 8 คือ 1234 (รหัสจริงนะครับ ไม่ใช่ Pin หรือหากไม่มีให้ใส่เป็น "" แทน)
Call TTT("1234", "C:\Temp\Test.bat")
ลองดูครับ ถ้าใช้ได้แสดงว่าน่าเป็นที่ Security ของตัว Windows เองครับ
ปล. จริงๆแล้วไม่ยากใช้ SendKeys เลย เพราะปัญหาเยอะแต่นึกวิธีอื่นยังไม่ออก จะเห็นว่าพอเราใช้ SendKeys เราเลยต้องมีการหน่วงเวลาเพราะกลัวส่งคีย์ไม่ทัน และต้องมีการใช้ฟังก์ชั่นเปลี่ยนภาษาเป็น EN เสมอ กรณีค้างอยู่เป็น TH ซึ่งทำให้คำที่ส่งไปผิด ส่วนตัวไม่ชอบ Sendkeys ถ้าเลือกได้
4 @R18999
ขอบคุณครับ ขอลองดูตามที่แนะนำก่อนนะครับ เดี่ยวจะรายงานผลครับ
5 @R19028
ขอบคุณ TTT ครับ ผมลองใช้กับ windows7 ได้ ผมก็หลงทำกับ Windows8 ตั้งนานเพราะใช้ windows8 อยู่ แต่ที่จริง user เขาก็ใช้ windows7 อยู่แล้ว ก็คงไม่มีปัญหาอะไร
แต่ปัญหาที่ใช้กับ Windows8 ไม่ได้เดี่ยวต้องศึกษาต่อไป
ขอบคุณครับ จบหัวข้อนี้เลยครับ
แต่ปัญหาที่ใช้กับ Windows8 ไม่ได้เดี่ยวต้องศึกษาต่อไป
ขอบคุณครับ จบหัวข้อนี้เลยครับ
Time: 0.3416s