查找指定窗口

#include <iostream>
#include <windows.h>
using namespace std; int main()
{
TCHAR szTitle[MAX_PATH] = { };
HWND hWnd = ::FindWindow(L"#32770", L"x32Inject");
if (hWnd != NULL)
{
// 修改窗口标题
::SetWindowText(hWnd, L"Hello World!");
}
else
{
::MessageBox(, L"窗口没找到", L"提示", );
}
return ;
}

窗口控制

#include <windows.h>

int main()
{
TCHAR szTitle[MAX_PATH] = { };
HWND hWnd = ::FindWindow(L"#32770", L"x32Inject");
if (hWnd != NULL)
{
// 切换窗口
SwitchToThisWindow(hWnd, false);
Sleep();
// 关闭窗口
::SendMessage(hWnd, WM_CLOSE, , );
}
else
{
::MessageBox(, L"窗口没找到", L"提示", );
}
return ;
}

查找子窗口

#include <windows.h>

int main()
{
TCHAR szTitle[MAX_PATH] = { };
HWND hWnd = ::FindWindow(L"#32770", L"x32Inject");
if (hWnd != NULL)
{
// 查找子窗口
HWND hEdit = ::FindWindowEx(hWnd, NULL, L"Edit", L"");
// 设置标题
::SetWindowText(hEdit, L"test");
// 修改内容(本案例,内容和标题是一样的)
::SendMessage(hEdit, WM_SETTEXT, , (LPARAM)L"Hello World!");
}
else
{
::MessageBox(, L"窗口没找到", L"提示", );
}
return ;
}
#include <windows.h>

int main()
{
TCHAR szTitle[MAX_PATH] = { };
HWND hWnd = ::FindWindow(L"#32770", L"x32Inject");
if (hWnd != NULL)
{
// 查找子窗口
HWND hEdit = ::GetDlgItem(hWnd, 0x3EA);
// 获取内容
::SendMessage(hWnd, WM_GETTEXT, MAX_PATH, (LPARAM)szTitle);
// 修改内容
::SendMessage(hEdit, WM_SETTEXT, , (LPARAM)L"Hello World!");
}
else
{
::MessageBox(, L"窗口没找到", L"提示", );
}
return ;
}

枚举子窗口

#include <windows.h>
#include <stdio.h> BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
{
TCHAR szTitle[MAX_PATH] = { };
::GetWindowText(hwnd, szTitle, MAX_PATH);
;; MessageBox(, szTitle, L"子窗口", MB_OK);
return TRUE;
} int main()
{
TCHAR szTitle[MAX_PATH] = { };
HWND hWnd = ::FindWindow(L"#32770", L"x32Inject");
if (hWnd != NULL)
{
::EnumChildWindows(hWnd, EnumChildProc, NULL);
}
else
{
::MessageBox(, L"窗口没找到", L"提示", );
}
getchar();
return ;
}

枚举所有打开的窗口

#include <windows.h>
#include <stdio.h> BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
TCHAR szTitle[MAX_PATH] = { };
::GetWindowText(hwnd, szTitle, MAX_PATH);
wprintf(L"%s\n", szTitle);
if (wcscmp(szTitle, L"x32Inject") == )
{
::MessageBox(, szTitle, L"窗口", );
}
return TRUE;
} int main()
{
::EnumWindows(EnumWindowsProc, NULL);
getchar();
return ;
}

模拟鼠标点击

#include <windows.h>
#include <stdio.h>
// 隐藏控制台运行
#pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"") int main()
{
TCHAR szTitle[MAX_PATH] = { };
RECT r;
HWND hWnd = ::FindWindow(L"#32770", L"x32Inject");
if (hWnd != NULL)
{
HWND hButton = ::FindWindowEx(hWnd, NULL, L"Button", L"选择程序");
// 获取选择程序窗口坐标
::GetWindowRect(hButton, &r);
// 设置鼠标位置
::SetCursorPos(r.left + , r.top + );
Sleep();
// 鼠标左键单击
mouse_event(MOUSEEVENTF_LEFTDOWN, , , , ); // 按下左键
mouse_event(MOUSEEVENTF_LEFTUP, , , , ); // 松开左键
}
else
{
::MessageBox(, L"没有找到窗口!", L"提示", MB_OK);
}
getchar();
return ;
}

模拟键盘点击(搜索:键盘键与虚拟键码对照表)

#include <windows.h>
#include <stdio.h>
// 隐藏控制台运行
#pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"") int main()
{
TCHAR szTitle[MAX_PATH] = { };
RECT r;
HWND hWnd = ::FindWindow(L"#32770", L"SemaphoreEx");
if (hWnd != NULL)
{
HWND hEdit = ::GetDlgItem(hWnd, 0x3E8);
// 获取选择程序窗口坐标
::GetWindowRect(hEdit, &r);
// 设置鼠标位置
::SetCursorPos(r.left + , r.top + );
Sleep();
// 鼠标左键单击
mouse_event(MOUSEEVENTF_LEFTDOWN, , , , ); // 按下左键
mouse_event(MOUSEEVENTF_LEFTUP, , , , ); // 松开左键
// 模拟键盘
keybd_event(, , , );
keybd_event(, , KEYEVENTF_KEYUP, );
Sleep();
keybd_event(, , , );
keybd_event(, , KEYEVENTF_KEYUP, );
Sleep();
keybd_event(, , , );
keybd_event(, , , );
keybd_event(, , KEYEVENTF_KEYUP, );
keybd_event(, , KEYEVENTF_KEYUP, );
}
else
{
::MessageBox(, L"没有找到窗口!", L"提示", MB_OK);
}
getchar();
return ;
}

