ちょっとC#でパスワードを覗いてみた。

パスワード入力用のテキストボックスで、入力しても”******”としか表示されないものがありますよね。あれ、不便ですよね。自分で入力したのに見えないなんて理不尽ですよね。

そこで、無理やり入力内容が見える様にするプログラムを書いてみました。Vector辺りを探せばあるような気がするけど気にしたら負けでしょう。

実はアレ、ただのテキストボックスなのでメッセージ投げれば好きなように弄れちゃうんですよね。で、今回投げたのはEM_SETPASSWORDCHAR。EnumChildWindows関数でウィンドウを列挙して手当たり次第にPostMessageしてます。

はい、コードです。

 

using System;
using System.Runtime.InteropServices;
namespace ConsoleApplication1 {
    class Program {
        const int EM_SETPASSWORDCHAR = 0xCC;
        delegate int WNDENUMPROC(IntPtr hwnd, int lParam);
        [DllImport("user32.dll")]
        private static extern int EnumChildWindows(
            IntPtr hWndParent, 
            WNDENUMPROC lpEnumFunc, 
            int lParam);
        [DllImport("user32.dll")]
        private static extern int PostMessage(
            IntPtr hwnd, 
            int wMsg, 
            int wParam, 
            int lParam);
        static void Main(string[] args) {
            EnumChildWindows(IntPtr.Zero, EnumWindowsProc, 0);
        }
        static int EnumWindowsProc(IntPtr hWndParent, int lParam) {
            PostMessage(hWndParent, EM_SETPASSWORDCHAR, 0, 0);
            EnumChildWindows(hWndParent, EnumWindowsProc, 0);
            return 1;
        }
    }
}

 

 

これでパスワード丸見えなんですってば。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください