Windows密码查看器实现原理
在程序员眼中,Windows的用户界面就是一个由无数个大小窗口组合在一起的整体。密码框也不例外, 它是一个具有ES_PASSWORD风格的"Edit"类子窗口控制。既然它是一个窗口,就难免具有一些Windows窗口所共有的特性: 有一个窗口过程;可以接收消息。
SendMessage(hwnd, WM_GETTEXT, (WPARAM)(iLength + 1), (LPARAM)(pStrPassWord)) ;
LRESULT CALLBACK EditProc(HWND, UINT, WPARAM, LPARAM) ;
POINT point ;
LPSTR lpszCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT("GetCode") ;
MSG msg ;
HWND hwnd ;
WNDCLASS wndclass ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon(NULL, IDI_WINLOGO) ;
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
{
MessageBox(NULL, TEXT("This program requires Windows NT!") ,
szAppName, MB_ICONERROR) ;
return 0 ;
}
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;
UpdateWindow(hwnd) ;
{
TranslateMessage(&msg) ;
DispatchMessage(&msg) ;
}
{
static HWND hwndEdit ;
static HINSTANCE hInstance ;
{
case WM_CREATE:
hInstance = (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE) ;
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
0, 0, 0, 0,
hwnd, (HMENU)1,hInstance, NULL) ;
return 0 ;
TEXTMETRIC tm ;
HDC hdc ;
int cxChar, cyChar, cxScreen, cyScreen, iWndWidth, iWndHeight ;
cxScreen = GetSystemMetrics(SM_CXSCREEN) ;
cyScreen = GetSystemMetrics(SM_CYSCREEN) ;
iWndWidth = cxScreen / 10 * 4 ;
iWndHeight = cyScreen / 4 ;
hdc = GetDC(hwnd) ;
GetTextMetrics(hdc, &tm) ;
cxChar = tm.tmAveCharWidth ;
cyChar = tm.tmHeight + tm.tmExternalLeading ;
MoveWindow(hwndEdit, (iWndWidth - cxChar * 38) / 2, iWndHeight / 3,
cxChar * 38, cyChar + 10, TRUE) ;
return 0 ;
HWND hwndDst ;
int iLength ;
TCHAR PassWord[255], ClassName[255] ;
{
MessageBox(hwnd, TEXT("如果你有任何意见或建议,请与我联系:jrmd@sina.com"), TEXT("关于左手剑"),
MB_ICONINFORMATION) ;
return 0 ;
}
{
MessageBox(hwnd, TEXT("获取类名失败!"), TEXT("错误"), MB_ICONERROR) ;
return 0 ;
}
{
MessageBox(hwnd, TEXT("目标位置不是一个密码框!"), TEXT("错误"), MB_ICONERROR) ;
return 0 ;
}
SendMessage(hwndDst, WM_GETTEXT, (WPARAM)(iLength + 1), (LPARAM)PassWord) ;
return 0 ;
PostQuitMessage(0) ;
return 0 ;
}
}
{
static HCURSOR hOldCursor, hMyCursor ;
{
case WM_LBUTTONDOWN:
hMyCursor = LoadCursor(NULL, MAKEINTRESOURCE(IDC_CROSS)) ;
hOldCursor = SetCursor(hMyCursor) ;
SetCapture(hwnd) ;
ReleaseCapture() ;
SetCursor(hOldCursor) ;
point.y = HIWORD(lParam) ;
}
return CallWindowProc(OldProc, hwnd, message, wParam, lParam) ;
}
转载于:https://www.cnblogs.com/zhongbin/p/3233238.html
Windows密码查看器实现原理相关推荐
- [原]简易Windows密码查看器
[标题]:简易Windows密码查看器 [时间]:2009-10-09 [摘要]:通过全局钩子获取当前鼠标处的窗口控件句柄,然后直接调用GetWindowText()获取密码文本. [关键字]:密码. ...
- 简易Windows密码查看器
[标题]:简易Windows密码查看器 [时间]:2009-10-09 [摘要]:通过全局钩子获取当前鼠标处的窗口控件句柄,然后直接调用GetWindowText()获取密码文本. [关键字]:密码. ...
- aapr密码读取工具_wifi密码查看器原理是什么 wifi密码查看器原理介绍【详解】...
前一篇文章有网友评论系统不支持wifi共享按钮无法通过二维码查看wifi密码,本文将深度探秘当前wifi密码查看器工作原理.通过此方式可以查看手机在上次恢复出厂设置到现在所连接所有wifi密码,前提是 ...
- Windows文本框星号密码查看器
Windows文本框星号密码查看器 本人2002的学习作品 作者:成晓旭 1. 设计原理:注册一个系统级鼠标挂钩,通过监测系统鼠标所在Windows窗口来获取密码,成功获取密码之后,通过发送自定义的 ...
- 网页密码查看器+原代码+windows密码查看
前段时间写了个查看windows密码框的密码查看器! 今天在 网上看了些关于网页密码查看的资料 就写了个网页密码查看器! 启动后点开始按纽(也就是第一个按纽) 把鼠标移动到网页密码框等1秒就ok了 ( ...
- Android WIFI密码查看器实例(在获取Root权限下查看系统文件)
Android WIFI密码查看器实例 实现原理:使用shell命令查看保存WIFI密码的系统文件 涉及的知识 界面展示 基本的Shell命令 shell查看WIFI密码 ShellUtil的使用 正 ...
- 干货 | 最新Windows事件查看器.NET反序列化漏洞分析
0x01 漏洞背景 4月26日@Orange Tsai 在Twitter上发表一个有关Windows事件查看器的反序列化漏洞,可以用来绕过Windows Defender或者ByPass UAC等其它 ...
- cbitmap 从内存中加载jpg_[转载]windows照片查看器无法显示图片内存不足
问题描述 最近在使用Windows照片查看器打开一个jpg文件的时候异常 Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足.请关闭一些目前没有使用的程序或者释放部分硬盘空间(如果 ...
- java图片识别查看器模拟_[转载]windows照片查看器无法显示图片内存不足
问题描述 最近在使用Windows照片查看器打开一个jpg文件的时候异常 Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足.请关闭一些目前没有使用的程序或者释放部分硬盘空间(如果 ...
- html图片通过照片查看器打开图片,在Windows7中打开照片,提示“Windows 照片查看器无法显示此图片,因为计算机上...
在Windows7中打开照片,提示"Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足.请关闭一些目前没有使用的程序或者释放部分硬盘空间(如果硬盘几乎已满),然后重试. ...
最新文章
- 不懂Redis Cluster原理,我被同事diss了!
- BZOJ3566 SHOI2014概率充电器(动态规划+概率期望)
- C#操作xml文件:使用XmlDocument 实现读取和写入
- 工业级路由器和家用路由器的区别_工业路由器和普通家用路由器有什么区别啊?工业路由器好不好用啊?...
- layui 在springboot2.x 时,页面展示不了layui的问题
- 虚拟路由器冗余协议-VRRP
- Browser-Bookmark-Codeing
- 一个tile布局的下拉框
- Java基础篇:右移运算符
- python文字转语音
- html如何设置图片置顶,css怎么设置图片间距?
- 怎么把图片内存变小尺寸保持不变呢。
- python俄罗斯方块算法详解_python俄罗斯方块
- 酷客多小程序重磅升级,这十几个模板足以打动你的心!
- opencv-python 改变图片尺寸
- Android中管理代码基本工作流程
- private和protected的区别_学习笔记
- macOS刷机后,分享一波必装软件
- linetv_line tv官方下载-line tv 安卓版v2.0.0-PC6安卓网
- lisp实战文库_autolisp教程pdf