吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 965|回复: 3
收起左侧

[求助] 求教以下Delphi代码2次弹框的字符与实际值相同为何找不到窗口呢

[复制链接]
冥界3大法王 发表于 2021-1-5 19:37
var
  vh: HWND;
  h: HWnd;
  p: array[0..254] of char;
begin
  h := GetWindow(Handle, GW_HWNDFIRST);
  while h <> 0 do
  begin
    GetClassName(h, p, Length(p));
    if p = Keyword3 then                    //如果窗口类名=.INI窗口标题对应的类名
    begin
      GetWindowText(h, p, Length(p));      //那就得到其窗口标题
      showmessage(p);
      Clipboard.AsText := p;
    end;
    h := GetWindow(h, GW_HWNDNEXT);
  end;

  vh := FindWindow(nil, PWideChar(Clipboard.AsText));    // 这里再把p分配给找窗口   原先粉字为某程序的标题内容字符串,当我把它换成变量p,就找不到窗口了,何故?
后来我想了想,是不是变量类型不匹配呢? 于是我又用到了剪贴板来过渡一板才OK。但我还是想知道为什么呢? 有没有类型查询的函数或方法?
  if vh <> 0 then
  begin
    Winapi.Windows.SetParent(vh, Self.Scite.Handle);
    Winapi.Windows.MoveWindow(vh, 0, 0, Self.Scite.Width, Self.Scite.Height, True);
    SetWindowLong(vh, GWL_STYLE, GetWindowLong(vh, GWL_STYLE) and (not WS_CAPTION) and (not WS_BORDER) and (not WS_THICKFRAME));         //去除窗口标题栏!
  end
  else
    ShowMessage('程序未运行,请点【顶部齿轮图标】重新配置INI!');
end;

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 冥界3大法王 发表于 2021-1-5 20:25
找到原因了
break忘退出循环,所以取不到值
无闻无问 发表于 2021-1-5 21:51
哈哈哈,delphi高手有时也迷糊…所以,找bug排雷也是一项体力活…
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 04:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表