กระทู้เก่าบอร์ด อ.Yeadram
        
           1,586   6		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        API สำหรับเครื่อง 64 bit      
    
      ใครเคยเขียน API สำหรับเครื่อง 64 bit บ้างครับ
ผมต้องการใช้ function การกดปุ่ม Print Screen (PrtScr) ซึ่ง Access ไม่รองรับ (ไม่สามารถใช้ Sendkeys ได้ สั่งไปก็ไม่ทำงาน)
ผมจึงต้องใช้ API ดังนี้
#If Win32 Then
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
#ElseIf Win64 Then
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As IntPtr)
#End If
ซึ่งก็เผื่อไว้ทั้ง 32 และ 64 bit แล้ว
ปัญหาก็คือ เวลาไปติดตั้ง เครื่อง 32 bit ไม่มีปัญหา
แต่เครื่อง 64 bit บางเครื่องได้ บางเครื่อง จะ error ตรง Sub ครับ (โทษทีครับ ลืมจดมาว่า errror message อะไร)
ตอนนี้ยังมึนอยู่ครับ แก้ไม่ถูก ใครพอจะทราบสาเหตุ หรือ ทางแก้ รบกวนด้วยนะครับ
    
  ผมต้องการใช้ function การกดปุ่ม Print Screen (PrtScr) ซึ่ง Access ไม่รองรับ (ไม่สามารถใช้ Sendkeys ได้ สั่งไปก็ไม่ทำงาน)
ผมจึงต้องใช้ API ดังนี้
#If Win32 Then
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
#ElseIf Win64 Then
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As IntPtr)
#End If
ซึ่งก็เผื่อไว้ทั้ง 32 และ 64 bit แล้ว
ปัญหาก็คือ เวลาไปติดตั้ง เครื่อง 32 bit ไม่มีปัญหา
แต่เครื่อง 64 bit บางเครื่องได้ บางเครื่อง จะ error ตรง Sub ครับ (โทษทีครับ ลืมจดมาว่า errror message อะไร)
ตอนนี้ยังมึนอยู่ครับ แก้ไม่ถูก ใครพอจะทราบสาเหตุ หรือ ทางแก้ รบกวนด้วยนะครับ
				6 Reply in this Topic. Dispaly 1  pages and you are on page number 1 
				
        
    2 @R13264    
        
  
      Note that Declare statements without the PtrSafe attribute are assumed not to be compatible with the 64-bit version of Office 2010.
ไม่ทราบลองอ่านที่นี่ดูยังครับ
http://msdn.microsoft.com/en-us/library/ee691831.aspx
    
  ไม่ทราบลองอ่านที่นี่ดูยังครับ
http://msdn.microsoft.com/en-us/library/ee691831.aspx
        
    3 @R13265    
        
  
      ไม่แน่ใจนะ แต่อาจเป็นที่เรื่องของการ Convert ค่าเป็น 64 bit หรือเปล่า ที่เราต้องใช้ฟังก์ชั่นนี่ด้วย
VarPtr: Variant converter. Returns a LongPtr on 64-bit versions, and a Long on 32-bit versions (4 bytes).
ObjPtr: Object converter. Returns a LongPtr on 64-bit versions, and a Long on 32-bit versions (4 bytes).
StrPtr: String converter. Returns a LongPtr on 64-bit versions, and a Long on 32-bit versions (4 bytes).
 
    
    
  VarPtr: Variant converter. Returns a LongPtr on 64-bit versions, and a Long on 32-bit versions (4 bytes).
ObjPtr: Object converter. Returns a LongPtr on 64-bit versions, and a Long on 32-bit versions (4 bytes).
StrPtr: String converter. Returns a LongPtr on 64-bit versions, and a Long on 32-bit versions (4 bytes).
        
    4 @R13281    
        
  
  
      ขอบคุณครับ ยังไม่แน่ใจว่าจะแก้ปัญหาได้หรือเปล่า เผอิญติดงานอื่น แล้วจะกลับมาแจ้งความคืบหน้าต่อไป    
    
  
        
    6 @R13293    
        
    
      ขอบคุณคุณ ผ่านไป นะครับ
อันนี้น่าจะเข้าเค้า เป็นที่คุณ yeadram เคยลงไว้นี้เอง
ผมก็ว่าเคยเห็นแวบๆ แต่ search ไม่เจอ
    
  อันนี้น่าจะเข้าเค้า เป็นที่คุณ yeadram เคยลงไว้นี้เอง
ผมก็ว่าเคยเห็นแวบๆ แต่ search ไม่เจอ
      Time: 0.0697s
    
      
		
แต่ไม่ใช่ทุกเครื่องที่เป็น Access 2010 64 bit จะมีปัญหานะครับ