ورود

View Full Version : مشکل در تبدیل کد به دات نت



Hossis
پنج شنبه 22 مرداد 1388, 09:25 صبح
سلام
من یک کد برای فارسی کردن مسج باکس در وی بی 6 دارم ولی موقع تبدیل به دات نت،‌ یک خط اون خطا می ده
ببینید می تونید مشکل رو برطرف کنید؟؟



Option Explicit
Private m_hHook As Long
Private Const IDOK = 1
Private Const IDCANCEL = 2
Private Const IDABORT = 3
Private Const IDRETRY = 4
Private Const IDIGNORE = 5
Private Const IDYES = 6
Private Const IDNO = 7
Private Const WH_CBT = 5
Private Const GWL_HINSTANCE = (-6)
Private Const HCBT_ACTIVATE = 5
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Private Declare Function SetDlgItemText Lib "USER32" Alias "SetDlgItemTextA" (ByVal hDlg As Long, ByVal nIDDlgItem As Long, ByVal lpString As String) As Long
Private Declare Function SetWindowsHookEx Lib "USER32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "USER32" (ByVal hHook As Long) As Long


Public Sub MessageBoxH(hwndThreadOwner As Long)

Dim hInstance As Long
Dim hThreadId As Long

hInstance = GetWindowLong(hwndThreadOwner, GWL_HINSTANCE)
hThreadId = GetCurrentThreadId()

'''' محل اشکال این جاست
m_hHook = SetWindowsHookEx(WH_CBT, AddressOf MsgBoxHookProc, hInstance, hThreadId)

End Sub

Private Function MsgBoxHookProc(ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

If uMsg = HCBT_ACTIVATE Then
SetDlgItemText wParam, IDOK, "تأييد"
SetDlgItemText wParam, IDCANCEL, "لغو"
SetDlgItemText wParam, IDABORT, "قطع عمل"
SetDlgItemText wParam, IDRETRY, "سعي مجدد"
SetDlgItemText wParam, IDIGNORE, "صرف نظر"
SetDlgItemText wParam, IDYES, "بله"
SetDlgItemText wParam, IDNO, "نه"

UnhookWindowsHookEx m_hHook
End If
MsgBoxHookProc = False

End Function

Public Function MsgFox(پنجره As Form, متن_پيام As String, Optional رمز_پيام As VbMsgBoxStyle, Optional عنوان_پيام As String) As Long
MessageBoxH پنجره.hWnd
If IsMissing(رمز_پيام) Then رمز_پيام = vbOKOnly
If IsMissing(عنوان_پيام) Then عنوان_پيام = پنجره.Caption
' If IsMissing(نوع_پيام) Then دکمه_پيام = vbOKOnly, Optional نوع_پيام As Long


MsgFox = MsgBox(متن_پيام, رمز_پيام + vbMsgBoxRtlReading + vbMsgBoxRight, عنوان_پيام)
End Function



مشکل در این سطر است !




m_hHook = SetWindowsHookEx(WH_CBT, AddressOf MsgBoxHookProc, hInstance, hThreadId)


البته این کد وی بی 6 قبل از تبدیل است و بعد از تبدیل چندان تفاوتی نمی‌کند

Hossis
پنج شنبه 29 مرداد 1388, 17:01 عصر
کسی نیست این کد رو درک کنه؟
تمام مشکل سر adressOf هست که به هیچ صراطی مستقیم نمی‌شه
لطفا یک کاری بکنید