100分,如何找到多窗体外部程序的某一窗体的操作句柄! 我用ShellExecute打开了一个外部程序,该程序像Winamp一样有多个窗体,请问我怎么样才能找到其中某一个窗体的操作句柄,并且将键盘的输入焦点始终定在这个窗体上?最好能提供一个示例程序,能说清楚大概过程就行,问题解决立即给分,请大家帮帮忙,谢谢!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 function FindWin():Cardinal;var hHwnd : Cardinal;begin hHwnd:=FindWindow(nil,'Player'); if hhwnd=0 then hHwnd := FindWindow(nil,'InterVideo WinDVD 5'); if hhwnd=0 then begin Result := 0; exit; end else Result := hHwnd;end; 我用findwindow试过,可是窗体的标题是'当前打开的文件名'+'程序名称',打开不同的文件,窗体标题也不相同,这该怎么处理?用窗体的类吗?该怎么找到窗体的类呢?还有就是怎么将键盘的输入焦点强行限制在我指定的窗体上呢,用setfocus好像不行!! 我用ShellExecute打开外部程序之后,在findwindow中无论是用窗体类还是窗体的标题,我都无法获得窗体的句柄,返回值总是零,难道是我的方法不对吗? 我在findwindow返回值为0的时候也调用getlasterror函数查看出错消息,结果是函数执行成功,是不是用findwindow根本就不可能找到呢,有没有什么其他方法可以找到呀?拜托,大家帮帮忙吧!! ShellExecute以后略微停顿下比如用sleep再使用findwindow,程序运行也要时间,可能还没初始化完成 你用spy++看看你这个窗口信息先,看看标题、句柄、类型等等 如果知道窗口的类名,通过FindWindow函数就可以获得窗口的句柄。你返回值一直不对的话一定是调用不对,类名不对。可以用GetWindow函数来枚举窗口,用Findwindow函数来查找制定的窗口 这个窗体的类名让我非常困惑,他是“Afx:400000:b:10011:6:xxxxxxx”,其中xxxxxxx每次打开都不同,我以前没有见过这样的类名,不知道谁可以告诉我这究竟是什么类名呀 问题解决了,我用枚举的方式把窗体找出来了,用的是EnumWindow函数。结贴!!!!谢谢大家帮忙!! 不能建立输出文件 急在线等 100分 怎么定义指针? listbox 在线等待,急 如何能读入文本,然后一次取出一行进行操作? 程序退出后,托盘区的图标不能及时消失,大家来看看什么问题 请问如何设置密码位数为固定的? 关于日期计算的问题,请进! 新手提问,满意大送100分!!!!!!!!!!!!!!!1 请问DELPHI中怎么提取EXE文件的参数,请高手赐教! 如何得到父窗体? 哪位大哥能提供一下创建虚拟拔号连接的源程序。感激不尽啊
var
hHwnd : Cardinal;
begin
hHwnd:=FindWindow(nil,'Player');
if hhwnd=0 then
hHwnd := FindWindow(nil,'InterVideo WinDVD 5');
if hhwnd=0 then begin
Result := 0;
exit;
end else
Result := hHwnd;
end;
可以用GetWindow函数来枚举窗口,用Findwindow函数来查找制定的窗口