Làm sao việt hóa Caption trên From Win 64bit ? (1 người xem)

  • Thread starter Thread starter alohn
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

alohn

Thành viên chính thức
Tham gia
21/12/07
Bài viết
59
Được thích
13
Mình đã google mà tìm mãi không ra cách, bạn nào biết xin chỉ giúp.

Thank so much.

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 
Lần chỉnh sửa cuối:
Mình đã google mà tìm mãi không ra cách, bạn nào biết xin chỉ giúp.

Thank so much.

Vì tôi không có Win64bit nên không thử nghiệm được, nhưng tôi sẽ thử nghiệm code dưới đây và bạn test dùm xem nó có thể chạy được trên máy của bạn không nhé!

Thủ thục trong Standard Module:

[GPECODE=vb]
Option Explicit


#If VBA7 And Win64 Then 'Office 64-bit
Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare PtrSafe Function DefWindowProc Lib "user32.dll" Alias "DefWindowProcW" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
#Else ' Office 32-bit
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function DefWindowProc Lib "user32.dll" Alias "DefWindowProcW" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
#End If


Sub SetUnicodeCaption(ByVal frm As UserForm, ByVal UnicodeString As String)
Dim hwnd&
hwnd = FindWindow("ThunderDFrame", frm.Caption)
DefWindowProc hwnd, 12, 0, StrPtr(UnicodeString)
End Sub
[/GPECODE]

Thủ tục trong UserForm Module:

[GPECODE=vb]
Private Sub UserForm_Initialize()
SetUnicodeCaption Me, Sheet1.Range("A1")
End Sub
[/GPECODE]
 

File đính kèm

Upvote 0
Mình chạy thử thì báo lỗi ở hàm StrPtr, lỗi Type mismatch ở thủ thủ tục SetUnicodeCaption, mình có sửa lại các hàm api thành Declare PtrSafe Function để phù hơp với win 64 bit, không biết có chuẩn không. Hình như hàm StrPtr không hỗ trợ cho win 64 bit

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 
Lần chỉnh sửa cuối:
Upvote 0
Mình chạy bản Office 64

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 
Lần chỉnh sửa cuối:
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Mình chạy thử thì báo lỗi ở hàm StrPtr, lỗi Type mismatch ở thủ thủ tục SetUnicodeCaption, mình có sửa lại các hàm api thành Declare PtrSafe Function để phù hơp với win 64 bit, không biết có chuẩn không. Hình như hàm StrPtr không hỗ trợ cho win 64 bit
Bạn thử thay Long thành LongPt xem sao!
 
Upvote 0
Mình đã chuyển thành LongPtr nhưng vẫn không được bạn ạ

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 
Lần chỉnh sửa cuối:
Upvote 0
Mình đã chuyển thành LongPtr nhưng vẫn không được bạn ạ
Thử một lần nữa xem, bạn bỏ hết code trong Standard Module trong file tôi gửi lên, rồi thay bằng thủ tục này xem sao!

Mã:
Declare PtrSafe Function FindWindow Lib "user32" _
        Alias "FindWindowA" ( _
        ByVal lpClassName As String, _
        ByVal lpWindowName As String) As LongPtr


Declare Function DefWindowProc Lib "user32.dll" _
        Alias "DefWindowProcW" ( _
        ByVal hwnd As Long, ByVal wMsg As Long, _
        ByVal wParam As Long, ByVal lParam As Long) As Long


Sub SetUnicodeCaption(ByVal frm As UserForm, ByVal UnicodeString As String)
        Dim hwnd&
        hwnd = FindWindow("ThunderDFrame", frm.Caption)
        DefWindowProc hwnd, 12, 0, StrPtr(UnicodeString)
End Sub
 
Upvote 0
Vẫn lỗi bạn ạ, giờ nó lại báo ở FindWindow là type mismatchUntitled.jpg

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 
Lần chỉnh sửa cuối:
Upvote 0
Vẫn lỗi bạn ạ, giờ nó lại báo ở FindWindow là type mismatchView attachment 110903

Tôi không có Win 64 bit cũng chả có office 64 bit để có được cái thú thử nghiệm. Tôi chưa có kinh nghiệm với 64 bit.
Bạn thử thay khai báo ở bài #2 của bạn Nghĩa thành

Mã:
#If VBA7 And Win64 Then 'Office 64-bit
    Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" _
          (ByVal lpClassName As String, ByVal lpWindowName As String) As [B][COLOR=#ff0000]LongPtr[/COLOR][/B]
    Declare PtrSafe Function DefWindowProc Lib "user32.dll" Alias "DefWindowProcW" _
          (ByVal hwnd As [B][COLOR=#ff0000]LongPtr[/COLOR][/B], ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As [B][COLOR=#ff0000]LongPtr[/COLOR][/B]
#Else ' Office 32-bit
    Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
          (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Declare Function DefWindowProc Lib "user32.dll" Alias "DefWindowProcW" _
          (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
#End If

Và thành

Mã:
Sub SetUnicodeCaption(ByVal frm As UserForm, ByVal UnicodeString As String)
    Dim hwnd as [B][COLOR=#ff0000]LongPtr[/COLOR][/B]
 
Upvote 0
Cảm ơn các bạn đã nhiệt tình giúp.

Vẫn báo lỗi Type mismach

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn các bạn đã nhiệt tình giúp.

Vẫn báo lỗi Type mismach

Cụ thể lỗi ở đâu? Bạn nên nói rõ cho khỏi phải suy đoán.

LParam là địa chỉ trong bộ nhớ của chuỗi. Vậy ta dùng LongPtr.

Bạn thử sửa thành

Mã:
Declare PtrSafe Function DefWindowProc Lib "user32.dll" Alias "DefWindowProcW" _
          (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As LongPtr) As LongPtr

KIến thức thêm: StrPtr trong 64 bit trả về giá trị 64 bit LongPtr

Nếu cần cả wParam as LongPtr
-----------------

Phiên bản cuối cùng

Mã:
Declare PtrSafe Function DefWindowProc Lib "user32" Alias "DefWindowProcW" (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As LongPtr

Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
 
Lần chỉnh sửa cuối:
Upvote 0
Cuối cùng thì ok rồi ạ, chắc lỗi ở đây LParam as LongPtr vì StrPtr trong 64 bit trả về giá trị 64 bit LongPtr
Mình up file hoàn chỉnh lên


quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cuối cùng thì ok rồi ạ, chắc lỗi ở đây LParam as LongPtr vì StrPtr trong 64 bit trả về giá trị 64 bit LongPtr
Mình up file hoàn chỉnh lên

Nói chính xác thì
1. StrPtr trong 64 bit trả về giá trị 64 bit LongPtr
2. Nhưng VÌ thì là VÌ LParam chứa địa chỉ của chuỗi trong bô nhớ nên LParam as LongPtr

Lúc trước tôi viết kiểu "đi tắt" nên sẽ làm người đọc hiểu lầm. Đã sửa lại.
 
Lần chỉnh sửa cuối:
Upvote 0

Bài viết mới nhất

Back
Top Bottom