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