C++ Win32 遍历窗口的更多相关文章

  1. 根据获取的窗口句柄遍历窗口Edit控件

    网上说遍历窗口控件有两种方法: 1),使用EnumChildWindows,没有深究,     学习网址如下:http://blog.sina.com.cn/s/blog_60ac1c4b010116 ...

  2. ]用EnumChildWindows遍历窗口的方法

    最近项目有需要,得到一个非自己实现的窗口控件对象.于是想起曾经做过类似功能.总结如下: 调用EnumChildWindows(this->m_hWnd, EnumChildProc, NULL) ...

  3. c++ win32下窗口的最小化到托盘以及还原

    框架是用visual studio创建的win32控制台模板,然后自己添加最小化及还原部分代码. 需要额外包含的头文件: #include <shellapi.h> #include &l ...

  4. Win32 设置窗口透明度 SetLayerTransparent

    注意: 在调用SetLayeredWindowAttributes 之前,需要给窗口加上WS_EX_LAYERED属性,否则会无效 void SetLayerTransparent(HWND hWnd ...

  5. Delphi 查找标题已知的窗口句柄,遍历窗口控件句柄(转)

    用我的方法来控制其他程序窗体上的窗口控件,必须先了解什么是 回调函数.我的理解是这样的: 回 调函数写出来不是自己的程序去调用的,反而是让其他的东西去调用,比如windows操作系统,比如其他的程序等 ...

  6. 如何让win32 c++窗口不出现在任务栏

    把窗口作为某一个窗口的子窗口,然后设置WS_POPUP就可以了.使用CreateWindow时的第三个参数设置为WS_CHILD|WS_POPUP.

  7. Win32子窗口的创建

    本文主要是在一个主窗口下创建一个子窗口.主窗口有一个菜单,菜单下只有设置一个选项,点击设置选项,弹出设置界面,点击设置界面关闭则关闭.我在开发的时候遇到两个问题,第一就是一点设置关闭就整个应用都关了, ...

  8. FMX+Win32,窗口无法保持原样,应该是个bug

    从FMX发布开始,一直有这问题,大家看看是不是一个bug,应该如何修复? 新建一个FMX Application,运行后,点击窗口标题栏右上角的“最大化”按钮,此时窗口是最大化的.在windows最底 ...

  9. Delphi 查找标题已知的窗口句柄,遍历窗口控件句柄

    有了回调函数的概念及上面的例子,我们可以继续了.其实想要找到一个标题已知的窗口句柄,用一个API函数就可以了:FindWindow.其函数原形是:function FindWindow(lpClass ...

随机推荐

  1. 第06组 Alpha冲刺(1/4)

    队名:福大帮 组长博客链接:https://www.cnblogs.com/mhq-mhq/p/11863075.html 作业博客 :https://edu.cnblogs.com/campus/f ...

  2. uniapp - 关于ios调试

    [ios调试] 1.一台windows电脑.一根apple数据线(一旦连接以后,apple设备就会自动识别itunes软件,如果没有安装会提示) 2.安装itunes (爱思助手) 3.官方教程:ht ...

  3. Service与Activity通信 回调方式***

    要实现service与activity的高强度通信用什么方法? service与activity之前的通信方式有很多,回调接口方式.观察者模式.广播.还有handler等,方法有很多,但要高强度地通信 ...

  4. pm2 工具来管理 node 服务端

    如下: nodeServer.js 'use strict'; const http = require('http'); const server = http.createServer(funct ...

  5. SAP views

    文章转自 http://blog.csdn.net/HikenWong/article/details/8263969 1. sap的视图的类型sap的视图的类型有五种: Database views ...

  6. oracle 添加字段

    alter table 表名 add 新增字段名(类型+长度); #添加字段 alter table asset_orders add remark varchar2(255); #查看 descri ...

  7. docker笔记1--了解docker

    1 docker是什么 (1)背景 docker是基于go语言实现的开源容器项目.目标是实现"build ship and run any app,anywhere",通过对应用的 ...

  8. vue-cli构建的项目手动添加eslint配置

    一.package.json里配置添加 1.scripts里添加快捷eslint检查命令 "lint": "eslint --ext .js,.vue src" ...

  9. java常见集合

    集合与数组区别 1-从长度来讲: 数组:需要固定长度. 集合:长度可以改变,可以根据保存的数据进行扩容. 2-从存储内容上: 数组:可以存储基本类型数据,还可以存储引用类型的数据(比如:String ...

  10. AR*客户地点分配OU

    DECLARE p_cust_acct_site_rec hz_cust_account_site_v2pub.cust_acct_site_rec_type; p_cust_site_use_rec ...