吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 501|回复: 15
收起左侧

[求助] 如何锁死Everything标题,并发送消息给Edit1?

[复制链接]
冥界3大法王 发表于 2024-11-30 12:38
本帖最后由 冥界3大法王 于 2024-11-30 12:53 编辑

image.png


procedure TForm17.test2Click(Sender: TObject);
var
  Kao: hWnd;
begin
  Kao := FindWindow(nil, PChar('Everything (1.5a) 1.5.0.1356a (x64) [Administrator]')); ===>这里会变化
  if Kao <> 0 then
  begin
    SetForegroundWindow(Kao);
    ShowWindow(Kao, SW_RESTORE);
   SendMessage(Kao, WM_SETTEXT, 0, lParam(PChar('Hello, World!'))); ===>我要改的不是Everything标题(现在找到了,改的位置不对!
  end
  else
  begin
    ShowMessage('未找到窗口');
  end;
end;


image.png

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

 楼主| 冥界3大法王 发表于 2024-11-30 12:58
好像开窍了:
https://www.cnblogs.com/jijm123/p/14395396.html
吃完饭测试。
无闻无问 发表于 2024-11-30 15:03
这个思路应该行:
用FindWindow找到程序窗口句柄,再用GetTopWindow取第一个子窗口句柄,再用GetNextWindow遍历所有子窗口,控件句柄,配合spy++取到的编辑框类型,比对,成功发送消息……
ywwlkj 发表于 2024-11-30 16:01
小林影视 发表于 2024-11-30 16:49
这个话题被我看到,你算是遇到宝啦 前几天刚做完利用python的做Everything自动化搜索的项目,有点小小的心得,分2点来讲,
第1点“锁定Everything标题的”这个需求我不知道你想达到什么目的 想干嘛,不过第2点我倒是知道这么弄
第2点Everything可以直接使用CMD命令直接设置,如图  ,所以很简单 在确保Everything软件在后台运行状态下 直接拿你编程语言写调用CMD指令的程序来运行就可以了,比如我的python的
[Python] 纯文本查看 复制代码
import subprocess
# Everything安装路径
everything_path = r"D:\Program Files (x86)\Everything\Everything.exe"
# 搜索词
aa = "我的天空"
# 构建搜索命令
cmd = [everything_path, "/search", aa]
subprocess.run(cmd, capture_output=True, text=True, check=True)
print("搜索文件的步骤完成ok")

1.png

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
anning666 + 1 + 1 热心回复!

查看全部评分

pepessss 发表于 2024-11-30 17:03
以前开挂倒是需要。
MarioCrane 发表于 2024-11-30 18:48
Everything有SDK,不用搞的这么麻烦
https://www.voidtools.com/zh-cn/support/everything/sdk/

[C++] 纯文本查看 复制代码
// Set the search string to abc AND 123
Everything_SetSearch("abc 123");

// Execute the IPC query.
Everything_Query(FALSE);
 楼主| 冥界3大法王 发表于 2024-11-30 21:44
MarioCrane 发表于 2024-11-30 18:48
Everything有SDK,不用搞的这么麻烦
https://www.voidtools.com/zh-cn/support/everything/sdk/

没有Delphi的,不只看了多少遍,只能不甘心的给差评。
搞成Delphi的,右侧有案例,双击调用不知方便了多少倍。
 楼主| 冥界3大法王 发表于 2024-11-30 22:45
无闻无问 发表于 2024-11-30 15:03
这个思路应该行:
用FindWindow找到程序窗口句柄,再用GetTopWindow取第一个子窗口句柄,再用GetNextWindow ...

procedure TForm18.Button1Click(Sender: TObject);
var
  子窗口句柄, 窗口句柄: HWND;
begin
窗口句柄 := FindWindow('EVERYTHING_(1.5a)', nil);          //知道类名是EVERYTHING_(1.5a)
  if 窗口句柄 <> 0 then
  begin
    ShowMessage(IntToStr(窗口句柄)); //正常得到了

    子窗口句柄 := FindWindowEx(窗口句柄, 0, 'Edit1', nil);
    ShowMessage(IntToStr(子窗口句柄));    //怎么得不到呢?
end;
无闻无问 发表于 2024-12-1 07:55
看API 说明:
FindWindowEx是在窗口列表中寻找与指定条件相符的第一个子窗口 。
你这函数获取的是第一个啊,Edit1不一定是第一个嘛,先取到第一个子控件句柄,再GetNextWindow遍历……

你用spy4win看看它是第几个子窗口,以及类名,再查找比对……
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-1-5 06:17

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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