Автокликер Clickermann :: Форум
Основной раздел => Прочее => Topic started by: Hito on May 18, 2018, 05:11:11 PM
-
Привет, ребят! Вопрос такой... Можно ли как-то с помощью кликермана программно получить параметры скрина, который лежит в папке? Например, длину X и Y.
Или вот хотя бы при поиске скрина на экране мы получаем $_return1 и $_return2 - координаты начала скрина. А конечные координаты как-то можно получить? Что-нибудь типа - $_return3 и $_return4...
-
Нет
-
...ну вообщето в файле бмп вписаны данные о изображении, только вот прочитать с помощью кликера врядли получится.
вспомнил отсюда - 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" - высота
можно попробовать написать утилитку чемнибудь со стороны...
-
Придется писать на delphi... :-[
-
Придется писать на delphi... :-[
так там вроде и все готово - http://delphiru.ru/other/387-get-info-bitmap . можно подвязать через dll ::). только вот чтобы передать библиотеке параметр имени файла, это придется как нибудь извернуться.
-
можно подвязать через dll
Не хочу я с dll заморачиваться ради этого ) Все через image сделать можно )
-
Придется писать на delphi... :-[
а чем плох делфи кроме того, что старый? ну, можно и на C, он такой же примерно. из прошлого тысячелетия ;)
-
Немного потренировал мозг, сделал через dll, узнал много нового. Вдруг кому пригодится ::) .
Код для delphi:
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.
Пример вызова в кликермане:
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 во вложении.
-
А почему бы не получить размеры картинки из свойств файла через 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)
-
Немного потренировал мозг, сделал через dll, узнал много нового. Вдруг кому пригодится ::) .
А я не стал моцк насиловать ;D
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;
-
А вот и решение через кликерман - http://crapware.aidf.org/forum/index.php?topic=3632.msg29147#msg29147