PDA

View Full Version : msg box فارسی



sarami
چهارشنبه 12 بهمن 1384, 22:10 عصر
http://www.barnamenevis.org/forum/showthread.php?t=37686
احساس کردم شاید این تاپیک که در قسمت access وجود داره بدرد خیلی از دوستان که با vb کار میکنن بخوره فایل ضمیمه رو از لینک دانلود کنین که شامل:
یک فانکشن که داخل محیط اکسس نوشته شده با add کردن اون به پروژه های vb هم میتونین ازش استفاده کنین تمام شرایط msgbox رو داره علاوه بر این که vbyes و vbno و همگی فارسی.
اینم کدش برا دوستانی که access برروی desktopشون نصب نیست . چون اینجا کد بهم میریزه بهتره همینجوری copy کنین و تو یه ماژول vb قرار بگیرین و past کنین.
Option Compare Database

Option Explicit

Private Const WH_CBT = 5
Private Const GWL_HINSTANCE = (-6)
Private Const HCBT_ACTIVATE = 5

'UDT for passing data through the hook
Private Type MSGBOX_HOOK_PARAMS
hwndOwner As Long
hHook As Long
End Type

'need this declared at module level as
'it is used in the call and the hook proc
Private MSGHOOK As MSGBOX_HOOK_PARAMS

Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long

Public Declare Function GetDesktopWindow Lib "user32" () As Long

Private Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long) As Long

Private Declare Function MessageBox Lib "user32" _
Alias "MessageBoxA" _
(ByVal hwnd As Long, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal wType As Long) 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 SetWindowText Lib "user32" _
Alias "SetWindowTextA" _
(ByVal hwnd As Long, _
ByVal lpString As String) As Long

Private Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long

Public Function MsgBoxFa(Prompt, Optional Buttons As VbMsgBoxStyle = vbOKOnly, Optional Tiltle = "", Optional HelpFile, Optional Context) As Long

'Wrapper function for the MessageBox API
Dim hwndThreadOwner As Long
Dim frmCurrentForm As Form
Set frmCurrentForm = Screen.ActiveForm

hwndThreadOwner = frmCurrentForm.hwnd

Dim hInstance As Long

Dim hThreadId As Long
Dim hwndOwner As Long
hwndOwner = GetDesktopWindow()
hInstance = GetWindowLong(hwndThreadOwner, GWL_HINSTANCE)
hThreadId = GetCurrentThreadId()

With MSGHOOK
.hwndOwner = hwndOwner
.hHook = SetWindowsHookEx(WH_CBT, _
AddressOf MsgBoxHookProc, _
hInstance, hThreadId)
End With



MsgBoxFa = MessageBox(hwndOwner, Prompt, Tiltle, Buttons)

End Function


Public Function MsgBoxHookProc(ByVal uMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long

If uMsg = HCBT_ACTIVATE Then

SetDlgItemText wParam, vbYes, "Èáå"
SetDlgItemText wParam, vbNo, "뒄"
SetDlgItemText wParam, vbIgnore, "áÛæ"
SetDlgItemText wParam, vbOK, "ÊÇííÏ"

UnhookWindowsHookEx MSGHOOK.hHook

End If

MsgBoxHookProc = False

End Function

sohrab o
پنج شنبه 13 بهمن 1384, 00:59 صبح
آقا ممنون کدت خیلی جالب بود

sarami
پنج شنبه 13 بهمن 1384, 13:34 عصر
خواهش قابلی نداشت عزیز

H_SH_VB
پنج شنبه 13 بهمن 1384, 18:36 عصر
daste golet dard nemikone
midooni chejoori bayad kolle function haaye tarif shode too acces ro too vb estefade kard? yani ehtemaalan bayad too ye dll bashe dige?

H_SH_VB
پنج شنبه 13 بهمن 1384, 18:43 عصر
ye moshkeliam dasht, bebakhshida:D in yes o no sh ye chize dige shode bood, asan maloom nabood chie

sarami
پنج شنبه 13 بهمن 1384, 19:02 عصر
اگه ویندوزت رو فارسی کنی مشکل حل میشه شایدم بخاطر فروم باشه بهتره از داخل فایل access اون فانکشن رو کپی کنی

Milad Mohseny
سه شنبه 18 بهمن 1384, 00:34 صبح
با سلام خدمت آقای sarami
من برنامه را دیدم خیلی خیلی عالی بود . لطفاً اگر میشود در مورد Hook به من توضیح دهید البته چون من خیلی مبتدی هستم یه جوری بگید که من بفهمم . و دیگر اینکه برنامه یک مشکل دارد مشکل این است که Message Box حالت Modal ندارد چه طوری میتوان این مشکل را حل کرد ؟

Milad Mohseny
چهارشنبه 19 بهمن 1384, 00:12 صبح
با با تور خدا یکی جواب مارو بده .

barnamenevis1978
شنبه 14 اردیبهشت 1387, 13:55 عصر
سلام
من يه برنامه تو اكسس دارم كه نوشته هاي msgbox رو به فارسي نشون نميده!
تو قسمت VBA فارسي نشون ميده ولي در قسمت اجرا به صورت نوشته هاي ناخواناست!
ممنون ميشم اگه راهنماييم كنيد.

barnamenevis1978
یک شنبه 15 اردیبهشت 1387, 08:55 صبح
ممنون ميشم اگه راهنماييم كنه
خيلي فوريه...

NNASER2AB
یک شنبه 15 اردیبهشت 1387, 09:28 صبح
اگه ویندوزت فارسی باشه مسئله تون حل میشه من امتحانش کردم و جواب داد.

barnamenevis1978
یک شنبه 15 اردیبهشت 1387, 09:41 صبح
ويندوزم فارسيه! يعني تو قسمت regional language تنظيمات فارسي رو انجام دادم! ولي باز هم درست كار نمي كنه!!
بايد تاپيك جديد ميساختم ؟؟

barnamenevis1978
دوشنبه 16 اردیبهشت 1387, 08:12 صبح
سلام
مشكل برطرف شد.
حق با شما بود. مشكل از ويندوز بود. چون كامپيوترها شبكه بود، adminastrator بايد تنظيمات رو درست مي كرد!

فاطمه وطن دوست
دوشنبه 16 اردیبهشت 1387, 15:20 عصر
سلام
http://barnamenevis.org/forum/showpost.php?p=485920&postcount=172