ログイン名を取得するWindowsAPI関数(GetUserName)について紹介します。
構文
記述方法は以下の通りとなります。
(API定義)
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
---------------------------------
(VBA記述)
GetUserName(lpBuffer,nSize)
[説明]:
ログイン名を取得するAPI関数はGetUserName関数となります。VBAから呼び出して使用する場合には、
---------------------------------
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
---------------------------------
をプロシージャ外で宣言します。
引数であるlpBufferは取得したログイン名を格納する変数を指定します。また、もう一つの引数であるnSizeにはログイン名の最大長を指定します。実行による戻り値には「0」と「0以外」があり、「0以外」の場合は正常終了、「0」の場合はエラーとなります。
使い方
使用方法について説明します。
[プログラミング例]:
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Sub サンプル()
'↓処理①
Dim ログイン名 As String * 255
'↓処理②
If GetUserName(ログイン名, 255) <> 0 Then
MsgBox ログイン名
Else
MsgBox "ログインしていません。"
End If
End Sub
処理の流れは以下の通りとなります。
[処理①]:変数定義
ログイン名を格納する変数定義となります。予め格納する変数のサイズを指定する必要があるため、サイズを255にしてあります。
[処理②]:GetUserName(WindowsAPI関数)によるログイン名取得
WindowsAPI関数であるGetUserNameを使用したログイン名の取得になります。各引数には以下の内容をセットして処理を実行します。
・lpBuffer・・・ログイン名を格納する変数をセットします。
※今回は[処理①]で定義した変数:ログイン名をセットします。
・nSize・・・ログイン名の最大長をセットします。
※今回は[255]をセットします。
処理が終了すると戻り値として「0」又は「0以外」が返され、「0」の場合にはログイン名が取得できた状態(MsgBoxでログイン名を表示)となり、「0以外」の場合には取得に失敗した状態(MsgBoxで”ログインしていません。”を表示)となります。
[実行例]:
①<実行>ボタンをクリックします。
②現在ログインしているログイン者名「12345」がMsgBoxで表示されます。
[サンプル]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
WindowsAPIを使用したログイン名を取得する方法についての説明は以上です。
おわりに
今回はWindowsAPI関数によるログイン名の取得方法について説明しました。是非参考にして下さい。