Автокликер Clickermann :: Форум

Основной раздел => Прочее => Topic started by: Hito on May 18, 2018, 05:11:11 PM

Title: Можно ли как-то получить данные о файле, который лежит в папке?
Post by: Hito on May 18, 2018, 05:11:11 PM
Привет, ребят! Вопрос такой... Можно ли как-то с помощью кликермана программно получить параметры скрина, который лежит в папке? Например, длину X и Y.
Или вот хотя бы при поиске скрина на экране мы получаем $_return1 и $_return2 - координаты начала скрина. А конечные координаты как-то можно получить? Что-нибудь типа - $_return3 и $_return4...
Title: Re: Можно ли как-то получить данные о файле, который лежит в папке?
Post by: Oraven on May 18, 2018, 07:07:04 PM
Нет
Title: Re: Можно ли как-то получить данные о файле, который лежит в папке?
Post by: dramster on May 18, 2018, 07:22:27 PM
...ну вообщето в файле бмп вписаны данные о изображении, только вот прочитать с помощью кликера врядли получится.

вспомнил отсюда - http://crapware.aidf.org/forum/index.php?topic=2134.msg12755#msg12755 - там в коде создание заголовка

ширина картинки - с 16-го по 19-й байт
высота картинки - с 20-го по 23-й

к примеру, сделаем скрин размером 97х98 . 97 в ascii это "a", 98 - "b". откроем этот файл в блокноте, и видим его размеры :

(https://i.imgur.com/vNlKxsj.png)

"   a" - ширина
"   b" - высота

можно попробовать написать утилитку чемнибудь со стороны...
Title: Re: Можно ли как-то получить данные о файле, который лежит в папке?
Post by: Hito on May 18, 2018, 07:24:14 PM
Придется писать на delphi... :-[
Title: Re: Можно ли как-то получить данные о файле, который лежит в папке?
Post by: dramster on May 18, 2018, 07:28:13 PM
Придется писать на delphi... :-[
так там вроде и все готово - http://delphiru.ru/other/387-get-info-bitmap . можно подвязать через dll  ::). только вот чтобы передать библиотеке параметр имени файла, это придется как нибудь извернуться.
Title: Re: Можно ли как-то получить данные о файле, который лежит в папке?
Post by: Hito on May 18, 2018, 07:34:08 PM
можно подвязать через dll

Не хочу я с dll заморачиваться ради этого ) Все через image сделать можно )
Title: Re: Можно ли как-то получить данные о файле, который лежит в папке?
Post by: i0 on May 18, 2018, 08:47:07 PM
Quote
Придется писать на delphi...  :-[
а чем плох делфи кроме того, что старый? ну, можно и на C, он такой же примерно. из прошлого тысячелетия ;)
Title: Re: Можно ли как-то получить данные о файле, который лежит в папке?
Post by: dramster on May 18, 2018, 11:29:34 PM
Немного потренировал мозг, сделал через dll, узнал много нового. Вдруг кому пригодится  ::) .

Код для delphi:
Code: (clickermann) [Select]
uses
  SysUtils, Classes, IniFiles, Windows;
//------------------------------------------------------------------------------

function execute( _mas: pInteger; _size: Integer): Integer; export; stdcall;

var
   fileheader: TBitmapfileheader;
   infoheader: TBitmapinfoheader;
   FileStream: TFilestream;
   DllPath: array[0..MAX_PATH] of char;
   fini: TIniFile;
   Size: integer;
begin

   GetModuleFileName(hInstance, DllPath, MAX_PATH);

   fini:=TIniFile.Create(ExtractFilePath(DllPath)+'dll_info.ini');

   FileStream := TFileStream.Create( fini.ReadString('default','file_name',''), fmOpenRead);
   try
     FileStream.Read(fileheader, SizeOf(fileheader));
     FileStream.Read(infoheader, SizeOf(infoheader));
   finally
     FileStream.Free;
   end;

   Size := infoheader.biWidth Shl 16 + infoheader.biHeight;

   result := Size;

end;
//------------------------------------------------------------------------------

// список экспорта
exports execute;

begin
  // тело пусто
end.

Пример вызова в кликермане:
Code: (clickermann) [Select]
screenshotfix(10,10, 25,35, "pic.bmp") // 16 x 26

//передаем параметр имени и пути бмп-файла через ini
INIWRITE ("dll_info.ini", "file_name", "pic.bmp" )  // pic.bmp - путь относительно скрипта
waitms(100)

CALL ("bmp_size.dll")   

//разбиваем $_return1 на два слова
$width = int($_return1/65536)     //ширина
$hight = $_return1 - $width*65536   //высота

print($width, " x ", $hight)      //проверяем  в логе

halt

Параметр пути и имени бмп файла передавал через ini. На ум больше ничего не пришло.

bmp_size.dll во вложении.
Title: Re: Можно ли как-то получить данные о файле, который лежит в папке?
Post by: Axelenz on May 18, 2018, 11:37:23 PM
А почему бы не получить размеры картинки из свойств файла через Windows PowerShell ?

Как вариант, описано:
http://qaru.site/questions/1889193/get-the-detail-informations-from-a-png-file-in-powershell (http://qaru.site/questions/1889193/get-the-detail-informations-from-a-png-file-in-powershell)
Title: Re: Можно ли как-то получить данные о файле, который лежит в папке?
Post by: Hito on May 19, 2018, 10:35:50 AM
Немного потренировал мозг, сделал через dll, узнал много нового. Вдруг кому пригодится  ::) .

А я не стал моцк насиловать  ;D

Code: (clickermann) [Select]
procedure TForm1.Button1Click(Sender: TObject);
var
  fs: tsearchrec;
  StrList: TStringList;
  pict: TPicture;
  i: integer;
  IniFile: TIniFile;
begin
  i:=0;
  if FindFirst('*.bmp', faAnyFile, fs)=0 then
  begin
    StrList:=TStringList.Create;
    IniFile := TiniFile.Create(extractfilepath(paramstr(0))+(Edit1.Text+'.ini'));
    repeat
      Image1.Picture.LoadFromFile(fs.Name);
      StrList.Delimiter:= '.';
      StrList.DelimitedText:= fs.Name;
      IniFile.WriteInteger(StrList[0], 'shirina', Image1.Width-1);
      IniFile.WriteInteger(StrList[0], 'visota', Image1.Height-1);
      i:=i+1;
    until FindNext(fs)<>0;
    FindClose(fs);
    StrList.Free;
    IniFile.Free;
    label1.Caption := intToStr(i)+'   картинки';
  end;
end;
Title: Re: Можно ли как-то получить данные о файле, который лежит в папке?
Post by: dramster on October 27, 2018, 10:30:38 PM
А вот и решение через кликерман - http://crapware.aidf.org/forum/index.php?topic=3632.msg29147#msg29147