VB C# .NET Freamworkの備忘録

C#, VB.NET Freamworkの備忘録を掲載しています。 コントロール、WPF、スレッド、共通関数と実用的なコードを掲載してきます。

カテゴリ: 共通関数

TodoAttributeの作成

開発の際に、Attributeを作成することで、開発状況の確認等に役立ちます。

Namespace Attributes
    Public NotInheritable Class TODOAttribute
        Inherits Attribute
‌ 
        Private _name As String
        Private _content As String
‌ 
        ''' <summary>
        ''' TODO未定義のAttributeを記載します。
        ''' </summary>
        ''' <param name="name">名前</param>
        ''' <param name="content">未定義内容(追加した日付記載お願いします。)</param>
        ''' <remarks></remarks>
        Sub New(ByVal name As StringByVal content As String)
            ' TODO: Complete member initialization 
            _name = name
            _content = content
        End Sub
‌ 
    End Class
End Namespace
‌ 

  ''' <summary>
    ''' コマンドの実行を行います。(非同期)
    ''' </summary>
    ''' <returns>成功時:0/失敗時:-3</returns >
    ''' <remarks ></remarks >]
    <TOD("arimura","2013/6/3 作成中")> _
    Public Shared Function CreatProcess(ByVal exeName As StringByVal param As StringAs Diagnostics.Process
‌ 
        Dim newProc As Diagnostics.Process = Nothing
        newProc = New Diagnostics.Process()
        newProc.StartInfo.FileName = exeName
        newProc.StartInfo.Arguments = param
‌ 
‌ 
        Return newProc
‌ 
    End Function 
‌ 
End Function 

----------------------------------------------------------
VB C# .NET Freamworkの備忘録
http://ari-it.doorblog.jp/
javascriptの備忘録
http://ari-java.doorblog.jp/
--------------------------------------------------------- 

ログインユーザが管理者権限か確認 WindowsPrincipal



''' <summary> ''' ログインユーザが管理者権限か否かを判断し、返します。 ''' </summary> ''' <returns></returns> ''' <remarks></remarks> Public Shared Function IsAdministrator() As Boolean ' 現在のWindowsユーザのロール取得 Dim myPrincipal As New WindowsPrincipal(WindowsIdentity.GetCurrent()) Return myPrincipal.IsInRole(WindowsBuiltInRole.Administrator) End Function

----------------------------------------------------------
VB C# .NET Freamworkの備忘録
http://ari-it.doorblog.jp/
javascriptの備忘録
http://ari-java.doorblog.jp/
--------------------------------------------------------- 

API サービス 起動と停止



