怎么向隐藏的窗口中发送键盘消息

怎样向隐藏的窗口中发送键盘消息?
真实的窗口被隐藏了,看到的只是开发者自己画的一个窗口(比如很多网游的窗口(比如QQ三国)),我想向它发送键盘消息。怎样做?
不知道的就别告诉我做不到了。很多外挂什么的已经证明了,能做到。谢谢大家

------解决方案--------------------
LZ做外挂?
关注……
------解决方案--------------------
没做过,不清楚...

直接往隐藏窗口句柄发消息不行吗?
------解决方案--------------------
探讨
没做过,不清楚...

直接往隐藏窗口句柄发消息不行吗?

------解决方案--------------------
LZ估计是不知道怎么找到那个隐藏窗口 如果找到了 直接 ::SendMessage(h_wnd, ...) 就是了
------解决方案--------------------
不过现在的网游大部分都是使用的directinput 用消息是没用的
------解决方案--------------------
SendMessage搞不定?隐藏窗口也有句柄啊.
------解决方案--------------------
先EnumProcess,然后,就能得到枚举的进程名。
DWORD pid = // 已知某个进程的ID
CMainWindowIterator itw(pid);
for (HWND hwnd = itw.First(); hwnd; hwnd=itw.Next()) {
// do something
}
 
//////////////////////////////////////////////////////
// 这个类主要是封装::EnumWindows,列举顶层窗口
//
class CWindowIterator {
protected:
HWND* m_hwnds; // 隶属于某个进程PID窗口句柄数组
DWORD m_nAlloc; // 数组大小
DWORD m_count; // 找到的窗口句柄数
DWORD m_current; // 当前的窗口句柄
static BOOL CALLBACK EnumProc(HWND hwnd, LPARAM lp);
 
// 虚拟枚举函数
virtual BOOL OnEnumProc(HWND hwnd);
 
// 在派生中改写此函数来过滤不同种类的窗口
virtual BOOL OnWindow(HWND hwnd) {
return TRUE;
}
 
public:
CWindowIterator(DWORD nAlloc=1024);
~CWindowIterator();
 
DWORD GetCount() { return m_count; }
HWND First();
HWND Next() {
return m_hwnds && m_current <m_count ? m_hwnds[m_current++] : NULL;
}
};
 
////////////////////////////////////
// 列举某个进程的顶层窗口
//
class CMainWindowIterator : public CWindowIterator {
protected:
DWORD m_pid; // 进程ID
virtual BOOL OnWindow(HWND hwnd);
public:
CMainWindowIterator(DWORD pid, DWORD nAlloc=1024);
~CMainWindowIterator();
};
------解决方案--------------------
sendmessage给隐藏窗口的handle
------解决方案--------------------
隐藏又不是销毁,找到这个隐藏窗口的句柄就可以了。

CWnd *pWnd = FindWindow(NULL, "窗口标题"); 
//pWnd ->m_hWnd 就是窗口句柄

有了窗口句柄还有什么事办不到?

------解决方案--------------------
感觉10楼说得有道理,7楼的应该是属于隐藏进程的解决办法吧,跟楼主有相同爱好,可以交流,
------解决方案--------------------
枚举所有进程,貌似根据文件路径名就可以找到其主线程吧。
------解决方案--------------------
那就用枚举吧

探讨
根本不知道窗口的名字和窗口的类的名字怎么找呀?

------解决方案--------------------
只要得到窗口句柄,一切便搞定。
如果得不到,就别想了。
------解决方案--------------------

------解决方案--------------------
你知道程序的可执行文件名吗?比如飞信:FetionFx.exe,然后枚举进程就可以了。例如:
typedef struct tagWNDINFO
{
DWORD dwProcessId;
HWND hWnd;
} WNDINFO, *LPWNDINFO;