○パスワード設定解除プログラムについて

メールソフトなどで、パスワードが****で表示されていますよね
その****で表示されている部分の正体は、普通のテキストボックスです
VBAやVBなどの開発環境ではテキストボックスのプロパティでパスワード表示に
することができます。
そのプロパティの設定を外部から変更できればパスワードを見ることができるという訳です。
Windowsではウィンドウハンドルというコントロールの識別子を取得できれば、
外部からでも、コントロールのプロパティーを変更することができます。

しかし、特定のテキストボックスのハンドルを取得するのは面倒ですよね
そこで、全てのハンドルに対してプロパティーを変更する方法を行いたいと思います
つまり、ウィンドウ上にある全てのテキストボックスに対して軒並みパスワード設定を解除するという意味です


▼すべてのコントロールに対してパスワード設定を解除するプログラム
ウィンドウハンドルは unsigned short型 であるため、ゼロ(0x0000)から最大値(0xFFFF)までの値を取る
つまり、ゼロ(0x0000)から最大値(0xFFFF)の中に必ず目的のテキストボックスのハンドルが含まれる
総てのコントロールに対してパスワード設定が解除されるようにメッセージを送信するプログラムを
作成します。
それにより、実行するだけで一切操作しなくてもよいパスワード解除プログラムが作成できます。

テストプログラム+ソース VisualC++6.0

パスワードの****の表示されたウィンドウが開いた状態で上のプログラムを実行すると、
実行した瞬間に、全てのコントロールのパスワードが一度に解除されます

アウトルックのパスワードのウィンドウを開いた状態で上のプログラムを実行するだけで
パスワードが見えるようになりました。




#include <windows.h>

main(){
	
	unsigned long i;
	for(i=0;i<(unsigned short)-1;i++){
		//▽パスワードプロパティの解除
		PostMessage((HWND)i, EM_SETPASSWORDCHAR, (WPARAM)0,(LPARAM)0);
		//▽各ウィンドウの再描画要求
		InvalidateRect((HWND)i, NULL, FALSE);
	}
}


こんな単純なプログラムでパスワードの****部分を見ることができます。
ただし、インターネットを表示しているブラウザのパスワードはテキストボックスでないため解除できません。







▲トップページ > プログラミングの実験