Главная страница
    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.005 c
15-1278962388
Pavia
2010-07-12 23:19
2010.10.10
Winpcap


2-1279517915
linuxoid
2010-07-19 09:38
2010.10.10
помогите с потоком


6-1226681305
Netter
2008-11-14 19:48
2010.10.10
Скачивание файла


15-1278650437
12
2010-07-09 08:40
2010.10.10
про автоматические обновления.


6-1226168858
nes
2008-11-08 21:27
2010.10.10
Idhttp: время ответа при запросе





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский