- 浏览: 369822 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (335)
- C++ (190)
- 设计模式 (43)
- 数据库技术 (5)
- 网络编程 (11)
- 自动化测试 (6)
- Linux (13)
- OpenSSL (10)
- MS Crypt API (5)
- SCM (2)
- English (4)
- Android (10)
- EMV规范 (1)
- Saturn Platform (0)
- C (10)
- SQL (2)
- ASP.NET (3)
- 英语口语学习 (3)
- 调试工具 (21)
- 编译技术 (5)
- UML (1)
- 项目管理 (5)
- 敏捷开发 (2)
- Http Server (6)
- 代码审查、代码分析 (5)
- 面试基础 (10)
- 重点知识 (16)
- STL (6)
- Efficient C++资料 (8)
- 数据结构和算法 (7)
- 读书笔记 (0)
- 开源项目 (4)
- 多线程 (2)
- Console App (6)
- 个人开源项目 (4)
- IBM DevelopWorks (4)
- Java (16)
- 内存泄漏相关调试和检测 (13)
- 软件测试相关技术 (2)
- C# (11)
- Apple Related (1)
- 软件测试和管理 (2)
- EMV (1)
- Python (1)
- Node.js (6)
- JavaScript (5)
- VUE (1)
- Frontend (1)
- Backend (4)
- RESTful API (3)
- Firebase (3)
最新评论
-
u013189503:
来个密码吧
[C++][Logging] 项目中写日志模块的实现 -
wyf_vc:
来个密码啊!!
[C++][Logging] 项目中写日志模块的实现
1 利用Spy++获取窗口和某一控件的Class Name, Title Name;
2 利用Class Name, Title Name获取handle然后发送消息;
代码如下:
2 利用Class Name, Title Name获取handle然后发送消息;
代码如下:
void CFindWindowTestDlg::OnBnClickedFindSkypeBtn() { // TODO: Add your control notification handler code here HWND m_pHwnd = ::FindWindow(_T("TConversationForm"), _T("Jacky")); ASSERT(m_pHwnd != NULL); HWND m_pHwndTChatEntryControl = ::FindWindowEx(m_pHwnd, NULL, _T("TChatEntryControl"), NULL); ASSERT(m_pHwndTChatEntryControl != NULL); HWND m_pHwndTTChatRichEdit = ::FindWindowEx(m_pHwndTChatEntryControl, NULL, _T("TChatRichEdit"), NULL); ASSERT(m_pHwndTTChatRichEdit != NULL); if (m_pHwndTTChatRichEdit != NULL) { for (int i =0; i<20; i++) { ::PostMessage(m_pHwndTTChatRichEdit, WM_CHAR, 'T', NULL); ::PostMessage(m_pHwndTTChatRichEdit, WM_CHAR, 'e', NULL); ::PostMessage(m_pHwndTTChatRichEdit, WM_CHAR, 's', NULL); ::PostMessage(m_pHwndTTChatRichEdit, WM_CHAR, 't', NULL); ::PostMessage(m_pHwndTTChatRichEdit, WM_CHAR, ' ', NULL); ::PostMessage(m_pHwndTTChatRichEdit, WM_CHAR, 'M', NULL); ::PostMessage(m_pHwndTTChatRichEdit, WM_CHAR, 'e', NULL); ::PostMessage(m_pHwndTTChatRichEdit, WM_CHAR, 's', NULL); ::PostMessage(m_pHwndTTChatRichEdit, WM_CHAR, 's', NULL); ::PostMessage(m_pHwndTTChatRichEdit, WM_CHAR, 'a', NULL); ::PostMessage(m_pHwndTTChatRichEdit, WM_CHAR, 'g', NULL); ::PostMessage(m_pHwndTTChatRichEdit, WM_CHAR, 'e', NULL); ::PostMessage(m_pHwndTTChatRichEdit, WM_CHAR, ' ', NULL); ::PostMessage(m_pHwndTTChatRichEdit, WM_KEYDOWN, VK_RETURN, NULL); ::PostMessage(m_pHwndTTChatRichEdit, WM_KEYUP, VK_RETURN, NULL); Sleep(200); } } if(m_pHwnd) { //::PostMessage(m_pHwnd, WM_CLOSE, 0, 0);//Exit } }
BOOL CLeakDiagAutoLogDlg::DoAutoLogging() { CString strData; m_pMsgEdit->GetWindowText(strData); HWND m_pHwnd = ::FindWindow(NULL, _T("LeakDiag")); if (m_pHwnd != NULL) { HWND m_pHwnLogBtnCtrl = ::FindWindowEx(m_pHwnd, NULL, _T("Button"), _T("Log")); if (m_pHwnLogBtnCtrl != NULL) { long id = ::GetDlgCtrlID(m_pHwnLogBtnCtrl); ::PostMessage(m_pHwnd, WM_COMMAND, MAKELONG(id, BN_CLICKED), NULL); } else { strData += _T("m_pHwnLogBtnCtrl is NULL\r\n"); m_pMsgEdit->SetWindowText(strData); return FALSE; } } else { strData += _T("m_pHwnd is NULL!\r\n"); m_pMsgEdit->SetWindowText(strData); return FALSE; } return TRUE; // HWND m_pHwnStartControl = ::FindWindowEx(m_pHwnd, NULL, _T("Button"), _T("Start")); // ASSERT(m_pHwnStartControl != NULL); // long id = ::GetDlgCtrlID(m_pHwnStartControl); // ::PostMessage(m_pHwnd, WM_COMMAND, MAKELONG(id,BN_CLICKED), NULL); } void CLeakDiagAutoLogDlg::OnBnClickedRunBtn() { // TODO: Add your control notification handler code here UpdateData(TRUE); if (0 == m_dwTimeSpan) { m_dwTimeSpan =1; } CEdit* pEdit = static_cast<CEdit*>(GetDlgItem(IDC_RUN_BTN)); if (!m_bTimer) { SetTimer(1, UINT(m_dwTimeSpan*1000), NULL); m_bTimer = TRUE; pEdit->SetWindowText(_T("Stop")); } else { KillTimer(1); m_bTimer = FALSE; pEdit->SetWindowText(_T("Start")); } UpdateData(FALSE); } void CLeakDiagAutoLogDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: Add your message handler code here and/or call default CTime cTime = CTime::GetCurrentTime(); CString strTime = cTime.Format("[%Y-%m-%d %H:%M:%S] ");//display YYYY:MM:DD HH:MM:SS switch (nIDEvent) { case 1: { if (DoAutoLogging()) { CString strData; CString strTemp; strTemp.Format("[RUN = %ld] DoAutoLogging", ++m_dwTotalRun); m_pMsgEdit->GetWindowText(strData); strData += strTime; strData += strTemp; strData += "\r\n"; m_pMsgEdit->SetWindowText(strData); } break; } case 2: default: { break; } } CDialog::OnTimer(nIDEvent); }
- spylite24.zip (265.8 KB)
- 下载次数: 3
发表评论
-
FreeRTOS
2022-03-05 16:31 248Ref https://blog.csdn.net/weix ... -
Python: HTTP文件下载压力测试工具
2020-12-15 17:45 490import urllib.request import ... -
[Python][网络爬虫]
2020-09-28 16:36 0#!/usr/bin/python #coding: U ... -
串口通讯相关
2018-11-02 13:44 411https://bbs.csdn.net/wap/topics ... -
[转]C++验证IP是否可以PING通
2018-10-30 17:54 1325https://www.cnblogs.com/guoyz13 ... -
C++/MFC 換皮膚
2018-10-20 11:05 477https://blog.csdn.net/u01123991 ... -
WinCE 截屏 - C++ 代碼
2018-08-31 09:45 574// this function create a bmp ... -
[轉] android默认debug.keystore的密码
2017-12-12 11:14 1057http://blog.csdn.net/leehong200 ... -
Android NDK搭建環境
2017-11-27 13:25 580https://www.cnblogs.com/ut2016- ... -
8583协议相关
2017-10-17 13:38 5738583相关资料,整理中... -
Java反编译工具 - Java Decompiler
2017-06-21 20:14 475http://jd.benow.ca/ JD-GUI is ... -
JAVA环境变量配置
2017-06-19 13:56 356参考Link http://www.cnblogs.com/x ... -
Java高级应用之JNI
2017-06-19 09:00 600参考link http://www.cnblogs.com/l ... -
Windows7上使用VMWare搭建iPhone开发环境
2017-05-17 08:49 449Windows7上使用VMWare搭建iPhone开发环境 h ... -
C++实现ping功能
2017-04-18 11:21 2155基础知识 ping的过程是向目的IP发送一个type=8的I ... -
OpenSSL 编译环境搭建
2017-03-27 15:01 9061 安裝VS2008到 c:\Program Files (x ... -
最优非对称加密填充(OAEP)
2017-03-25 14:53 1582OpenSSL命令---rsautl http://blog. ... -
[Platform Builder] 设置SVM OS build Env
2016-11-10 11:39 01 copy one OSDesign Project to ... -
[Windows] System Error Codes(GetLastError )0-----5999
2016-10-26 13:28 1881ERROR_SUCCESS 0 (0x0) T ... -
开源Windows驱动程序框架
2016-09-17 21:35 871转自 http://code.csdn.net/news/28 ...
相关推荐
在Spy++中,用户不仅可以查看窗口句柄,还能获取窗口所属的类名,这对于理解窗口的行为和定位问题至关重要。 Spy++的主要特性包括: 1. **窗口视图**:此视图列出系统中所有活动窗口,显示它们的句柄、类名、标题...
在使用Spy++时,你可以启动或附加到一个运行中的进程,然后使用其内置的查找功能搜索特定的窗口。一旦找到目标窗口,Spy++会显示该窗口的详细信息,包括类名、父窗口句柄、控件ID等。此外,还可以启用消息视图,实时...
在本文中,我们将深入探讨如何使用VC++在Visual Studio 2015环境下实现类似Spy++的功能,即获取窗口句柄。Spy++是一款强大的Windows API调试工具,它可以帮助开发者查看和监视窗口、消息、线程以及进程。我们将关注...
SPY++是一款强大的Windows操作系统下的调试和分析工具,它由Microsoft Visual Studio提供,用于查看和分析系统级别的信息,包括窗口、线程、进程以及消息。这款工具对于开发者来说极其有用,因为它能帮助他们深入...
Microsoft Spy++就是其中一款强大的工具,它专为Windows应用程序的开发者设计,用于监控系统中的窗口、消息、线程和进程。这个工具对于理解和调试Windows API调用非常有用。 Spy++的主要功能之一就是获取Windows...
4. **消息监视**:模仿SPY++的另一个重要特性是实时监控窗口的消息,这需要使用SetWindowsHookEx来设置消息钩子,然后在钩子回调函数中处理接收到的消息。 5. **UI设计**:利用MFC的CListCtrl或CTreeCtrl控件展示...
- `spyxx.chm` 和 `spyxx_amd64.chm` 是Spy++的帮助文档,包含关于如何使用Spy++的详细信息和教程,用户可以从中学习如何查找窗口类、查看消息流等。 - `spyxxhk_amd64.dll` 和 `spyxxhk.dll` 是Spy++的钩子库文件,...
通过获取窗口句柄,我们可以对特定窗口执行各种操作,如发送消息、改变窗口属性或大小等。 要实现一个仿SpyXX的程序,你需要掌握以下几个关键知识点: 1. **Windows API的使用**:Visual C++使用Windows API来与...
使用SPY++时,用户只需打开程序,然后通过“查找”功能搜索特定窗口或进程。一旦找到目标,SPY++会自动开始监控其消息流。此外,还可以设置跟踪选项,记录特定窗口或类的所有消息,这对于调试复杂的多线程应用程序...
Spy++ 是一款强大的Windows系统调试工具,由Microsoft提供,主要用于观察和分析Windows应用程序的窗口、消息、线程和进程。这个工具对于软件开发者,尤其是Windows平台的程序员来说,是进行系统级调试和性能优化的...
Spy++ 是一款强大的Windows系统调试工具,主要用于监测和分析Windows应用程序的窗口、消息以及线程等行为。这个压缩包包含了32位和64位版本的Spy++工具,确保无论在哪种操作系统环境下都能进行有效分析。 1. **窗口...
Spy++ 是一个强大的Windows系统调试工具,主要用于观察和分析Windows应用程序的窗口、消息、线程以及进程等。它由Microsoft提供,是Visual Studio的一部分,帮助开发者深入理解Windows系统的内部工作原理。源代码的...
例如,获取句柄后,我们可以发送消息到该窗口(如`PostMessage`或`SendMessage`),改变窗口属性,或者对窗口进行显示、隐藏、移动、大小调整等操作。 Spy++的使用方法包括启动应用程序,选择“视图”菜单下的...
【标题】"visual c++制作仿spy++的程序"是一个基于Microsoft Visual C++开发的项目,旨在创建一个类似于Spy++的工具。Spy++是微软提供的一款强大的系统级调试和监视工具,它允许开发者查看和分析Windows窗口、消息、...
5. **控件检测**:Spy++还能显示窗口内的控件信息,这需要用到`GetDlgItem` API来获取控件句柄,然后用`GetWindowText`获取控件的文本。 6. **线程和进程**:通过`OpenProcess`和`GetThreadContext`等API,可以获取...
这个句柄是一个整数值,应用程序通过句柄来与特定的窗口交互,如发送消息、改变窗口属性或获取窗口状态。SPY++能够帮助开发者快速定位并获取到目标窗口的句柄,这对于调试和优化程序的窗口操作部分至关重要。 SPY++...
`Spy++`是Microsoft Visual Studio开发环境提供的一款强大的调试辅助工具,它允许程序员深入观察Windows系统中的窗口、消息、线程和进程,对于理解和调试Windows应用程序非常有帮助。 **描述:“spy++窗口查找,拖...
本文将深入探讨`findWindowex`函数的使用以及如何利用Spy++工具来辅助这一过程。 首先,`findWindowex`是一个Windows API函数,用于在窗口层次结构中查找特定类型的窗口。它接受四个参数:父窗口句柄、子窗口的前一...
代码没注释,需要的就下载来自己研究吧。 原理就是自己画两个图标和一个光标文件,子类化一个CStatic来响应鼠标左键按下和弹起的消息,在这两个消息内更改图标文件以达到...获取窗口句柄部分我是用了一个线程来操作的。
Spy++ (SPYXX.EXE) 是一个基于 Win32 的实用工具,提供系统进程、线程、窗口和窗口消息的图形视图。 Spy++ 有两个版本。 第一个版本,名为 Spy++ (spyxx.exe),用于显示发送到在 32 位进程中运行的窗口的消息。 ...