您的位置:程序门 -> vb ->



求救啊,郁闷那?我想用api使一个窗口在最前台并取得焦点,怎么不行啊?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


求救啊,郁闷那?我想用api使一个窗口在最前台并取得焦点,怎么不行啊?[已结贴,结贴人:celestica]
发表于:2007-04-11 23:15:39 楼主
我新建一个文件名为 "new "的文本文件,在后台或者最小化时,用如下函数到前台怎么没用啊?

option   explicit
private   declare   function   switchtothiswindow   lib   "user32.dll "   (byval   hwnd   as   long,   byval   brestore   as   boolean)
private   declare   function   findwindow   lib   "user32 "   alias   "findwindowa "   (byval   lpclassname   as   string,   byval   lpwindowname   as   string)   as   long
private   declare   function   getforegroundwindow   lib   "user32 "   ()   as   long
private   declare   function   setfocusapi&   lib   "user32 "   alias   "setfocus "   (byval   hwnd   as   long)
private   declare   function   bringwindowtotop   lib   "user32 "   (byval   hwnd   as   long)   as   long
private   declare   function   setactivewindow   lib   "user32 "   (byval   hwnd   as   long)   as   long
private   declare   sub   sleep   lib   "kernel32 "   (byval   dwmilliseconds   as   long)
private   declare   function   setforegroundwindow   lib   "user32 "   (byval   hwnd   as   long)   as   long
private   const   em_setpasswordchar   =   &hcc
private   const   hwnd_topmost&   =   -1
private   const   swp_nosize&   =   &h1
private   const   swp_nomove&   =   &h2
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   command1_click()
dim   hdl   as   long
dim   b
hdl   =   findwindow( "notepad ",   "new ")                       'vbnullstring           #32770
'setwindowpos   hdl,   hwnd_topmost,   0,   0,   0,   0,   swp_nomove   or   swp_nosize

'b   =   switchtothiswindow(hdl,   true)
      'setfocusapi   (hdl)
      'setactivewindow   (hdl)
    'appactivate   "new "
  '   bringwindowtotop   (hdl)
    setforegroundwindow   (hdl)
     
end   sub

以上函数我都试过了,为什么窗口就是不到前台呢?
发表于:2007-04-12 08:16:321楼 得分:8
用showwindow试试
发表于:2007-04-12 08:26:482楼 得分:12
setforegroundwindow是可以的
问题是你的findwindow可能没找到hwnd,debug看看hdl可能是0吧?
你是英文版系统吗,英文版notepad标题好像也不是new呀?

换成这样试试
hdl   =   findwindow( "notepad ",   vbnullstring)

注意前提:1、notepad要已打开;2、notepad不是最小化状态,否则请用showwindow
发表于:2007-04-12 11:42:043楼 得分:0
谢谢,我电脑系统是英文版的,句柄返回确实是0,可能句柄查找有问题,hdl   =   findwindow( "notepad ",   vbnullstring)也试过了,也不行,我再试试!


快速检索

最新资讯
热门点击