パスワード文字を取得(U) <TOP>
SendMessage
ウィンドウにメッセージを送信
EM_GETPASSWORDCHAR(&HD2)
エディットコントロールのパスワード文字を取得
WM_GETTEXT(&HD)
コントロールのキャプション・テキストをバッファにコピー
WM_GETTEXTLENGTH(&HE)
WM_GETTEXTの前に文字数を調べる
上段のEditBox(プロパティで「パスワードあり」に設定しています。)パスワードを入力すると「*」が表示され、「実行」ボタンをクリックすると入力した文字が下段のTextBoxに表示されます。
参照
'================================================================ '= パスワード文字を取得(U) '= (EM_GETPASSWORDCHAR4.bas) '================================================================ #include "Windows.bi" ' ウィンドウにメッセージを送信 Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any) #define WM_GETTEXT &HD 'コントロールのキャプション・テキストをバッファにコピー #define WM_GETTEXTLENGTH &HE 'WM_GETTEXTの前に文字数を調べる #define EM_GETPASSWORDCHAR &HD2 'エディットコントロールのパスワード文字を取得する Var Shared Edit1 As Object Var Shared Text1 As Object Var Shared Button1 As Object Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var length As Long Var strtmp As String Var Ret As Long If Api_SendMessage(Edit1.GethWnd, EM_GETPASSWORDCHAR, ByVal CLng(0), ByVal CLng(0)) <> 0 Then length = Api_SendMessage(Edit1.GethWnd, WM_GETTEXTLENGTH, ByVal 0, ByVal 0) + 1 strtmp = Space$(length - 1) Ret = Api_SendMessage(Edit1.GethWnd, WM_GETTEXT, ByVal length, strtmp) End If Text1.SetWindowText strtmp End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End