Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.10.10;
Скачать: [xml.tar.bz2];

Вниз

Использование библиотеки 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.017 c
6-1222250421
Aiden
2008-09-24 14:00
2010.10.10
Проблема с передачей данных методом POST через TWebBrowser


4-1210238349
tytus
2008-05-08 13:19
2010.10.10
как прочитать текст с чужого ListView?


2-1279271042
azamatufa
2010-07-16 13:04
2010.10.10
Помогите написать (оформить) функцию


2-1279194682
Patrick
2010-07-15 15:51
2010.10.10
Макроподстановка.


15-1278321632
Ega23
2010-07-05 13:20
2010.10.10
И ещё раз по поводу ТЗ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский