#include "预编译.h"
#include <string>
#pragma warning(disable:4996) //忽略4996错误提示
#pragma comment(linker,"/entry:mainCRTStartup /subsystem:windows")//不明白但必要
//引入微软的include <Windows.h>后才能进行如下某些函数与类型的编写
void PrintUI(const char * exeName,const char* UIName,const char* color,short x,short y,WORD UIWide,WORD UIHeight)
{
AllocConsole();//创建一个控制台
freopen("conin$","r+t",stdin);//将输出流设置为当前的窗口
freopen("conout$", "w+t", stdout);//将输入流设置为当前窗口
SetConsoleTitleA(UIName);
system(color);
}
char clName[MAXBYTE];//句柄寻找窗口类名
char titleName[MAXBYTE];//标题
std::vector<HWND> * myhwnd = new std::vector<HWND>();
/*zhe BOOL 是一个int 草了 参数第一个是句柄,第二个是 系统调用次函数传递给你的参数*/
BOOL CALLBACK enumFunction(HWND j,LPARAM Lparam) //用来获取当前程序中符合条件的句柄
{
GetClassName(j,clName,MAXBYTE);//通过句柄来获取窗口类名
GetWindowText(j,titleName,MAXBYTE);
if (strstr(clName, "TXGuiFoundation") &&
!strstr(titleName, "QQ") &&
titleName[0] != 0)
{
myhwnd->push_back(j);
printf("句柄:%d === 类名:%s === 标题名: %s \n",j,clName,titleName);
}
if (j != nullptr)
{
return 1;
}
else
{
return 0;
}
//return true; //返回true为继续获取句柄,返回false为只获取一次句柄
}
int _tmain(int argc,_TCHAR*argv[]) {
PrintUI("hello,world!","myConsole","color 0A",500,500,800,800);
//color的 0 是背景颜色黑色 A是字体颜色
// SendMessage((HWND)0x0002089A,WM_PASTE,0,0);
EnumWindows(enumFunction,NULL);//枚举窗口
std::cout << myhwnd->size()<<"mysize" << std::endl;;
for (std::vector<HWND>::iterator c = myhwnd->begin(); c != myhwnd->end(); c++)
{
//一下内容说实话没屁用,可以删掉 这,段代码总感觉有问题啊还有点卡电脑
//前景锁定超时值 , 一下操作均为假激活措施,可以不用了解为什么
DWORD dwTimeOut =-1; //Dword为 无符号long 赋值负一取最大正整数
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT,0,&dwTimeOut,0);
if (dwTimeOut >= 100)
{
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, 0, SPIF_SENDCHANGE | SPIF_UPDATEINIFILE);
//更新写入配置文件
}
HWND THISwindowJB=GetForegroundWindow();//获取当前窗口句柄
SetWindowPos(THISwindowJB,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);//改变窗口属性
DWORD currentThreadId = GetCurrentThreadId(); //获取当前线程id
DWORD curWindowThreadId = GetWindowThreadProcessId(THISwindowJB,NULL); //获取当前窗口的线程
//附加线程 currentThreadId -> currentThreadId
AttachThreadInput(currentThreadId, curWindowThreadId,true);
//以上内容说实话没屁用
ShowWindow(*c, SW_NORMAL);//获取句柄显示将句柄窗口显示
SetForegroundWindow(*c);//将窗口放在最前面
SendMessage(*c, WM_PASTE, 0, 0);//将复制的内容发送到窗口
keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), 0, 0); // 按下回车
Sleep(50);
keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), KEYEVENTF_KEYUP, 0); // 抬起回车
}
std::cin.get();
}
c++对qq发送聊天窗口发送消息
最新推荐文章于 2024-04-03 00:44:01 发布