vb341
جمعه 28 مرداد 1384, 16:13 عصر
دوستان من میخواهم زمانیکه برنامه میخواد اجراء بشه فرمت تاریخ رو تو کنترل پانل تغییر بده و به فرمت دلخواه ما در بیاره . چکار باید بکنم ؟
حامد مصافی
شنبه 29 مرداد 1384, 10:03 صبح
سلام
این فرمت در رجیستری ذخیره میشه
کلید زیر:
HKEY_USERS\.DEFAULT\Control Panel\International\sTimeFormat
vb341
شنبه 29 مرداد 1384, 23:12 عصر
از راهنمائی تون ممنون . ولی چکار باید بکنم
javad_hosseiny
یک شنبه 30 مرداد 1384, 00: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, 20:33 عصر
یک نگاه هم به Iniهای داخل پوشه ویندوز بنداز توی وندوز 98 اونجا رو هم باید تغییر بدی
حامد مصافی
دوشنبه 31 مرداد 1384, 13: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, 14:34 عصر
من فقط یه تیکه کد مربوطه به این کار را قرار دادم (و مطمئن کد قسمت های دیگر و ... و از جمله فعال کردن یونیت ها نیز  از این جمله هستند توسط خود برنامه نویس باید نوشته شود)   (و در حقیقت این یک بخش از برنامه بوده که مخصوص تغییر موردنظر در رجیستری می باشد)
در رابطه با تیتر فرم نیز اشتباه از من بوده می بخشید 
(ولی فکر کنم قبلا تو بخش دلفی بوده و یکی از مدیران آن را انتقال داده)
vb341
پنج شنبه 03 شهریور 1384, 00:48 صبح
از راهنمائی تمام دوستان ممنون
ولی میخواستم ببینم راه ساده تری برای اینکار وجود نداره ؟
حامد مصافی
جمعه 04 شهریور 1384, 15:32 عصر
معمولاً دستکاری در ویندوز با یکی دو خط انجام نمیشه
در ضمن اینقدر هام پیچیده نیست
کد فوق را در قالب یک فایل کلاس ذخیره کنید و با آن کار کنید
سه تابع موجود در این کلاس به نظر من واضح هستند
اگر مشکلی دارید بگید
jk
یک شنبه 21 آبان 1385, 11:55 صبح
توصیه میکنم دستور 
HKEY_USERS\.DEFAULT\Control Panel\International\sShortDate
را به صورت زیر به کار ببرید
HKEY_CURRENT_USERS\Control Panel\International\sShortDate
زمانی که برای کامپیوتر جاری چندین کاربر تعریف شده باشد در این حالت  
HKEY_USER\.DEFAULT
جوابگو نخواهد بود.
mohammad462
یک شنبه 11 تیر 1396, 21:21 عصر
سلام
ببخشيد تاپيك قديمي هست ولي سوال بنده هم همينه.
ميشه ساده تر بيان كنيد؟
من ميخواسم نوع تقويم از برگردان فرانسه بشه برگردان انگليسي و تاريخ كوتاه و تاريخ طولاني رو تغيير بدم.امكانش هست اون قسمتها رو در كد بالا كه بايد تغيير بدم مشخص كنيد؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.