社区
Windows SDK/API
帖子详情
为什么我使用SetForegroundWindow(handle) 无法将窗体拉到前台来
kill_net
2003-02-05 10:46:47
如题
...全文
2574
12
打赏
收藏
为什么我使用SetForegroundWindow(handle) 无法将窗体拉到前台来
如题
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ddeng
2003-02-10
打赏
举报
回复
试试BringToFront吧
kill_net
2003-02-09
打赏
举报
回复
楼上的这个方法,不就是把窗体设置成在最上端,然后在取消吗?我试过了,
好象 不行的也
jishiping
2003-02-09
打赏
举报
回复
"不就是把窗体设置成在最上端,然后再取消吗?"
后面还有一个SetForegroundWindow啊。我的程序就是这样用的,没有发现问题。
jishiping
2003-02-08
打赏
举报
回复
如果窗口的属性FormStyle不是fsStayOnTop,可以用下面的函数代码实现:
void SetForegroundWin(HWND hWnd)
{
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
SetForegroundWindow(hWnd);
}
std::coding::peasant
2003-02-08
打赏
举报
回复
这个问题已经困扰我好长时间了。
我只有这个办法,因为以我的能力研究,只有这个方法可行,但是这个“另外一个.exe”文件可以是你这个主 .exe 文件本身!也就是说,你的程序可以只有一个 .exe 文件,通过修改你的 WinMain() 主函数可实现!让你的 .exe 文件的第二个实例激活你的第一个实例窗口,拉到最前面,然后第二个实例自动退出,不作任何其他处理,包括初始化 Application 和主窗体!
kill_net
2003-02-08
打赏
举报
回复
我真服了,楼上的这位兄弟,你就不能用一些比较简单的方法
std::coding::peasant
2003-02-07
打赏
举报
回复
需要拉到最前面时, 在你的钩子里可以 PostMessage 自定义消息到主窗体, 主窗体得到你的自定义消息, 在这个消息里调用你的另外一个 .exe 文件, 传递要激活的窗体的 handle 为参数.
kill_net
2003-02-07
打赏
举报
回复
楼上的方法不行的,我要实现将窗体激活是我的键盘钩子的一个过程,无法将他加到.exe文件中
ilikeff8
2003-02-06
打赏
举报
回复
BringWindowToTop(HWND);
std::coding::peasant
2003-02-06
打赏
举报
回复
可以实现的, 就是借助另外一个 .exe 文件!
我发现一个奇怪的现象: (.exe)自己的窗口大多数情况下用 SetForegroundWindow(handle) 不能置前, 但 handle 是别人(另外一个.exe文件)的窗口句柄, 却百分之百灵!
解决办法: 另编一个 .exe 文件, 主文件通过传递窗口句柄调用这个文件, 这个文件调用 SetForegroundWindow(handle) 把主文件的窗口置前.
astros
2003-02-06
打赏
举报
回复
试试这个:
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT,
0, NULL,
SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
SetForegroundWindow(Handle);
huzhangyou
2003-02-05
打赏
举报
回复
在Win98/2000下, SetForegroundWindow并不总是能保证获得焦点,
通常情况下SetForegroundWindow会调用FlashWindowEx来闪烁目标窗口,代表已经切换了窗口,但是这不是我们需要的.网络上有一些顶尖高手使用修改窗口切换的系统规则后,用SetForegroundWindow切换到其他进程的窗口,但是现在,我们有了UNDOCUMENTED的另外一个USER32函数:
SwitchToThisWindow(...);
来完成这项工作.
那么原型是怎么的呢? 下面就来揭晓了......
void WINAPI SwitchToThisWindow (
HWND hWnd, // Handle to the window that should be activated
BOOL bRestore // Restore the window if it is minimized
);
由于没有原型和库,我们在使用时通常用动态联接法.
typedef void (WINAPI *PROCSWITCHTOTHISWINDOW) (HWND, BOOL);
PROCSWITCHTOTHISWINDOW SwitchToThisWindow;
HMODULE hUser32 = GetModuleHandle("user32");
SwitchToThisWindow = (PROCSWITCHTOTHISWINDOW)GetProcAddress(hUser32, "SwitchToThisWindow");
这样,我们的任务就完成了.
以前jsp有一段代码刚好是这个功能的
你可以自己找以下
delphi7根据句柄把
窗体
前置
这个delphi7小程序能根据一个
窗体
的句柄,或类名或标题把该
窗体
置于桌面最前端
C# WINFORM 强制让
窗体
获得焦点的方法代码
C# WINFORM 强制让
窗体
获得焦点的方法代码,需要的朋友可以参考一下
将最小化或者挡住的
窗体
置为最前及Show
Window
、
Set
Foreground
Window
用法
[DllImport("user32.dll ")] private static extern bool
Set
Foreground
Window
(IntPtr hWnd); [DllImport("user32.dll")] private static extern bool Show
Window
(IntPtr hWnd, int nCmdShow); private void butto
Set
Foreground
Window
以及 如何将一个某个窗口提到最顶层
http://hi.baidu.com/gookings/item/2b7912ca8d5b3625a0b50aa2
Set
Foreground
Window
函数功能:该函数将创建指定窗口的线程设置到
前台
,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。系统给创建
前台
窗口的线程分配的权限稍高于其他线程。 函数原型:BOOL
Set
Foreground
Window
()
C#将非模态
窗体
置顶显示方法
我的理解就是,如果一个 Winform 项目有多个
窗体
,其中有一个
窗体
的 TopMost 属性设为 true 了,而其他
窗体
的 TopMost 未设置为 true,那么 TopMost 属性为 true 的
窗体
就会显示在其他
窗体
之上;也就是把 ShowInTaskbar 属性设置为 false,把 TopMost 属性设置为 true,也在 load 方法里用代码指定 TopMost=true,三个条件一起满足的情况下,
窗体
又可以置顶了。// 设置
窗体
显示在最上层。// 设置本
窗体
为活动
窗体
。
Windows SDK/API
1,222
社区成员
8,136
社区内容
发帖
与我相关
我的任务
Windows SDK/API
C++ Builder Windows SDK/API
复制链接
扫一扫
分享
社区描述
C++ Builder Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章