Changeset 577


Ignore:
Timestamp:
Aug 5, 2008, 4:59:56 AM (13 years ago)
Author:
NoWest
Message:
 
Location:
trunk/ab5.0/ablib/src/Classes
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/ablib/src/Classes/ActiveBasic/Windows/Registry.ab

    r573 r577  
    3535    rootkeyname As String
    3636    subkeyname As String
     37    edited As Boolean
    3738
    3839    Virtual Sub ~RegistryKey( )
     
    4344    'キーの名前を取得します。
    4445    Function Name( ) As String
    45         Dim name = rootkeyname + "\" + subkeyname
     46        Dim name As String
     47        If IsNothing(This.subkeyname) Then
     48            name = This.rootkeyname
     49        Else
     50            name = This.rootkeyname + "\" + This.subkeyname
     51        End If
    4652        Return name
    4753    End Function
     
    6470    'キーを閉じ、キーの内容が変更されている場合はディスクへフラッシュします。 
    6571    Sub Close( )
    66         This.Flush()
     72        If This.edited Then This.Flush()
    6773        RegCloseKey( This.handle )
    6874    End Sub
     
    7076    '新しいサブキーを作成するか、または既存のサブキーを開きます。 
    7177    Function CreateSubKey( subkey As String ) As RegistryKey
     78        If IsNothing(subkey) Then Return Nothing
     79        Dim buf = subkey
     80        '末尾の\を除去
     81        If buf.EndsWith( "\" ) Then
     82            buf = buf.Remove( buf.Length - 1 )
     83        End If
     84        '先頭の\を除去
     85        If buf.StartsWith( "\" ) Then
     86            buf = buf.Remove( 0, 1 )
     87        End If
     88
    7289        Dim key As Detail._System_RegistryKey
    7390        key.Root( This.rootkey )
    74         key.SubKey( subkey )
     91        If IsNothing(This.subkeyname) Then
     92            key.SubKey( buf )
     93        Else
     94            key.SubKey( This.subkeyname + "\" + buf )
     95        End If
    7596        key.Create( )
    7697        Return key
     
    87108    '指定したサブキーを削除します。文字列 subkey では、大文字と小文字は区別されません。 
    88109    Sub DeleteSubKey ( subkey As String )
     110        If IsNothing( subkey ) Then Exit Sub
     111        This.DeleteSubKey( subkey, True )
    89112    End Sub
    90113    Sub DeleteSubKey ( subkey As String, throwOnMissingSubKey As Boolean )
     114        If IsNothing( subkey ) Then Exit Sub
     115        Dim key = This.OpenSubKey(subkey)
     116        If key.SubKeyCount <> 0 Then
     117            key.Close()
     118            If throwOnMissingSubKey Then
     119                Throw New InvalidOperationException
     120            Else
     121                Exit Sub
     122            End If
     123        End If
     124        RegDeleteKey( This.handle, ToTCStr(subkey) )
     125        This.edited = True
    91126    End Sub
    92127
    93128    'サブキーとその子サブキーを再帰的に削除します。文字列 subkey では、大文字と小文字は区別されません。 
    94129    Sub DeleteSubKeyTree ( subkey As String )
     130        If IsNothing( subkey ) Then Exit Sub
     131        Dim key = This.OpenSubKey( subkey )
     132        If key.SubKeyCount <> 0 Then
     133            Dim list = key.GetSubKeyNames()
     134            Dim s As String
     135            Foreach s In list
     136                key.DeleteSubKeyTree( s )
     137            Next
     138        End If
     139        This.DeleteSubKey( subkey, False )
    95140    End Sub
    96141
    97142    '指定した値をこのキーから削除します。 
    98143    Sub DeleteValue ( name As String )
    99         RegDeleteValue( This.handle, name )
     144        If IsNothing( name ) Then Exit Sub
     145        This.DeleteValue( name, True )
    100146    End Sub
    101147    Sub DeleteValue ( name As String, throwOnMissingValue As Boolean )
     148        If IsNothing( name ) Then Exit Sub
     149        RegDeleteValue( This.handle, ToTCStr(name) )
     150        This.edited = True
    102151    End Sub
    103152
     
    172221    '指定した名前に関連付けられた値のレジストリ データ型を取得します。 
    173222    Function GetValueKind ( name As String ) As RegistryValueKind
     223        If IsNothing( name ) Then Exit Sub
    174224        Dim dwType As DWord
    175225        If ERROR_SUCCESS <> RegQueryValueEx( This.handle, ToTCStr(name), 0, VarPtr(dwType), NULL, NULL ) Then
     
    212262    '指定したサブキーを取得します。 
    213263    Function OpenSubKey ( name As String ) As RegistryKey
     264        If IsNothing(name) Then Return Nothing
     265        Dim buf = name
     266        '末尾の\を除去
     267        If buf.EndsWith( "\" ) Then
     268            buf = buf.Remove( buf.Length - 1 )
     269        End If
     270        '先頭の\を除去
     271        If buf.StartsWith( "\" ) Then
     272            buf = buf.Remove( 0, 1 )
     273        End If
     274
    214275        Dim key As Detail._System_RegistryKey
    215276        key.Root( This.rootkey )
    216         key.SubKey( name )
     277        If IsNothing(This.subkeyname) Then
     278            key.SubKey( buf )
     279        Else
     280            key.SubKey( This.subkeyname + "\" + buf )
     281        End If
    217282        key.Open( )
    218283        Return key
     
    273338
    274339    Sub SubKey( subkey As String )
     340        If IsNothing(subkey) Then Exit Sub
    275341        This.subkeyname = subkey
    276         If This.subkeyname.EndsWith( "\" ) Then
    277             This.subkeyname.Remove( This.subkeyname.Length - 1 )
    278         End If
    279342    End Sub
    280343
    281344    Sub Create()
    282         RegCreateKeyEx( This.rootkey, ToTCStr(This.subkeyname), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_READ or KEY_WRITE, NULL, This.handle, NULL )
     345        RegCreateKeyEx( This.rootkey, ToTCStr(This.subkeyname), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, This.handle, NULL )
    283346    End Sub
    284347'   Function Create( permissionCheck As RegistryKeyPermissionCheck ) As RegistryKey
     
    290353
    291354    Sub Open()
    292         RegOpenKeyEx( This.rootkey, ToTCStr(This.subkeyname), 0, KEY_READ or KEY_WRITE, This.handle )
     355        RegOpenKeyEx( This.rootkey, ToTCStr(This.subkeyname), 0, KEY_ALL_ACCESS, This.handle )
    293356    End Sub
    294357'   Function Open( permissionCheck As RegistryKeyPermissionCheck ) As RegistryKey
  • trunk/ab5.0/ablib/src/Classes/System/Collections/Generic/Queue.ab

    r560 r577  
    55
    66Class Queue<T>
    7     Inherits ICollection
     7    Implements IEnumerable<T>, IEnumerator<T>, System.Collections.ICollection
    88
    99    items As *T
     
    4545    @date   2008/07/20
    4646    */
    47     Override Sub Clear ()
     47    Sub Clear ()
    4848        This.count = 0
    4949    End Sub
  • trunk/ab5.0/ablib/src/Classes/System/Collections/Generic/Stack.ab

    r560 r577  
    55
    66Class Stack<T>
    7     Inherits ICollection
     7    Implements IEnumerable<T>, IEnumerator<T>, System.Collections.ICollection
    88
    99    items As *T
     
    4545    @date   2008/07/20
    4646    */
    47     Override Sub Clear ()
     47    Sub Clear ()
    4848        This.count = 0
    4949    End Sub
  • trunk/ab5.0/ablib/src/Classes/System/Collections/Generic/misc.ab

    r557 r577  
    2222Public
    2323    ' Property
    24     Virtual Function Count() As Long
    25     End Function
    26     Virtual Function IsReadOnly() As Boolean
    27     End Function
     24    Abstract Function Count() As Long
     25    Abstract Function IsReadOnly() As Boolean
    2826
    2927    ' Methods
    30     Virtual Sub Add ( item As T )
    31     End Sub
    32     Virtual Sub Clear ()
    33     End Sub
    34     Virtual  Function Contains ( item As T ) As Boolean
    35     End Function
    36     Virtual Sub CopyTo (ByRef array As List<T>, arrayIndex As Long )
    37     End Sub
    38     Virtual Function Remove ( item As T ) As Boolean
    39     End Function
     28    Abstract Sub Add ( item As T )
     29    Abstract Sub Clear ()
     30'   Abstract  Function Contains ( item As T ) As Boolean
     31'   Abstract Sub CopyTo (ByRef array As List<T>, arrayIndex As Long )
     32    Abstract Function Remove ( item As T ) As Boolean
    4033End Class
    4134
     
    4538Public
    4639    ' Property
    47     Virtual Sub Operator[] ( index As Long, item As T )
    48     End Sub
    49     Virtual Function Operator[] ( index As Long ) As T
    50     End Function
     40    Abstract Sub Operator[] ( index As Long, item As T )
     41    Abstract Function Operator[] ( index As Long ) As T
     42
    5143    ' Methods
    52     Virtual Function Item ( index As Long ) As T
    53     End Function
    54     Virtual Function IndexOf ( item As T ) As Long
    55     End Function
    56     Virtual Sub Insert ( index As Long, item As T )
    57     End Sub
    58     Virtual Sub RemoveAt( index As Long )
    59     End Sub
     44    Abstract Function IndexOf ( item As T ) As Long
     45    Abstract Sub Insert ( index As Long, item As T )
     46    Abstract Sub RemoveAt( index As Long )
    6047End Class
     48
     49Namespace Details
     50
     51Interface ICollection<T>
     52    ' Property
     53    Function Count() As Long
     54    '/*Const*/ Function IsSynchronized() As Boolean
     55    ' Function SyncRoot() As ...
     56End Interface
     57
     58End Namespace
     59
    6160
    6261End Namespace
  • trunk/ab5.0/ablib/src/Classes/System/Collections/misc.ab

    r386 r577  
    1010    Inherits IEnumerable
    1111    ' Properties
    12     '/*Const*/ Function Count() As Long
     12    Function Count() As Long
    1313    '/*Const*/ Function IsSynchronized() As Boolean
    1414    ' Function SyncRoot() As ...
  • trunk/ab5.0/ablib/src/Classes/System/Security/AccessControl/misc.ab

    r337 r577  
    33Namespace AccessControl
    44
     5Enum AccessControlActions
     6    ' 書き込み専用アクセスを指定します。 
     7    Change
     8    ' アクセス拒否を指定します。 
     9    None
     10    ' 読み取り専用アクセスを指定します。 
     11    View
     12End Enum
     13
     14Enum AccessControlModification
     15    ' 指定した承認規則をアクセス制御リスト (ACL: Access Control List) に追加します。 
     16    Add
     17    ' 指定した承認規則と同じセキュリティ識別子 (SID) とアクセス マスクを含む承認規則を ACL から削除します。 
     18    Remove
     19    ' 指定した承認規則と同じ SID を含む承認規則を ACL から削除します。 
     20    RemoveAll
     21    ' 指定した承認規則に完全に一致する承認規則を ACL から削除します。 
     22    RemoveSpecific
     23    ' 指定した承認規則と同じ SID を含む承認規則を ACL から削除し、指定した承認規則を ACL に追加します。 
     24    Reset
     25    ' すべての承認規則を ACL から削除し、指定した承認規則を ACL に追加します。 
     26    Set
     27End Enum
    528
    629Enum AccessControlSections
     
    1336End Enum
    1437
     38Enum AccessControlType
     39    ' AccessRule オブジェクトを使用して、セキュリティで保護されたオブジェクトへのアクセスを許可します。 
     40    Allow
     41    ' AccessRule オブジェクトを使用して、セキュリティで保護されたオブジェクトへのアクセスを拒否します。 
     42    Deny
     43End Enum
     44
     45Enum CryptoKeyRights
     46    ' キーのアクセス許可を変更します。 
     47    ChangePermissions
     48    ' キーを削除します。 
     49    Delete
     50    ' キーのフル コントロール。 
     51    FullControl
     52    GenericAll
     53    GenericExecute
     54    GenericRead
     55    GenericWrite
     56    ' キーの属性を読み取ります。
     57    ReadAttributes
     58    ' キー データを読み取ります。 
     59    ReadData
     60    ' キーの拡張属性を読み取ります。 
     61    ReadExtendedAttributes
     62    ' キーのアクセス許可を読み取ります。 
     63    ReadPermissions
     64    ' 同期用のキーを使用します。 
     65    Synchronize
     66    ' キーの所有権を取得します。 
     67    TakeOwnership
     68    ' キーの属性を書き込みます。 
     69    WriteAttributes
     70    ' キー データを書き込みます。 
     71    WriteData
     72    ' キーの拡張属性を書き込みます。 
     73    WriteExtendedAttributes
     74End Enum
     75
     76Enum EventWaitHandleRights
     77    ' 名前付きイベントに関連付けられたセキュリティと監査規則を変更する権限。 
     78    ChangePermissions
     79    ' 名前付きイベントを削除する権限。 
     80    Delete
     81    ' 名前付きイベントを完全に制御し、そのアクセス規則と監査規則を変更する権限。 
     82    FullControl
     83    ' 名前付きイベントのシグナル状態を設定またはリセットする権限。 
     84    Modify
     85    ' 名前付きイベントのアクセス規則と監査規則を開いてコピーする権限。 
     86    ReadPermissions
     87    ' 名前付きイベントを待機する権限。 
     88    Synchronize
     89    ' 名前付きイベントの所有者を変更する権限。 
     90    TakeOwnership
     91End Enum
     92
     93Enum FileSystemRights
     94    ' ファイルの末尾にデータを追加する権限を指定します。 
     95    AppendData
     96    ' ファイルまたはフォルダに関連付けられたセキュリティ規則と監査規則を変更する権限を指定します。 
     97    ChangePermissions
     98
     99    ' フォルダを作成する権限を指定します。 
     100    'この権限には Synchronize 値が必要です。ファイルまたはフォルダの作成時に Synchronize 値を明示的に設定しない場合、Synchronize 値は自動的に設定されます。
     101    CreateDirectories
     102 
     103    ' ファイルを作成する権限を指定します。 
     104    'この権限には Synchronize 値が必要です。ファイルまたはフォルダの作成時に Synchronize 値を明示的に設定しない場合、Synchronize 値は自動的に設定されます。
     105    CreateFiles
     106 
     107    ' フォルダまたはファイルを削除する権限を指定します。   
     108    Delete
     109    ' フォルダおよびそのフォルダ内に格納されているファイルを削除する権限を指定します。 
     110    DeleteSubdirectoriesAndFiles
     111    ' アプリケーション ファイルを実行する権限を指定します。 
     112    ExecuteFile
     113    ' フォルダまたはファイルに対してフル コントロールを行い、アクセス制御と監査規則を変更する権限を指定します。この値は、ファイルに対してどのような操作でも行うことができる権限を表します。この値は、この列挙体のすべての権限を組み合わせたものです。 
     114    FullControl
     115    ' ディレクトリの内容を読み取る権限を指定します。 
     116    ListDirectory
     117    ' 読み取り、書き込み、フォルダの内容の一覧表示、フォルダとファイルの削除、およびアプリケーション ファイルの実行を行う権限を指定します。この権限には、ReadAndExecute 権限、Write 権限、および Delete 権限が含まれます。 
     118    Modify
     119    ' フォルダまたはファイルを読み取り専用として開いたり、コピーしたりする権限を指定します。この権限には、ReadData 権限、ReadExtendedAttributes 権限、ReadAttributes 権限、および ReadPermissions 権限が含まれます。 
     120    Read
     121    ' フォルダまたはファイルを読み取り専用として開いたりコピーしたりする権限、およびアプリケーション ファイルを実行する権限を指定します。この権限には、Read 権限および ExecuteFile 権限が含まれます。 
     122    ReadAndExecute
     123    ' フォルダまたはファイルのファイル システム属性を開いたり、コピーしたりする権限を指定します。たとえば、この値は、ファイルの作成日や変更日を表示する権限を指定します。これには、データ、拡張ファイル システム属性、またはアクセス規則や監査規則を読み取る権限は含まれません。 
     124    ReadAttributes
     125    ' ファイルまたはフォルダを開いたり、コピーしたりする権限を指定します。これには、ファイル システム属性、拡張ファイル システム属性、またはアクセス規則や監査規則を読み取る権限は含まれません。 
     126    ReadData
     127    ' フォルダまたはファイルの拡張ファイル システム属性を開いたり、コピーしたりする権限を指定します。たとえば、この値は、作成者や内容に関する情報を表示する権限を指定します。これには、データ、ファイル システム属性、またはアクセス規則や監査規則を読み取る権限は含まれません。 
     128    ReadExtendedAttributes
     129    ' フォルダまたはファイルのアクセス規則や監査規則を開いたり、コピーしたりする権限を指定します。これには、データ、ファイル システム属性、および拡張ファイル システム属性を読み取る権限は含まれません。   
     130    ReadPermissions
     131
     132    ' ファイル ハンドルが I/O 操作の完了に同期するまでアプリケーションが待機できるかどうかを指定します。
     133    'Synchronize 値は、アクセスを許可すると自動的に設定され、アクセスを拒否すると自動的に除外されます。
     134    'ファイルまたはフォルダを作成する権限には、この値が必要です。この値は、ファイルの作成時に明示的に設定しなくても、自動的に設定されます。
     135    Synchronize
     136 
     137    ' フォルダまたはファイルの所有者を変更する権限を指定します。リソースの所有者は、そのリソースに対してフル アクセス権限を持ちます。 
     138    TakeOwnership
     139    ' フォルダの内容を一覧表示し、そのフォルダに格納されているアプリケーションを実行する権限を指定します。 
     140    Traverse
     141    ' フォルダおよびファイルを作成し、ファイルに対してデータの追加または削除を行う権限を指定します。この権限には、WriteData 権限、AppendData 権限、WriteExtendedAttributes 権限、および WriteAttributes 権限が含まれます。   
     142    Write
     143    ' フォルダまたはファイルのファイル システム属性を開いたり、フォルダまたはファイルにファイル システム属性を書き込んだりする権限を指定します。これには、データ、拡張属性、またはアクセス規則や監査規則を書き込む権限は含まれません。 
     144    WriteAttributes
     145    ' ファイルまたはフォルダを開いたり、ファイルまたはフォルダに書き込んだりする権限を指定します。これには、ファイル システム属性、拡張ファイル システム属性、またはアクセス規則や監査規則を開いたり書き込んだりする権限は含まれません。 
     146    WriteData
     147    ' フォルダまたはファイルの拡張ファイル システム属性を開いたり、フォルダまたはファイルに拡張ファイル システム属性を書き込んだりする権限を指定します。これには、データ、属性、またはアクセス規則や監査規則を書き込む権限は含まれません。 
     148    WriteExtendedAttributes
     149End Enum
     150
     151Enum MutexRights
     152    '名前付きミューテックスに関連付けられたセキュリティと監査規則を変更する権限。 
     153    ChangePermissions
     154    '名前付きミューテックスを削除する権限。 
     155    Delete
     156    '名前付きミューテックスに対するフル コントロール、およびそのアクセス規則と監査規則を変更する権限。 
     157    FullControl
     158    '名前付きミューテックスを解放する権限。 
     159    Modify
     160    '名前付きミューテックスのアクセス規則と監査規則を開いてコピーする権限。 
     161    ReadPermissions
     162    '名前付きミューテックスが解放されるまで待機する権限。 
     163    Synchronize
     164    '名前付きミューテックスの所有者を変更する権限。 
     165    TakeOwnership
     166End Enum
     167
     168Enum RegistryRights
     169    'レジストリ キーに関連付けられたアクセス規則と監査規則を変更する権限。 
     170    ChangePermissions
     171    'システムで使用するために予約されています。 
     172    CreateLink
     173    'レジストリ キーのサブキーを作成する権限。 
     174    CreateSubKey
     175    'レジストリ キーを削除する権限。 
     176    Delete
     177    'レジストリ キーのサブキーをリストする権限。 
     178    EnumerateSubKeys
     179    'ReadKey と同じです。 
     180    ExecuteKey
     181    'レジストリ キーに対するフル コントロール、およびそのアクセス規則と監査規則を変更する権限。 
     182    FullControl
     183    'レジストリ キーの変更通知を要求する権限。 
     184    Notify
     185    'レジストリ キー内の名前/値ペアを照会する権限。 
     186    QueryValues
     187    'レジストリ キー内の名前/値ペアの照会、変更通知の要求、そのサブキーの列挙、そのアクセス規則と監査規則の読み取りを行う権限。 
     188    ReadKey
     189    'レジストリ キーのアクセス規則と監査規則を開いてコピーする権限。 
     190    ReadPermissions
     191    'レジストリ キー内の名前/値ペアを作成、削除、または設定する権限。 
     192    SetValue
     193    'レジストリ キーの所有者を変更する権限。 
     194    TakeOwnership
     195    'レジストリ キー内の名前/値ペアの作成、削除、および設定、サブキーの作成または削除、変更通知の要求、そのサブキーの列挙、そのアクセス規則と監査規則の読み取りを行う権限。 
     196    WriteKey
     197End Enum
     198
     199Enum SemaphoreRights
     200    ' 名前付きセマフォに関連付けられたセキュリティと監査規則を変更する権限。 
     201    ChangePermissions
     202    ' 名前付きセマフォを削除する権限。 
     203    Delete
     204    ' 名前付きセマフォに対するフル コントロール、およびそのアクセス規則と監査規則を変更する権限。 
     205    FullControl
     206    ' 名前付きセマフォを解放する権限。 
     207    Modify
     208    ' 名前付きセマフォのアクセス規則と監査規則を開いてコピーする権限。 
     209    ReadPermissions
     210    ' 名前付きセマフォを待機する権限。 
     211    Synchronize
     212    ' 名前付きセマフォの所有者を変更する権限。 
     213    TakeOwnership
     214End Enum
    15215
    16216End Namespace
  • trunk/ab5.0/ablib/src/Classes/System/Threading/Thread.ab

    r546 r577  
    11'Thread.ab
    22
    3 NameSpace System
     3Namespace System
    44
    55/*タイプ*/
     
    77
    88
    9 NameSpace Threading
     9Namespace Threading
    1010
    1111/*列挙体*/
     
    483483
    484484End Namespace 'Detail
    485 End NameSpace 'Threading
    486 End NameSpace 'System
     485End Namespace 'Threading
     486End Namespace 'System
    487487
    488488
  • trunk/ab5.0/ablib/src/Classes/index.ab

    r558 r577  
    77#require "./ActiveBasic/Strings/Strings.ab"
    88#require "./ActiveBasic/Windows/CriticalSection.ab"
     9#require "./ActiveBasic/Windows/Registry.ab"
    910#require "./ActiveBasic/Windows/Windows.ab"
    1011#require "./ActiveBasic/Windows/UI/WindowHandle.sbp"
Note: See TracChangeset for help on using the changeset viewer.