APIを利用して、
サービスのインストール、起動から停止、削除を行います。
#Region "CreateService"
‌ 
    <DllImport("advapi32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
    Public Shared Function CreateService(ByVal hSCM As IntPtr, ByVal sName As StringByVal sDisplay As StringByVal iAccess As IntegerByVal iServiceType As IntegerByVal iStartType As IntegerByVal iError As IntegerByVal sPath As StringByVal sGroup As StringByVal iTag As IntegerByVal sDepends As StringByVal sUser As StringByVal sPass As StringAs IntPtr
    End Function
‌ 
    Private Enum ServiceTypeEnum
        Win32OwnProcess = System.ServiceProcess.ServiceType.Win32OwnProcess
        AutoStart = &H2
        ErrorNormal = &H1
    End Enum
‌ 
    ''' <summary>
    ''' サービスの作成を行う。
    ''' </summary>
    ''' <param name="hSCM">SCマネージャのハンドル</param>
    ''' <param name="serviceName">サービス名</param>
    ''' <param name="path">ファイルパス</param>
    ''' <returns>結果</returns>
    ''' <remarks></remarks>
    Public Shared Function CreateService(ByVal hSCM As IntPtr, ByVal serviceName As StringByVal path As StringAs IntPtr
‌ 
        Dim result As IntPtr = CreateService(hSCM, _
                                                                serviceName, _
                                                                serviceName, _
                                                               ApiCommon.SCM_ACCESS.SC_MANAGER_ALL_ACCESS, _
                                                                ServiceTypeEnum.Win32OwnProcess, _
                                                                ServiceTypeEnum.AutoStart, _
                                                                ServiceTypeEnum.ErrorNormal, _
                                                                path, _
                                                                Nothing, _
                                                                Nothing, _
                                                                Nothing, _
                                                                Nothing, _
                                                                Nothing)
‌ 
        Return result
    End Function
‌ 
#End Region
‌ 
#Region "CloseServiceHandle"
    <DllImport("advapi32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
    Public Shared Function OpenService(ByVal handle As IntPtr, ByVal serviceName As StringByVal access As IntegerAs IntPtr
    End Function
‌ 
    ''' <summary>
    ''' サービスのオープンを行う
    ''' </summary>
    ''' <param name="handle">SCManagerのハンドル</param>
    ''' <param name="serviceName">サービス名</param>
    ''' <param name="access">アクセス権</param>
    ''' <returns>サービスのハンドル</returns>
    ''' <remarks></remarks>
    Public Shared Function OpenService(ByVal handle As IntPtr, ByVal serviceName As StringByVal access As IntPtr) As IntPtr
        Return OpenService(handle, serviceName, access)
    End Function
#End Region
‌ 
#Region "DeleteService"
‌ 
    <DllImport("advapi32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
    Private Shared Function DeleteService(ByVal hService As IntPtr) As Boolean
    End Function
‌ 
‌ 
    ''' <summary>
    ''' サービスのアインストールを行います。
    ''' </summary>
    ''' <param name="hService">サービスのハンドル</param>
    ''' <returns>結果</returns>
    ''' <remarks></remarks>
    Public Shared Function UninstallService(ByVal hService As IntPtr) As Boolean
‌ 
        Return DeleteService(hService)
‌ 
    End Function
‌ 
#End Region
‌ 
#Region "CloseServiceHandle"
    <DllImport("advapi32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> _
    Private Shared Function CloseServiceHandle(ByVal iHandle As IntPtr) As Integer
    End Function
‌ 
    ''' <summary>
    ''' サービスのアインストールを行います。
    ''' </summary>
    ''' <param name="hService">サービスのハンドル</param>
    ''' <returns>結果</returns>
    ''' <remarks></remarks>
    Public Shared Function CloseService(ByVal hService As IntPtr) As Integer
‌ 
        Return CloseServiceHandle(hService)
‌ 
    End Function
#End Region

APIを利用して、特殊ディレクトのパスを取得します。


#Region "SHGetSpecialFolderPath"

    ''' <summary>
    ''' 特別ディレクトリの取得を行います
    ''' </summary>
    ''' <param name="hwndOwner">オーナーのハンドル</param>
    ''' <param name="lpszPath">取得したパスを格納する変数</param>
    ''' <param name="nFolder">指定フォルダのCSIDL</param>
    ''' <param name="fCreate">フォルダを作成するか</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Declare Function SHGetSpecialFolderPath Lib "shell32" Alias "SHGetSpecialFolderPathA" (ByVal hwndOwner As IntPtr, <OutAttribute()> ByVal lpszPath As Text.StringBuilder, ByVal nFolder As Long, ByVal fCreate As Boolean) As Boolean

    ''' <summary>
    ''' 特別ディレクトリの取得を行います。
    ''' </summary>
    ''' <param name="folder"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function GetSpecialFolderPath(ByVal folder As Long) As String
        Dim path As New Text.StringBuilder(255)

        SHGetSpecialFolderPath(IntPtr.Zero, path, folder, False)

        Return path.ToString()

    End Function

#End Region
----------------------------------------------------------
VB C# .NET Freamworkの備忘録
http://ari-it.doorblog.jp/
javascriptの備忘録
http://ari-java.doorblog.jp/
--------------------------------------------------------- 

APIを利用して、拡張子iniのファイルの読み込み、書き込みをより簡単にします。



以下に関数を記載します。

#Region "Init FIle"
    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringW" ( _
                                                       <MarshalAs(UnmanagedType.LPWStr)> ByVal lpApplicationName As String, _
                                                       <MarshalAs(UnmanagedType.LPWStr)> ByVal lpKeyName As String, _
                                                       <MarshalAs(UnmanagedType.LPWStr)> ByVal lpDefault As String, _
                                                       <MarshalAs(UnmanagedType.LPWStr)> ByVal lpResurnedString As Text.StringBuilder, _
                                                       ByVal nSize As UInteger, _
                                                       <MarshalAs(UnmanagedType.LPWStr)> ByVal lpFileName As String) As Integer

    Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringW" ( _
                                                   <MarshalAs(UnmanagedType.LPWStr)> ByVal lpApplicationName As String, _
                                                   <MarshalAs(UnmanagedType.LPWStr)> ByVal lpKeyName As String, _
                                                   <MarshalAs(UnmanagedType.LPWStr)> ByVal lpString As String, _
                                                   <MarshalAs(UnmanagedType.LPWStr)> ByVal lpFileName As String) As Integer


    ''' <summary>
    ''' 指定のINIファイルの指定キーの取得を行います・
    ''' </summary>
    ''' <param name="sectionName">セクション名</param>
    ''' <param name="keyName">キー名</param>
    ''' <param name="filePath">ファイルパス</param>
    ''' <returns>値</returns>
    ''' <remarks></remarks>
    Public Shared Function GetPrivateProfile(ByVal sectionName As String, ByVal keyName As String, ByVal filePath As String) As Text.StringBuilder

        Dim readText As New Text.StringBuilder(256)
        Dim defaultVakye As String = String.Empty

        Dim result As Integer = GetPrivateProfileString(sectionName, keyName, defaultVakye, readText, Convert.ToUInt32(readText.Capacity), filePath)

        Return readText

    End Function

    ''' <summary>
    ''' 指定のINIファイルの指定キーの書き込みを行います・
    ''' </summary>
    ''' <param name="sectionName">セクション名</param>
    ''' <param name="keyName">キー名</param>
    ''' <param name="filePath">ファイルパス</param>
    ''' <remarks></remarks>
    Public Shared Sub WritePrivateProfile(ByVal sectionName As String, ByVal keyName As String, ByVal targetValue As String, ByVal filePath As String)

        Dim result As Integer = WritePrivateProfileString(sectionName, keyName, targetValue, filePath)

    End Sub

#End Region
----------------------------------------------------------
VB C# .NET Freamworkの備忘録
http://ari-it.doorblog.jp/
javascriptの備忘録
http://ari-java.doorblog.jp/
--------------------------------------------------------- 

↑このページのトップヘ