パスワード入力用のテキストボックスで、入力しても”******”としか表示されないものがありますよね。あれ、不便ですよね。自分で入力したのに見えないなんて理不尽ですよね。
そこで、無理やり入力内容が見える様にするプログラムを書いてみました。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; } } }
これでパスワード丸見えなんですってば。