vb341
جمعه 28 مرداد 1384, 15:13 عصر
دوستان من میخواهم زمانیکه برنامه میخواد اجراء بشه فرمت تاریخ رو تو کنترل پانل تغییر بده و به فرمت دلخواه ما در بیاره . چکار باید بکنم ؟
حامد مصافی
شنبه 29 مرداد 1384, 09:03 صبح
سلام
این فرمت در رجیستری ذخیره میشه
کلید زیر:
HKEY_USERS\.DEFAULT\Control Panel\International\sTimeFormat
vb341
شنبه 29 مرداد 1384, 22:12 عصر
از راهنمائی تون ممنون . ولی چکار باید بکنم
javad_hosseiny
شنبه 29 مرداد 1384, 23:24 عصر
در کد نویسی اتان ابتدا متغیری از نوع رجیستری تعریف می کنید و سپس با استفاده از دستور Openkey آدرس موردنظر در رجیستری را باز کرده و توسط دستور writestring مقدار موردنظر جهت متغیر موردنظر در رجیستری را مقداردهی می کنید
البته فکر کنم دوستمون بد آدرس داده (نسبت به تعیین کلید مربوطه در رجیستری (چون اون آدرس مربوط به فرمت ساعت می باشد)) و آدرس مربوط به فرمت تاریخ :
HKEY_USERS\.DEFAULT\Control Panel\International\sShortDate
و همچنین
HKEY_USERS\.DEFAULT\Control Panel\International\sLongDate
باشد
و کدنویسی اش فکر کنم بدین صورت درست باشد
var Reg : TRegistry;
begin
Reg := TRegistry.Create;
with Reg do
try
RootKey := HKEY_USERS;
if OpenKey('.DEFAULT\Control Panel\International',False) then
Begin
WriteString('sShortDate','yyyy/MM/dd'); //or other format
// or for save long of date in regiester
// WriteString('sLongDate','yyyy/MM/dd'); //or other format
CloseKey;
end;
finally
Reg.Free;
end;//try..finally
end;
بابک زواری
یک شنبه 30 مرداد 1384, 19:33 عصر
یک نگاه هم به Iniهای داخل پوشه ویندوز بنداز توی وندوز 98 اونجا رو هم باید تغییر بدی
حامد مصافی
دوشنبه 31 مرداد 1384, 12:52 عصر
سلام
جواد خان اولاً این کد وال دلفیه و اینجا انجمن وی بی
دوماً در قسمت uses باید یونیت Registry رو اضافه کنید تا این کد کار کنه
اینم یک ماژول برای کار با رجیستری
Rem Hamed Masafi
Rem Ineed: No Module!
Option Explicit
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" ( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
ByVal Reserved As Long, _
ByVal lpClass As String, _
ByVal dwOptions As Long, _
ByVal samDesired As Long, _
ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, _
ByRef phkResult As Long, _
ByRef lpdwDisposition As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" ( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
ByVal ulOptions As Long, _
ByVal samDesired As Long, _
ByRef phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" ( _
ByVal hKey As Long, _
ByVal lpValueName As String, _
ByVal lpReserved As Long, _
ByRef lpType As Long, _
ByVal lpData As String, _
ByRef lpcbData As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" ( _
ByVal hKey As Long, _
ByVal lpValueName As String, _
ByVal Reserved As Long, _
ByVal dwType As Long, _
ByVal lpData As String, _
ByVal cbData As Long) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" ( _
ByVal hKey As Long, _
ByVal lpValueName As String) As Long
' Reg Data Types...
Const REG_SZ = 1 ' Unicode nul terminated string
Const REG_EXPAND_SZ = 2 ' Unicode nul terminated string
Const REG_DWORD = 4 ' 32-bit number
' Reg Create Type Values...
Const REG_OPTION_NON_VOLATILE = 0 ' Key is preserved when system is rebooted
' Reg Key Security Options...
Const READ_CONTROL = &H20000
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_CREATE_LINK = &H20
Const KEY_WRITE = KEY_SET_VALUE + KEY_CREATE_SUB_KEY + READ_CONTROL
Const KEY_READ = KEY_QUERY_VALUE + _
KEY_ENUMERATE_SUB_KEYS + _
KEY_NOTIFY + _
READ_CONTROL
Const KEY_EXECUTE = KEY_READ
Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + _
KEY_SET_VALUE + _
KEY_CREATE_SUB_KEY + _
KEY_ENUMERATE_SUB_KEYS + _
KEY_NOTIFY + _
KEY_CREATE_LINK + _
READ_CONTROL
'This lines disabled by me' Reg Key ROOT Types...
'Const HKEY_CLASSES_ROOT = &H80000000
'Const HKEY_CURRENT_USER = &H80000001
'Const HKEY_LOCAL_MACHINE = &H80000002
'Const HKEY_USERS = &H80000003
'Const HKEY_PERFORMANCE_DATA = &H80000004
' Return Value...
Const ERROR_NONE = 0
Const ERROR_BADKEY = 2
Const ERROR_ACCESS_DENIED = 8
Const ERROR_SUCCESS = 0
'---------------------------------------------------------------
'- This lines added with me
'---------------------------------------------------------------
Public Enum eKeyRoot
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_LOCAL_MACHINE = &H80000002
HKEY_USERS = &H80000003
HKEY_PERFORMANCE_DATA = &H80000004
End Enum
'---------------------------------------------------------------
'- Registry Security Attributes TYPE...
'---------------------------------------------------------------
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Boolean
End Type
Public Function RegWriteA(KeyRoot As eKeyRoot, KeyName As String, SubKeyName As String, SubKeyValue As String) As Boolean
Dim rc As Long ' Return Code
Dim hKey As Long ' Handle To A Registry Key
Dim hDepth As Long '
Dim lpAttr As SECURITY_ATTRIBUTES ' Registry Security Type
lpAttr.nLength = 50 ' Set Security Attributes To Defaults...
lpAttr.lpSecurityDescriptor = 0 ' ...
lpAttr.bInheritHandle = True ' ...
'------------------------------------------------------------
'- Create/Open Registry Key...
'------------------------------------------------------------
rc = RegCreateKeyEx(KeyRoot, _
KeyName, _
0, _
REG_SZ, _
REG_OPTION_NON_VOLATILE, _
KEY_ALL_ACCESS, _
lpAttr, _
hKey, _
hDepth) ' Create/Open //KeyRoot//KeyName
If (rc <> ERROR_SUCCESS) Then GoTo CreateKeyError ' Handle Errors...
'------------------------------------------------------------
'- Create/Modify Key Value...
'------------------------------------------------------------
If (SubKeyValue = vbNullString) Then SubKeyValue = " " ' A Space Is Needed For RegSetValueEx() To Work...
rc = RegSetValueEx(hKey, _
SubKeyName, _
0, _
REG_SZ, _
SubKeyValue, _
LenB(StrConv(SubKeyValue, vbFromUnicode)))
If (rc <> ERROR_SUCCESS) Then GoTo CreateKeyError ' Handle Error
'------------------------------------------------------------
'- Close Registry Key...
'------------------------------------------------------------
rc = RegCloseKey(hKey) ' Close Key
RegWriteA = True ' Return Success
Exit Function ' Exit
CreateKeyError:
RegWriteA = False ' Set Error Return Code
rc = RegCloseKey(hKey) ' Attempt To Close Key
End Function
Public Function RegReadA(KeyRoot As eKeyRoot, _
KeyName As String, _
SubKeyRef As String, _
Optional ElseValue As String = vbNullString) As String
Dim I As Long ' Loop Counter
Dim rc As Long ' Return Code
Dim hKey As Long ' Handle To An Open Registry Key
Dim hDepth As Long '
Dim sKeyVal As String
Dim lKeyValType As Long ' Data Type Of A Registry Key
Dim tmpVal As String ' Tempory Storage For A Registry Key Value
Dim KeyValSize As Long ' Size Of Registry Key Variable
' Open RegKey Under KeyRoot {HKEY_LOCAL_MACHINE...}
'------------------------------------------------------------
rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey)
If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' Handle Error...
tmpVal = String$(1024, 0) ' Allocate Variable Space
KeyValSize = 1024 ' Mark Variable Size
'------------------------------------------------------------
' Retrieve Registry Key Value...
'------------------------------------------------------------
rc = RegQueryValueEx(hKey, SubKeyRef, 0, _
lKeyValType, tmpVal, KeyValSize) ' Get/Create Key Value
If (rc <> ERROR_SUCCESS) Then GoTo GetKeyError ' Handle Errors
tmpVal = Left$(tmpVal, InStr(tmpVal, Chr(0)) - 1)
'------------------------------------------------------------
' Determine Key Value Type For Conversion...
'------------------------------------------------------------
Select Case lKeyValType ' Search Data Types...
Case REG_SZ, REG_EXPAND_SZ ' String Registry Key Data Type
sKeyVal = tmpVal ' Copy String Value
Case REG_DWORD ' Double Word Registry Key Data Type
For I = Len(tmpVal) To 1 Step -1 ' Convert Each Bit
sKeyVal = sKeyVal + Hex(Asc(Mid(tmpVal, I, 1))) ' Build Value Char. By Char.
Next
sKeyVal = Format$("&h" + sKeyVal) ' Convert Double Word To String
End Select
RegReadA = sKeyVal
rc = RegCloseKey(hKey) ' Close Registry Key
Exit Function
GetKeyError:
RegReadA = ElseValue
rc = RegCloseKey(hKey) ' Close Registry Key
End Function
Public Function RegDeleteA(KeyRoot As eKeyRoot, _
KeyName As String, _
SubKeyRef As String) As Boolean
Dim rc As Long
Dim hKey As Long
Dim df As Long
rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey)
If (rc <> ERROR_SUCCESS) Then GoTo DeleteKeyError ' Handle Error...
df = RegDeleteValue(hKey, SubKeyRef)
RegDeleteA = df = 0
Exit Function
DeleteKeyError:
RegDeleteA = df = 0
End Function
javad_hosseiny
دوشنبه 31 مرداد 1384, 13:34 عصر
من فقط یه تیکه کد مربوطه به این کار را قرار دادم (و مطمئن کد قسمت های دیگر و ... و از جمله فعال کردن یونیت ها نیز از این جمله هستند توسط خود برنامه نویس باید نوشته شود) (و در حقیقت این یک بخش از برنامه بوده که مخصوص تغییر موردنظر در رجیستری می باشد)
در رابطه با تیتر فرم نیز اشتباه از من بوده می بخشید
(ولی فکر کنم قبلا تو بخش دلفی بوده و یکی از مدیران آن را انتقال داده)
vb341
چهارشنبه 02 شهریور 1384, 23:48 عصر
از راهنمائی تمام دوستان ممنون
ولی میخواستم ببینم راه ساده تری برای اینکار وجود نداره ؟
حامد مصافی
جمعه 04 شهریور 1384, 14:32 عصر
معمولاً دستکاری در ویندوز با یکی دو خط انجام نمیشه
در ضمن اینقدر هام پیچیده نیست
کد فوق را در قالب یک فایل کلاس ذخیره کنید و با آن کار کنید
سه تابع موجود در این کلاس به نظر من واضح هستند
اگر مشکلی دارید بگید
jk
یک شنبه 21 آبان 1385, 10:55 صبح
توصیه میکنم دستور
HKEY_USERS\.DEFAULT\Control Panel\International\sShortDate
را به صورت زیر به کار ببرید
HKEY_CURRENT_USERS\Control Panel\International\sShortDate
زمانی که برای کامپیوتر جاری چندین کاربر تعریف شده باشد در این حالت
HKEY_USER\.DEFAULT
جوابگو نخواهد بود.
mohammad462
یک شنبه 11 تیر 1396, 20:21 عصر
سلام
ببخشيد تاپيك قديمي هست ولي سوال بنده هم همينه.
ميشه ساده تر بيان كنيد؟
من ميخواسم نوع تقويم از برگردان فرانسه بشه برگردان انگليسي و تاريخ كوتاه و تاريخ طولاني رو تغيير بدم.امكانش هست اون قسمتها رو در كد بالا كه بايد تغيير بدم مشخص كنيد؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.