如何得到一个窗口的句柄(50分)

  • 主题发起人 主题发起人 sentiment
  • 开始时间 开始时间
S

sentiment

Unregistered / Unconfirmed
GUEST, unregistred user!
如何得到一个窗口的句柄,通过什么特征来找到该窗口。另外,SHELLEXECUTE返回的HANDLE<br>是个指向什么的HANDLE,我用ISWINDOW来判断SHELLEXECUTE返回的句柄总是FALSE。上述两个<br>问题请教了。
 
窗口句柄 : <br>var<br>&nbsp; myhandle: THandle;<br>begin<br>&nbsp; myhandle:= findwindow('TForm','test');<br>end;<br><br>
 
FindWindow<br>FindWindowEx
 
var<br>&nbsp;H:HWND;<br>&nbsp;p:TPoint;<br>begin<br>&nbsp; GetcursorPos(P);<br>&nbsp; H:=WindowFromPoint(P);<br>end;<br>得到MOUSE位置的窗口句柄
 
参看以前帖子http://www.delphibbs.com/delphibbs/dispq.asp?lid=898608
 
哎呀,,这个问题,,我前几天断网了,是不是分都跑了哦?<br>其实简单,楼上的房客说得对,用FindWindow(),自己去查WINSDK,就知道用法了,<br>简单得不得了!如果大伙这么说都还不行,给我发E-MAIL告诉我你的信箱,我给你一个例子,<br>不过要给点分哦,,,:)
 
findwindow<br>WindowFromPoint<br>这两个都可以,WindowFromPoint可以具体到鼠标停留在那个控件的handle<br>
 
自己程序中的话,formxxx.handle.
 
WindowFromPoint比较好用
 
谁知道QQ的登陆窗口的句柄怎么找?怎么找不到啊?
 
可以根据一个窗口的标题或类名来查找它的句柄,利用FindWindow函数。<br><br>如果不知道标题或类名可以通过SKY++来查找,QQ登陆窗口的标题是动态的不可见字符,<br>无法通标题来醒找,类名通过SKY++观察是“#32770”,便程如下:<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; hWinDC: HDC;<br>&nbsp; hHandle: THandle;<br>&nbsp; S: string;<br>begin<br>&nbsp; hHandle := FindWindow('#32770', nil);<br>&nbsp; hWinDC := GetDC(hHandle);<br>&nbsp; try<br>&nbsp; &nbsp; TextOut(hWinDC, 10, 50, 'Find it', 10);<br>&nbsp; &nbsp; // 取标题<br>&nbsp; &nbsp; SetLength(S, MAX_PATH);<br>&nbsp; &nbsp; SetLength(S, GetWindowText(hHandle, PChar(S), MAX_PATH));<br>&nbsp; &nbsp; ShowMessage(S);<br>&nbsp; &nbsp; // 取窗口类名<br>&nbsp; &nbsp; SetLength(S, MAX_PATH);<br>&nbsp; &nbsp; SetLength(S, GetClassName(hHandle, PChar(S), MAX_PATH));<br>&nbsp; &nbsp; ShowMessage(S);<br><br>&nbsp; &nbsp; SetWindowText(hHandle, 'SKY_TEST');<br>&nbsp; finally<br>&nbsp; &nbsp; ReleaseDC(hHandle, hWinDC);<br>&nbsp; end;<br>end;<br><br><br>至于SHELLEXECUTE的返回值什么名柄也不是,只是一个返回信息,可以根据它知道是否执行出错!!<br><br><br>
 
但是,#32770我如何筛选出唯一呢?有好多东东都是#32770的呀。请指教。
 
后退
顶部