Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.10.10;
Скачать: CL | DM;

Вниз

Использование библиотеки AutoIt   Найти похожие ветки 

 
worldmen   (2010-07-18 20:09) [0]

Кто-нибудь использовал библиотеку AutoIt (http://www.script-coding.info/AutiItX.html)
Хотел использовать некоторые процедуры:
MouseMove - Перемещает указатель мыши
PixelGetColor - Возвращает цвет пикселя в координатах x, y.
Но при написании кода возникают ошибки:"Too many actual parameters"
  procedure MouseMove;  external "AutoItX3.dll";

implementation

procedure My;
begin
 MouseMove(500,100,50);
End;


ПС: пробовал в AutoIt писать - работает отлично, но мне надо на Delphi.


 
QAZ   (2010-07-18 21:15) [1]

не найти в гугле как двигать курсор-это надо уметь


 
SD Software   (2010-07-18 21:16) [2]


> Возможности AutoItX3
>
> Блокировка/разрешение ввода пользователя
> Открытие/закрытие лотка CD-ROM.
> Запись/чтение текста из буфера обмена
> ...


А средствами Delphi ни как?


 
worldmen   (2010-07-18 22:35) [3]

Умею я средствами Delphi двигать курсор, нажимать правую и левую кнопку.
А я хочу подключить AutoItX3. У меня ща проблема при определении цвета пикселя - то работает, то ошибка -  " Access violation at address 00420EE4 in module ... Read of adress "
останавливается на строке
16:  Bmp.PixelFormat := pf16Bit;
При этом я эту процедуру перенес с др. своей проги и там она работала пол года без проблем и использовалась очень часто.

Определение цвета пикселя:

procedure TForm.PrintScreen(x,y,w,h: integer; var bmp :TBitmap; FBit :Word);
var
 DC: HDC;
Begin     // создаем копию области
 try
   case FBit of
      8:  Bmp.PixelFormat := pf8Bit;
     16:  Bmp.PixelFormat := pf16Bit;
     24:  Bmp.PixelFormat := pf24Bit;
   end;
   bmp.Width := w;
   bmp.Height:= h;
   DC := GetDC(0);
   StretchBlt(bmp.Canvas.Handle,0,0, w,h, DC,x,y, w,h, SRCCOPY);
   ReleaseDC(0, DC);
 except
   on E: Exception do
   begin
     Writeln(FLog,TimeToStr(Now)+" "+ E.Message+". Координаты точки: W="+IntToStr(w)+", h="+IntToStr(h)+", x="+IntToStr(x)+", y="+IntToStr(y));
   end;
 end;
End;

procedure .....
Var
 bmpDoc: TBitmap;
 R,G,B : Word;
begin
 bmpDoc := TBitmap.Create;
 PrintScreen(x, y, 1, 1, bmpDoc, 16);
   R := GetRValue(bmpDoc.Canvas.Pixels[0,0]);
   G := GetGValue(bmpDoc.Canvas.Pixels[0,0]);
   B := GetBValue(bmpDoc.Canvas.Pixels[0,0]);
...........
 bmpDoc.Free;
end;


 
Юрий Зотов ©   (2010-07-18 23:08) [4]

А просто GetPixel(DC, X, Y) вместо всего этого - не канает?


 
Юрий Зотов ©   (2010-07-18 23:12) [5]

> "Access violation at address 00420EE4 in module ... Read of adress "
> останавливается на строке
> 16:  Bmp.PixelFormat := pf16Bit;

Bmp кривое. Или еще не создано, или уже убито.

Но вместо того, чтобы найти и убрать ошибку, мы подключаем аж целую навороченную библиотеку. Ради какого-то несчастного цвета пикселя.


 
worldmen   (2010-07-19 14:54) [6]

> Ради какого-то несчастного цвета пикселя.
Там есть куча процедур которые я тоже использовал бы.

А вот такая процедура ничего не выводит:
procedure TForm1.BitBtn3Click(Sender: TObject);
var
 DC: HDC;
 Color: Cardinal;
 X ,Y  : word;
 R,G,B : Word;
begin
 x:= 100;
 y:= 100;

 DC := GetDC(0);
 Color := GetPixel(DC, X, Y);
 ReleaseDC(0, DC);

 R := GetRValue(Color);      
 G := GetGValue(Color);      
 B := GetBValue(Color);      

 Label5.Caption:="R= "+IntToStr(R);
 Label6.Caption:="G= "+IntToStr(G);
 Label7.Caption:="B= "+IntToStr(B);
End;

Переменные R,G,B вообще ничему не равны. Выводит просто

R=
G=
B=


 
RWolf ©   (2010-07-19 16:37) [7]


> Переменные R,G,B вообще ничему не равны.

Не бывает в дельфях такого. Лейблы чересчур узкие, наверно.


 
Юрий Зотов ©   (2010-07-19 17:51) [8]

Зачем выводить в Label? Поставьте брейкпойнт и посмотрите отладчиком. Дожно работать.

Да даже если и не работало бы - все равно ведь чему-то R, G, B равны? Пусть хоть любому мусору - но чему-то все равно равны. Значит, в любом случае хоть что-нибудь, но должно выводиться.

Только вместо нуля я бы использовал GetDesktopWindow. Кто их знает, этих мелкомягких...



Страницы: 1 вся ветка

Текущий архив: 2010.10.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.008 c
2-1278936046
Xmen
2010-07-12 16:00
2010.10.10
Как можно присоединить пару документов Word.


2-1279112941
DFT
2010-07-14 17:09
2010.10.10
вопрос по inherited


15-1278957018
Дмитрий С
2010-07-12 21:50
2010.10.10
Планировщик заданий как модуль apache


3-1246004813
kudatsky
2009-06-26 12:26
2010.10.10
Проблемма с функцией CAST()


2-1279176225
Шел мимо решил зайти
2010-07-15 10:43
2010.10.10
забрать файлик