findwindow\sendmessage向第三方软件发送消息演示
这里仅仅是以putty作为演示消息发送机制和控件搜索机制
程序一:代填IP和端口,并建立远程连接
#include"stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;
HWND FindTextBox(HWND hWnd,DWORD select_edit=1)
{
HWND hEdit = NULL;
hEdit = FindWindowExW(hWnd, hEdit, L"Edit", 0);
switch (select_edit)
{
case 1:
return hEdit;
case 2:
hEdit=GetNextWindow(hEdit,2);
hEdit=GetNextWindow(hEdit,2);
return hEdit;
default:
break;
}
/*遍历子窗体
if (hEdit != NULL) return hEdit;
HWND hChild = NULL;
while(true) {
hChild = FindWindowExW(hWnd, hChild, 0, 0);
if (hChild == NULL)
break;
hEdit = FindTextBox(hChild);
if (hEdit != NULL)
break;
}
*/
return hEdit;
}
HWND FindButton(HWND hWnd,DWORD select_button=0){
HWND hButton=NULL;
hButton=FindWindowExW(hWnd,hButton,L"Button",0);
return hButton;
}
int _tmain (int argc, LPTSTR argv[])
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
// Start the child process.
if( !CreateProcess("C:\\Program Files\\sunsi\\third\\putty\\putty.exe", // No module name (use command line)
NULL, // Command line //简单的方法是调用putty传递参数,把NULL改为"-ssh -l root -pw 123456 -P 22 1.1.1.1"即可
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi ) // Pointer to PROCESS_INFORMATION structure
)
{
printf( "CreateProcess failed (%d).\n", GetLastError() );
return 1;
}
// Wait until child process exits.
// WaitForSingleObject( pi.hProcess, INFINITE ); //之前忘记注释这一行,导致失败,丢大发了。。。
Sleep(2000);//等待窗体打开
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
puts("-------------------------------");
HWND hWnd=FindWindowW(0,L"PuTTY Configuration");
if(hWnd==0){
puts("search failed!");
system("pause");
return 1;
}
HWND hEditIp=NULL;
HWND hEditPort=NULL;
HWND hButton=NULL;
hEditIp=FindTextBox(hWnd,1);
hEditPort=FindTextBox(hWnd,2);
hButton=FindButton(hWnd);
if(hEditIp!=NULL&&hEditPort!=NULL){
SendMessageW(hEditIp,WM_SETTEXT,0,(LPARAM)L"172.18.4.202");
SendMessageW(hEditPort,WM_SETTEXT,0,(LPARAM)L"422");
}else{
puts("search edit frame failed!");
system("pause");
return 1;
}
if(hButton!=NULL){
SendMessageW(hButton,WM_LBUTTONDOWN,0,0);
SendMessageW(hButton,WM_LBUTTONUP,0,0);
system("pause");
}else{
puts("search button failed!");
system("pause");
return 1;
}
//system("pause");
return 0;
}
程序二:获取文本框内容
#include "stdafx.h"
#include "windows.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
HWND hText;
HWND hWnd=::FindWindowW(NULL,L"PuTTY Configuration");
char ch[100];//用于接收获取到的文本框的内容
if(hWnd==NULL)
cout<<"error"<<endl;
else{
hText=GetWindow(hWnd,GW_CHILD); //获取子窗口句柄
hText=GetWindow(hText,GW_HWNDFIRST);//该句可不加
while(hText)
{
//cout<<GetWindowLong(hText,GWL_STYLE)<<endl; //获取文本框的样式,为下面判断做准备,可通过spy++查看,但spy出来的是十六进制,需要转换。
if(1342242944==GetWindowLong(hText,GWL_STYLE)){
SendMessage(hText,WM_GETTEXT,100,(LPARAM)ch);//获取文本内容,存到ch中
cout<<ch<<endl;
}
hText=GetWindow(hText,GW_HWNDNEXT);
}
}
system("pause");
}
findwindow\sendmessage向第三方软件发送消息演示的更多相关文章
- Spring Boot+Socket实现与html页面的长连接,客户端给服务器端发消息,服务器给客户端轮询发送消息,附案例源码
功能介绍 客户端给所有在线用户发送消息 客户端给指定在线用户发送消息 服务器给客户端发送消息(轮询方式) 项目搭建 项目结构图 pom.xml <?xml version="1.0&q ...
- Delphi实现获取句柄并发送消息的方法(FindWindow、FindWindowEx、EnumChildWindows、SendMessage)
Delphi实现获取句柄并发送消息的方法 本文以实例形式详细说明了Delphi获取句柄并发送消息的方法,具体用法说明如下: 查找另外一个窗口的句柄: handle := FindWindow(nil, ...
- Delphi中SendMessage使用说明(所有消息说明) good
Delphi中SendMessage使用说明 SendMessage基础知识 函数功能:该函数将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回.而函数Po ...
- SendMessage函数的常用消息及其应用大全
来源:http://www.360doc.com/content/09/0814/10/19147_4907488.shtml,非常全面的解释. 文本框控件通常用于输入和编辑文字.它属于标准 Wind ...
- 发送消息执行记事本的“另存为”菜单功能(通过WM_COMMAND控制使用别的程序的菜单命令)
发送消息执行记事本的“另存为”菜单功能procedure TForm1.FormCreate(Sender: TObject);var hNotepad: Cardinal;begin hNotepa ...
- [转] C#中发送消息给指定的窗口,以及接收消息
原文C#中发送消息给指定的窗口,以及接收消息 public class Note { //声明 API 函数 [DllImport("User32.dll", EntryPoint ...
- Winform 程序嵌入WPF程序 并发送消息
废话不多说,先看解决方案目录 WindowsFormsDemo是主程序,WpfApp是嵌入的WPF程序,先看WPF程序,程序默认启动的页面是MainWindow.xaml,这里注释掉App.xaml里 ...
- 关于 使用python向qq好友发送消息(对爬虫的作用----当程序执行完毕或者报错无限给自己qq发送消息,直到关闭)
以前看到网上一些小程序,在处理完事物后会自动发送qq消息,但是一直搞不懂是说明原理.也在网上找过一些python登陆qq发送消息的文字,但是都太复杂了.今天偶然看到一篇文章,是用python调用win ...
- 【转】python win32api win32gui win32con 简单操作教程(窗口句柄 发送消息 常用方法 键盘输入)
作者:https://blog.csdn.net/qq_16234613/article/details/79155632 附:https://www.programcreek.com/python/ ...
随机推荐
- 日志-logback
参考:http://www.importnew.com/22290.html 一 概述 1.1 LogBack.Slf4j和Log4j之间的关系 1)Slf4j(The Simple Logging ...
- nodejs 语法很特别的地方
1. 不过我们之前说过了有 this 和没 this 的时候作用域不同,那个参数只是作用于构造函数中,而加了 this 的那个则是成员变量.用一个 this 就马上区分开来他们了,所以即使同名也没关系 ...
- Flume的Avro Sink和Avro Source研究之二 : Avro Sink
啊,AvroSink要复杂好多:< 好吧,先确定主要问题: AvroSink为啥这么多代码?有必要吗?它都有哪些逻辑需要实现? 你看,avro-rpc-quickstart里是这么建client ...
- jQuery download file
jQuery.download = function (url, method, p, c, e, i, o, goodsType, reciveUser, suplier) { jQuery('&l ...
- windows live writer 设置默认字体
下载 Text Template 插件 设置默认字体添加模版. <p style="padding-bottom: 0px; line-height: 130%; margin-t ...
- 分享知识-快乐自己:HashMap 与 HashTable 的区别
特性: HashMap 与 Hashtable 的分析: 1):HashMap简介 1.底层数组+链表实现,可以存储null键和null值,线程不安全 2.HashMap 不是线程安全的 3.Hash ...
- JS解析+预解析相关总结
[js预解析机制]先来说说js的解析机制吧,浏览器在解析js代码时是从上到下解析的.解析顺序如:(1)预解析 找var和function (2)逐行代码解析 表达式 函数调用 ...
- 《Advanced Bash-scripting Guide》学习(十六):一个显示输入类型的脚本
本文所选的例子来自于<Advanced Bash-scripting Gudie>一书,译者 杨春敏 黄毅 function show_input_type() { [ -p /dev/f ...
- 手动下载 Xcode 文档
下载Xcode文档的方法有两个: 1. 自动下载:到在Xcode的Preserences中Downloads页面的Documentation,点击对应文档的下载. 2. 手动下载:到这个页面:http ...
- Kestrel Web 服务器学习笔记
前言: ASP.NET Core 已经不是啥新鲜的东西,很多新启的项目都会首选 Core 做开发: 而 Kestrel 可以说是微软推出的唯一真正实现跨平台的 Web 服务器了: Kestrel 利用 ...