1、知道窗口中类或名用FindWindow()
2、有 CWnd 指针,使用 GetSafeHwnd()
3、AfxGetMainWnd()->GetSafeHwnd()
2、有 CWnd 指针,使用 GetSafeHwnd()
3、AfxGetMainWnd()->GetSafeHwnd()
解决方案 »
- OLE和ActiveX技术,谁先出现的?
- 我在编译baseclassese库时出现下列错误
- 头晕了,ClassWizard中,CView捕捉消息响应,Message下有Create和WM_CREATE,两者啥区别?
- 双缓冲显示,运行一会儿就死机
- 如何用C语言的fopen打开一个二进制文件并读到char*中
- MSDN出了问题,不可正常使用,请有经验的同志帮忙
- directdraw 可以只用一个primarysurface 吗?
- ★★★★★急,两个问题关于DateTimePicker控件1如何显示NULL2如何显示年月日时分秒
- XP系统中,在占用ActiveX控件不能重命名
- 有关DialogBar
- suddy你好,CJ608例子编译出错帮我看一下???????????????
- 单步调试
有 CWnd 指针如CWnd *m_Wnd,使用HANDLE m_Handle=m_Wnd->m_hWnd;
如果你要在窗口的成员函数中给这个窗口发个消息的话就:
PostMessage(m_hwnd,WM_MYMESSAGE,wParam,lParam);如果你要给本程序中的其他窗口发消息,可以用全局变量的方法来得到这个句柄。比如你要给B窗口发消息,定义一个全局变量HWND glwnd;在B窗口类的OnInitDialog()函数中,写上:glwnd = m_hwnd;然后你就可以用glwnd作参数给B窗口发消息了。如果你要给其他程序的窗口发消息,就稍微麻烦一点了。看下面的代码:
假如我要给QQ发一个消息(当然它不一定处理这个消息)DWORD dwProcessID=NULL;
HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PROCESSENTRY32 processes;
processes.dwSize =sizeof(PROCESSENTRY32);
if(Process32First(hSnapshot,&processes))
{
if(_stricmp(processes.szExeFile,TEXT("Oicq.exe"))==0)
{
dwProcessID=processes.th32ProcessID;
}
else
{
while(Process32Next(hSnapshot,&processes))
{
if(_stricmp(processes.szExeFile,TEXT("Oicq.exe"))==0)
{
dwProcessID=processes.th32ProcessID;
break;
}
}
}
}
if(dwProcessID!=NULL)
EnumWindows(EnumWndProc,dwProcessID);
//以上代码找到QQ的运行的进程,并调用EnumWndProc,下面是EnumWndProc的代码:BOOL CALLBACK EnumWndProc(HWND hwnd,LPARAM lParam)
{
DWORD dwProcessID=(DWORD)lParam;
DWORD dwCurID;
GetWindowThreadProcessId(hwnd,&dwCurID); if(dwProcessID==dwCurID) //找到它的hwnd了
{
SendMessage(hwnd, WM_JASON, 0, 0);
return FALSE;
}
return TRUE;
}//累了,回家休息,别忘了给我分