如何让窗体总是悬浮在最前端 即使启动一个全屏显示的游戏,如何能够做到让自己写的程序界面仍然显示在最前端??用SetWindowPos API不行啊。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 创建窗体的时候,使它的父窗口是你的桌面然后再用SetActiveWindow试试呢 设置SetWindowPos的第二个参数为HWND_TOPMOST试试 设置SetWindowPos的第二个参数为HWND_TOPMOST是不可以的,启动游戏一样被覆盖 我的应用程序已经启动了,游戏是后启动的。不是很清楚游戏的父窗口如何获取,而且要判定用户运行的程序是否为游戏好像不太可能。游戏窗口是能取到的, 当前程序是否为游戏应该也是能判断的.//取到当前顶层窗口HWND topHwnd= ::GetForegroundWindow();//下面是取当前程序对应的EXE名称,#include <tlhelp32.h> //注意包含 HANDLE hModuleSnap = INVALID_HANDLE_VALUE; MODULEENTRY32 me32; CString szPath; CString szExeName; hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID ); me32.dwSize = sizeof( MODULEENTRY32 ); if( !Module32First( hModuleSnap, &me32 ) ) { CloseHandle( hModuleSnap ); // Must clean up the snapshot object! return ""; } szPath=me32.szExePath; int nPos=szPath.ReverseFind('\\'); szExeName=szPath.Right(szPath.GetLength()- nPos-1); CloseHandle( hModuleSnap ); 你应该是知道游戏EXE名称的吧, 用取到的对比一下就OK了,有什么问题可以直接了到我的信箱[email protected] 刚刚掉了一句,要先取进程ID, 再取进程名称 DWORD dwPID=0; otherID=GetWindowThreadProcessId(topHwnd,&dwPID); 完整程序#include <tlhelp32.h> //注意包含HWND topHwnd= ::GetForegroundWindow();//当前程序窗口//下面是取当前程序对应的EXE名称, DWORD dwPID=0; //当前进程ID GetWindowThreadProcessId(topHwnd,&dwPID); HANDLE hModuleSnap = INVALID_HANDLE_VALUE; MODULEENTRY32 me32; CString szPath; CString szExeName; //当前进程EXE名称 hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID ); me32.dwSize = sizeof( MODULEENTRY32 ); if( !Module32First( hModuleSnap, &me32 ) ) { CloseHandle( hModuleSnap ); // Must clean up the snapshot object! return ""; } szPath=me32.szExePath; int nPos=szPath.ReverseFind('\\'); szExeName=szPath.Right(szPath.GetLength()- nPos-1); CloseHandle( hModuleSnap ); 最后比较一下szExeName, 如果是你要找的游戏进程名称,那么topHwnd就是游戏窗口了 wndTopMost不可以吗?(该窗口将保持她的顶层位置,即使她并不是活动窗口)书上是怎么说的! 下面代码能让你的窗口始终在最前端SetWindowPos(&this->wndTopMost ,0,0,0,0,SWP_NOSIZE); 谢谢zhrwolf1(清风)提供的大量源码!!我希望做的是窗口在任何游戏上能能悬浮,并且游戏不最小化,下午还接着试。 将图片读入内存的问题。 窗口层叠问题 MAKEINTRESOURCE(IDI_ICON1) 将一个整形值变为一个字符指针,有什么用? LoadIcon怎么通过这个字符指针找到资源的? 求怎样用skinmagic给自定义控件换肤? 请教一个简单的sql语句问题 请教高手:关于批处理文件的问题 想散分!!谁来? vc程序如何发布要通过注册吗 《VC++技术内莫第五版》真的这么差嘛? MFC中MSChart画曲线图 C/C++ 急~~~ 用CreateWindow创建子窗口时,为什么总是不成功? 在API中,如何调用VC本身的类及成员函数
//取到当前顶层窗口
HWND topHwnd= ::GetForegroundWindow();
//下面是取当前程序对应的EXE名称,
#include <tlhelp32.h> //注意包含 HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
MODULEENTRY32 me32;
CString szPath;
CString szExeName;
hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID );
me32.dwSize = sizeof( MODULEENTRY32 ); if( !Module32First( hModuleSnap, &me32 ) )
{
CloseHandle( hModuleSnap ); // Must clean up the snapshot object!
return "";
}
szPath=me32.szExePath;
int nPos=szPath.ReverseFind('\\');
szExeName=szPath.Right(szPath.GetLength()- nPos-1);
CloseHandle( hModuleSnap ); 你应该是知道游戏EXE名称的吧, 用取到的对比一下就OK了,有什么问题可以直接了到我的信箱
[email protected]
otherID=GetWindowThreadProcessId(topHwnd,&dwPID);
#include <tlhelp32.h> //注意包含HWND topHwnd= ::GetForegroundWindow();//当前程序窗口
//下面是取当前程序对应的EXE名称, DWORD dwPID=0; //当前进程ID
GetWindowThreadProcessId(topHwnd,&dwPID); HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
MODULEENTRY32 me32;
CString szPath;
CString szExeName; //当前进程EXE名称
hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID );
me32.dwSize = sizeof( MODULEENTRY32 ); if( !Module32First( hModuleSnap, &me32 ) )
{
CloseHandle( hModuleSnap ); // Must clean up the snapshot object!
return "";
}
szPath=me32.szExePath;
int nPos=szPath.ReverseFind('\\');
szExeName=szPath.Right(szPath.GetLength()- nPos-1);
CloseHandle( hModuleSnap );
最后比较一下szExeName, 如果是你要找的游戏进程名称,那么topHwnd就是游戏窗口了
(该窗口将保持她的顶层位置,即使她并不是活动窗口)书上是怎么说的!
我希望做的是窗口在任何游戏上能能悬浮,并且游戏不最小化,下午还接着试。