D 1.0 (Tango) Sichqonchani siljitish; klaviatura bosishlarini simulyatsiya qilish va boshqalar

Hey, men D 1.041 va Tango 0.99.8 dan foydalanayapman. Men sichqonchani siljitish va klaviatura bosishlarini taqlid qilish va ekrandan ma'lumot olish, masalan, ma'lum bir koordinatadagi ma'lum bir pikselning rangi haqida qanday harakat qilardim. Men Windows dan foydalanayapman.

Har qanday yordam juda qadrlanadi. Men AutoIt-ga o'xshash funksionallik bilan sinfga asoslangan kutubxonani dasturlashni xohlayman. Masalan:

mouse.move(100, 200);
mouse.click(2); // 2 = Middle Mouse Click
keyboard.type('abc');

import tango.sys.win32.UserGdi;

class Mouse{
    alias SetCursorPos set_pos;
    alias GetCursorPos get_pos;
    void left_click(){
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0);
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0);
    }
    void right_click(){
        mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0);
        mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0);
    }
}

Ushbu kod menga quyidagi xatoni beradi:

42-xato: Belgilanmagan _mouse_event@16 --- xatolik darajasi 1

Bu borada yordam bormi? Men hali ham versiyadan foydalanmoqdaman.


person cryzed    schedule 05.10.2009    source manba
comment
Bu D uchun maxsus muammo emas. C asosidagi yechimni izlashga harakat qiling; portlash to'g'ridan-to'g'ri bo'lishi kerak.   -  person FeepingCreature    schedule 05.10.2009
comment
Iltimos, tez xulosa chiqarmang. Quyida ko'rib turganingizdek, bu Tangoga xos muammo, shuning uchun u ham D-ga xosdir.   -  person Vladimir Panteleev    schedule 09.10.2009


Javoblar (1)


Bu Tangodagi xato.

Tango mouse_eventni quyidagicha e'lon qiladi:

void mouse_event(DWORD, DWORD, DWORD, DWORD);

MSDN esa 5 ta parametr olishini ko'rsatadi, emas 4.

Win32-ni jiddiy ishlab chiqish uchun Windows API ulanishlari loyihasini ko'rib chiqing.

person Vladimir Panteleev    schedule 09.10.2009