SHGetPathFromIDList (Delphi) - ложно-положительная проблема - PullRequest
0 голосов
/ 03 июля 2018

Я использую Kaspersky Internet Security 2018. Но когда я скомпилирую свое приложение Delphi с этими кодами, мое антивирусное приложение удалит скомпилированный exe:

function BrowseForFolder(var dpFolder: String; dpTitle: String): Boolean;
var
  dpBrowseInfo: TBrowseInfo;
  dpDisplayName: array[0..255] of Char;
  dpItemIDList: PItemIDList;
begin
  FillChar(dpBrowseInfo, sizeof(dpBrowseInfo), #0);
  with dpBrowseInfo do begin
    hwndOwner := Application.Handle;
    pszDisplayName := @dpDisplayName[0];
    lpszTitle := PChar(dpTitle);
    dpItemIDList := SHBrowseForFolder(dpBrowseInfo);
    ulFlags := BIF_RETURNONLYFSDIRS and BIF_VALIDATE;
  end;
if Assigned(dpItemIDList) then begin
  if SHGetPathFromIDList(dpItemIDList, dpDisplayName) then begin
    dpFolder := dpDisplayName;
    Result := True;
  end else begin
    Result := False;
  end;
end;
end;

Что мне нужно сделать, чтобы открыть меню «Просмотр папки», кроме добавления моего приложения в белый список?

1 Ответ

0 голосов
/ 04 июля 2018

Я перепробовал все типы диалогов «Просмотр папки» и понял, что мое антивирусное программное обеспечение допускает только Vcl.FileCtrl.TSelectDirExtOpt (также он ненавидит другие диалоги FileCtrl).

Итак, я сам исправил свою проблему следующим образом:

procedure TForm1.gözatDüğmesiClick(Sender: TObject);
  begin
    if not (menü4CB = '1') then begin
      if not (SelectDirectory('Kurulum programının yedekleneceği klasörü seçin', 
        GetSpecialFolderPathFromCSIDL($0011), adres, [sdNewFolder, sdNewUI], nil) = False) then begin
           adresÇubuğu.Text := adres;
      end else begin
      end;
    end;
end;

Благодарю Реми Лебо за заботу обо мне.

...