| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1444 人关注过本帖
标题:如何将窗口前置?
只看楼主 加入收藏
摩托骡拉!
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-1-3
收藏
 问题点数:0 回复次数:0 
如何将窗口前置?

xp的资源管理器可以应用程序列表中的程序前置,不知道用程序实现相同的功能该怎么做。在网上搜索了整整一个晚上,终于找到了一段代码(已做相应更改),是根据窗口的标题来将窗口置为最上层的。但如果这个窗口是最小化的话,还是不能成为当前窗口(资源管理器里的前置就可以)。还有一个问题,我找到的这段代码,是根据窗口的标题来查找窗口的,这对于窗口标题是变化的窗口来说,就不好用了,还是需要根据程序名称来前置才能满足我的要求。我只懂用vb编一些加减乘除的代码,对于api如果您只是跟我说怎么用,我还是用不起来的,也就是说,我需要用到现成的。感谢您的帮忙!我试了差不多一个晚上,发现使用以下的代码,在某种情况下(很少出现,但是会出现,我也说不清楚是什么情况下出现的。一个晚上,出现了几次),就算是用以下代码将某个指定的窗口前置同时最大化,也不会是最前窗口,只是在任务栏上闪烁。我的目的是借助按键精灵去自动取一些报表,而按键精灵只对当前窗口有效。

附我找到的这段代码,看可不可以就此做修改。

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long


Private Sub Form_Load()

Dim iTop, ProName
'iTop表示是否设定为最上层,-1设定为最上层,-2取消设定为最上层
Dim winHwnd As Long
Const FLAGS1 = &H1 '&H1不更动目前视窗大小,&H2不更动目前视窗位置
Const FLAGS2 = &H2 '&H1不更动目前视窗大小,&H2不更动目前视窗位置

'读入参数
iPath = VB.App.Path & "\"
InFileNum = FreeFile '获得文件号
Open iPath & "Top.ini" For Input As #InFileNum '打开文件
Line Input #InFileNum, ProName '以行输入的方式读文件,即获得窗口名称
Line Input #InFileNum, iTop '以行输入的方式读文件,即获得是否设定为最上层的参数
Close #InFileNum '关闭文件
If iTop <> -1 And iTop <> -2 Then
MsgBox "文件“Top.ini”中的第2行参数只能是“-1”或“-2”,请修正!"
GoTo EndSub
End If
iTop = 0 + iTop

'设定是否在最上层
winHwnd = FindWindow(vbNullString, ProName)
If winHwnd <> 0 Then SetWindowPos winHwnd, iTop, 0, 0, 0, 0, FLAGS1

EndSub:
Unload Me
End Sub

[此贴子已经被作者于2006-1-3 3:59:34编辑过]

搜索更多相关主题的帖子: 窗口 资源管理器 搜索 api 
2006-01-03 03:31
快速回复:如何将窗口前置?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013993 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved