Author Topic: Можно ли как-то получить данные о файле, который лежит в папке?  (Read 4558 times)

0 Members and 1 Guest are viewing this topic.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Привет, ребят! Вопрос такой... Можно ли как-то с помощью кликермана программно получить параметры скрина, который лежит в папке? Например, длину X и Y.
Или вот хотя бы при поиске скрина на экране мы получаем $_return1 и $_return2 - координаты начала скрина. А конечные координаты как-то можно получить? Что-нибудь типа - $_return3 и $_return4...
« Last Edit: May 18, 2018, 05:30:41 PM by Hito »
Я не ду... Потому и не бу...

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
...ну вообщето в файле бмп вписаны данные о изображении, только вот прочитать с помощью кликера врядли получится.

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

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

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



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

можно попробовать написать утилитку чемнибудь со стороны...
« Last Edit: May 18, 2018, 07:25:01 PM by dramster »

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Придется писать на delphi... :-[
Я не ду... Потому и не бу...

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Придется писать на delphi... :-[
так там вроде и все готово - http://delphiru.ru/other/387-get-info-bitmap . можно подвязать через dll  ::). только вот чтобы передать библиотеке параметр имени файла, это придется как нибудь извернуться.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
можно подвязать через dll

Не хочу я с dll заморачиваться ради этого ) Все через image сделать можно )
Я не ду... Потому и не бу...

i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
Quote
Придется писать на delphi...  :-[
а чем плох делфи кроме того, что старый? ну, можно и на C, он такой же примерно. из прошлого тысячелетия ;)

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Немного потренировал мозг, сделал через 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 во вложении.

Axelenz

  • Освоившийся
  • **
  • Posts: 31
  • Парсинг сайтов, наполнение интернет-магазинов
    • View Profile
А почему бы не получить размеры картинки из свойств файла через Windows PowerShell ?

Как вариант, описано:
http://qaru.site/questions/1889193/get-the-detail-informations-from-a-png-file-in-powershell
"Можно бесконечно смотреть на три вещи: как течёт вода, как горит огонь и как Clickermann работает вместо тебя..."

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Немного потренировал мозг, сделал через 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;
« Last Edit: June 05, 2018, 02:54:52 PM by Hito »
Я не ду... Потому и не бу...

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile