สอบถามเรื่อง
กระทู้เก่าบอร์ด อ.Yeadram

 1,568   4
URL.หัวข้อ / URL
สอบถามเรื่อง

ผมได้ไฟล์ Access มาครับเลยลองแกะหาฟังก์ชั่นเพื่อหาแนวทางใช้งานเจอ VBA ชุดนี้ครับ

**ใน Module
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
                            
Public Function UserName() As String
Dim sBuffer As String
Dim lSize As Long
    sBuffer = Space$(255)
    lSize = Len(sBuffer)
    Call GetUserName(sBuffer, lSize)
    UserName = "" & UCase$(Left(sBuffer, lSize - 1))
End Function


ผมเลยสร้าง Form ขึ้นมาเพื่อลองเรียกใช้งานดูครับ โดยใช้ Event on open
ซึ่งผลลัพที่ได้คือ Username ที่ Login เข้าใช้งานเครื่องๆนี้

Private Sub Form_Open(Cancel As Integer)
MsgBox "UserName : " & UserName()
End Sub

รบกวนช่วยแนะนำหน่อยครับว่า
1. Lib "advapi32.dll" ส่วนนี้ประกาศไว้ใ้งานเรื่องอะไรครับ
2. Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long ส่วนนี้หมายถึงอะไรครับเป็นฟังก์ชั่นใน Access อยู่แล้วมั้ยครับ เพราะไม่มีประกาศหรือเรียกใช้ที่จุดอื่นเลยครับ
3. ส่วนไหนที่ดึง Username (User Lan) จากเครื่องมาใช้ครับ

ขอบคุณครับ

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

1 @R19022
ขอโทษด้วยครับที่พิมหัวข้อไม่ครบ ที่ต้องการถามเป็นเรื่อง VBA ที่ใช้ดึง UserName กับ Computer Name ครับ

ส่วนของ Computername ดังนี้ครับ

Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Public Function ComName() As String
Dim sBuffer As String
    Dim lSize As Long
    sBuffer = Space(255)
    lSize = Len(sBuffer)
    Call GetComputerName(sBuffer, lSize)
    ComName = UCase$("" & Left$(sBuffer, lSize))
End Function


ตอนเรียกใช้ผมใช้วิธีเดียวกับด้านบนครับ โดยจุดแตกต่างคือใช้ Lib "kernel32" กับ Alias "GetComputerNameA" แทน
ผลที่ออกมาได้ชื่อ Computer ครับ

การใช้งานในโปรแกรม Access ที่เจอคือดึงค่า User มาตรวจกับข้อมูล user ใน table ว่ามีสิทธิ์ใช้งานโปรแกรมนี้หรือไม่ครับ
ผมสนใจวิธีการดึงข้อมูลส่วนนี้ครับเลยอยากทำความเข้าใจว่าแต่ละส่วนของโค้ดหมายถึงอะไรครับ

ขอบคุณครับ
2 @R19023
ทั้งหมดของฟังก์ชั่นคือการเรียก API ครับ
API คือช่องทาง การเชื่อมต่อ เพื่อพูดคุยกัน จากระบบหนึ่ง ไปสู่ระบบอื่นๆ ในที่นี้หมายถึงการติดต่อกับระบบปฏิบัติการ OS MS Windows
ทั้งนี้รูปแบบและความสามารถ ขึ้นอยู่กับ Windows เองว่าจะให้โปรแกรมเมอร์สามารถใช้งาน เรียกดู สั่งการอะไรได้บ้าง ซึ่งก็ต้องศึกษาในเรื่องของ API อีกที ซึ่ง API มีความจำเป็นมากสำหรับนักพัฒนาโปรแกรม เพราะเราจำเป็นต้องตรวจสอบทุกสิ่งอย่างของระบบที่ใช้เพื่อทำให้โปรแกรมมีความยืดหยุ่นสูง ง่ายๆอย่างเช่นหลักๆที่เป็นปัญหาของนักพัฒนาไม่ว่าจะเป็นโปรแกรมหรือทำเว็บ ก็คือโหมดของหน้าจอแต่ละเครื่องที่ใช้ ซึ่งไม่เท่ากัน การเรียก API ติดต่อกับระบบที่ใช้งานอยู่เพื่อส่งค่าโหมดหน้าจอกลับมาทำให้เราสามารถสร้างทางเลือกได้ว่า โหมดที่เครื่องกำลังรันโปรแกรมเราอยู่ขนาดเท่าไหร่ ควรปรับขนาด Object ต่างๆเท่าไหร่ ทำให้เกิดความยืดหยุ่นในการใช้งานของแต่ละ User เป็นต้น
ส่วนเรื่องค่าตัวแปรต่างๆว่าให้ค่าอะไรหมายถึงอะไรอันนี้ก็ต้องไปหาดูในเว็บของไมรโครซอฟเค้าอะครับ พวกนี้เป็นข้อมูลเปิดอยู่

ปล. เนื่องด้วยความหลากหลายทางภาษา จริงๆใน VBA เอง มีความสั่งจำพวก Environ Function ( ส่งออกค่าเป็นประเภทข้อมูล String ที่สอดคล้องกับตัวแปรสภาพแวดล้อมของระบบปฏิบัติการ) ซึ่งหากคุณต้องการให้ระบบส่งค่า Computer Name หรือ User Name ก็สามารถใช้คำสั่งอย่างนี้ได้เช่นกันครับ

MsgBox Environ$("Computername")
MsgBox Environ$("Username")
3 @R19026
ขอบคุณครับ จะไปลองศึกษาดูครับเรื่อง API
4 @R20207
แล้วถ้าแปลงเป็น php จะเขียนยังไงคับ ผู้รู้ช่วยตอบหน่อยครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.4090s