吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 668|回复: 10
收起左侧

[求助] 我的try一板,削中反攻技能咋不起作用呢?

[复制链接]
冥界3大法王 发表于 2024-3-6 16:51
本帖最后由 冥界3大法王 于 2024-3-6 17:36 编辑

image.png
[Delphi] 纯文本查看 复制代码
procedure TMainForm.sShellListView1DblClick(Sender: TObject);
begin
  if POS('.rvf', sShellListView1.Selected.Caption) > 0 then
  begin
    try
      RichViewEdit2.LoadRVF(sShellListView1.SelectedFolder.PathName);
      RichViewEdit2.Format;
    finally
      ShowMessage(sShellListView1.Selected.Caption + #13#10 + '请按回车键打开文件夹!');
    end;
  end;
end;


有个用鼠标双击打开文件夹时触发的bug。。。当然,我也可以用反汇编的方法消除掉!
image.png
但是我加了判断是否文件扩展名是 .rvf了啊。。
再有我也加了 tr ...finally...end捕获异常了啊。但咋没有捕获到呢?是不是我的用法不够火候?

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

Kls673M 发表于 2024-3-6 17:42
菜百只能来看图了,

你图带书签的软件是什么
 楼主| 冥界3大法王 发表于 2024-3-6 17:49
Kls673M 发表于 2024-3-6 17:42
菜百只能来看图了,

你图带书签的软件是什么

多功能高配火力全开大佬专用x64dg贴心汇编天使
爱飞的猫 发表于 2024-3-6 18:05
信息不足,需要看 0000000064183AE1 这个地址附近的代码:

 楼主| 冥界3大法王 发表于 2024-3-6 18:54
爱飞的猫 发表于 2024-3-6 18:05
信息不足,需要看 0000000064183AE1 这个地址附近的代码:

0000000064183AA0   | 55                        | push rbp                           |
0000000064183AA1   | 53                        | push rbx                           |
0000000064183AA2   | 48:83EC 78                | sub rsp,78                         |
0000000064183AA6   | 48:8BEC                   | mov rbp,rsp                        |
0000000064183AA9   | 48:C745 40 00000000       | mov qword ptr ss:[rbp+40],0        |
0000000064183AB1   | 48:C745 38 00000000       | mov qword ptr ss:[rbp+38],0        |
0000000064183AB9   | 48:C745 48 00000000       | mov qword ptr ss:[rbp+48],0        |
0000000064183AC1   | 48:C745 50 00000000       | mov qword ptr ss:[rbp+50],0        |
0000000064183AC9   | 48:896D 58                | mov qword ptr ss:[rbp+58],rbp      |
0000000064183ACD   | 48:898D 90000000          | mov qword ptr ss:[rbp+90],rcx      |
0000000064183AD4   | 90                        | nop                                |
0000000064183AD5   | 48:8B85 90000000          | mov rax,qword ptr ss:[rbp+90]      |
0000000064183ADC   | 48:8B88 B00A0000          | mov rcx,qword ptr ds:[rax+AB0]     |
0000000064183AE3   | E8 087782FF               | call moretool.639AB1F0             |
0000000064183AE8   | 48:89C1                   | mov rcx,rax                        |
0000000064183AEB   | 48:8D55 50                | lea rdx,qword ptr ss:[rbp+50]      |
0000000064183AEF   | 48:8B18                   | mov rbx,qword ptr ds:[rax]         |
0000000064183AF2   | FF53 30                   | call qword ptr ds:[rbx+30]         |
0000000064183AF5   | 48:8B45 50                | mov rax,qword ptr ss:[rbp+50]      |
0000000064183AF9   | 48:8945 60                | mov qword ptr ss:[rbp+60],rax      |
0000000064183AFD   | 48:8D0D 84010000          | lea rcx,qword ptr ds:[64183C88]    | 0000000064183C88:L".rvf"
0000000064183B04   | 48:8B55 60                | mov rdx,qword ptr ss:[rbp+60]      |
0000000064183B08   | 41:B8 01000000            | mov r8d,1                          |
0000000064183B0E   | E8 3DF85EFF               | call moretool.63773350             |
0000000064183B13   | 85C0                      | test eax,eax                       |
0000000064183B15   | 0F8E A8000000             | jle moretool.64183BC3              |
0000000064183B1B   | 90                        | nop                                |
0000000064183B1C   | 48:8B85 90000000          | mov rax,qword ptr ss:[rbp+90]      |
0000000064183B23   | 48:8B88 B00A0000          | mov rcx,qword ptr ds:[rax+AB0]     |
0000000064183B2A   | E8 51E8A3FF               | call moretool.63BC2380             |
0000000064183B2F   | 48:89C1                   | mov rcx,rax                        |
0000000064183B32   | 48:8D55 48                | lea rdx,qword ptr ss:[rbp+48]      |
0000000064183B36   | E8 B582A3FF               | call moretool.63BBBDF0             |
0000000064183B3B   | 48:8B85 90000000          | mov rax,qword ptr ss:[rbp+90]      |
0000000064183B42   | 48:8B88 A80A0000          | mov rcx,qword ptr ds:[rax+AA8]     |
0000000064183B49   | 48:8B55 48                | mov rdx,qword ptr ss:[rbp+48]      |
0000000064183B4D   | E8 8E50F3FF               | call moretool.640B8BE0             |
0000000064183B52   | 48:8B85 90000000          | mov rax,qword ptr ss:[rbp+90]      |
0000000064183B59   | 48:8B88 A80A0000          | mov rcx,qword ptr ds:[rax+AA8]     |
0000000064183B60   | E8 7B2AF3FF               | call moretool.640B65E0             |
0000000064183B65   | 90                        | nop                                |
0000000064183B66   | 48:8B85 90000000          | mov rax,qword ptr ss:[rbp+90]      |
0000000064183B6D   | 48:8B88 B00A0000          | mov rcx,qword ptr ds:[rax+AB0]     |
0000000064183B74   | E8 777682FF               | call moretool.639AB1F0             |
0000000064183B79   | 48:89C1                   | mov rcx,rax                        |
0000000064183B7C   | 48:8D55 38                | lea rdx,qword ptr ss:[rbp+38]      |
0000000064183B80   | 48:8B18                   | mov rbx,qword ptr ds:[rax]         |
0000000064183B83   | FF53 30                   | call qword ptr ds:[rbx+30]         |
0000000064183B86   | 48:8D4D 40                | lea rcx,qword ptr ss:[rbp+40]      |
0000000064183B8A   | BA 03000000               | mov edx,3                          |
0000000064183B8F   | 4C:8B45 38                | mov r8,qword ptr ss:[rbp+38]       |
0000000064183B93   | 4C:8D0D 06010000          | lea r9,qword ptr ds:[64183CA0]     | 0000000064183CA0:L"\r\n"
0000000064183B9A   | 48:8D05 13010000          | lea rax,qword ptr ds:[64183CB4]    | 0000000064183CB4:L"请按回车键打开文件夹!"

点评

0000000064183AE1 这个地址在一个指令的中间,有点不对劲哦。 sShellListView1.Selected 这个地方有没有可能在失败的时候给你空指针(表示没有选中)?试试检查一下?  详情 回复 发表于 2024-3-6 19:26
爱飞的猫 发表于 2024-3-6 19:26
冥界3大法王 发表于 2024-3-6 18:54
0000000064183AA0   | 55                        | push rbp                           |
00000000641 ...

0000000064183AE1 这个地址在一个指令的中间,有点不对劲哦。

sShellListView1.Selected 这个地方有没有可能在失败的时候给你空指针(表示没有选中)?试试检查一下?

 楼主| 冥界3大法王 发表于 2024-3-6 19:55
爱飞的猫 发表于 2024-3-6 19:26
0000000064183AE1 这个地址在一个指令的中间,有点不对劲哦。

sShellListView1.Selected 这个地方有没 ...

procedure TMainForm.sShellListView1DblClick(Sender: TObject);
begin
  ShowMessage(sShellListView1.Selected.Caption);
end;

@爱飞的猫  我就在这个控件的列表双击事件里啥也不写,就一个弹框得到选中的名称。。
都照样异常,你说灵异不灵异?

按道理来讲:
RichViewEdit2.LoadRVF(sShellListView1.SelectedFolder.PathName);
RichViewEdit2.Format;

加载一个选中的.rvf文件,因为鼠标双击的是文件夹,没有初始化所以该异常啊。
但是也异常说有点说不过去了。

点评

不灵异,selected 可能是空值。对空值访问就是无法读取地址 0 的错误。 你可以参考下属代码,看看能不能用(来源): [mw_shl_code=delphi,true]function GetSelectedFiles(ShellListView : TShellListView) :  详情 回复 发表于 2024-3-6 20:19
爱飞的猫 发表于 2024-3-6 20:19
冥界3大法王 发表于 2024-3-6 19:55
procedure TMainForm.sShellListView1DblClick(Sender: TObject);
begin
  ShowMessage(sShellListView ...

不灵异,selected 可能是空值。对空值访问就是无法读取地址 0 的错误。

你可以参考下属代码,看看能不能用(来源):

[Delphi] 纯文本查看 复制代码
function GetSelectedFiles(ShellListView : TShellListView) : TStringList;
var
  Index : Integer;
begin
  Result:=TStringList.Create;
  if not ShellListView.MultiSelect then
    Result.Add(ShellListView.SelectedFolder.PathName)
  else
  for Index := 0 to ShellListView.Items.Count-1 do
    if ShellListView.Items[Index].Selected AND (not ShellListView.Folders[Index].IsFolder) then
      Result.Add(ShellListView.Folders[Index].PathName);
end;


 楼主| 冥界3大法王 发表于 2024-3-6 20:57
爱飞的猫 发表于 2024-3-6 20:19
不灵异,selected 可能是空值。对空值访问就是无法读取地址 0 的错误。

你可以参考下属代码,看看能不 ...

我这么修改的:

function GetSelectedFiles(ShellListView: TsShellListView): TStringList;
var
  Index: Integer;
begin
  Result := TStringList.Create;
  if not ShellListView.MultiSelect then
    Result.Add(ShellListView.SelectedFolder.PathName)
  else
    for Index := 0 to ShellListView.Items.Count - 1 do
      if ShellListView.Items[Index].Selected and (not ShellListView.Folders[Index].IsFolder) then
        Result.Add(ShellListView.Folders[Index].PathName);
end;

procedure TMainForm.sShellListView1DblClick(Sender: TObject);
begin
  GetSelectedFiles(sShellListView1);
  ShowMessage('11111111111111111111111');

  if not sShellListView1.MultiSelect then
  begin
    if POS('.rvf', sShellListView1.Selected.Caption) > 0 then
    begin
      try
        RichViewEdit2.LoadRVF(sShellListView1.SelectedFolder.PathName);
        RichViewEdit2.Format;
      finally
        ShowMessage(sShellListView1.Selected.Caption + #13#10 + '请按回车键打开文件夹!');
      end;
    end;
  end;
//  RunError(200);
end;
还异常,并不能得到弹框1111111111

点评

方便整个最小重现的代码项目吗(整个只有 ShellListView 控件的窗口)?另外还需要你使用的 IDE 名称/版本方便我本地测试… 如果可以最好是直接编译到 EXE 的窗口而不是 DLL…  详情 回复 发表于 2024-3-6 21:05
爱飞的猫 发表于 2024-3-6 21:05
冥界3大法王 发表于 2024-3-6 20:57
我这么修改的:

function GetSelectedFiles(ShellListView: TsShellListView): TStringList;

方便整个最小重现的代码项目吗(整个只有 ShellListView 控件的窗口)?另外还需要你使用的 IDE 名称/版本方便我本地测试…

如果可以最好是直接编译到 EXE 的窗口而不是 DLL…
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 20:15

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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