2009-10-05 5 views
3

Эй, я использую D 1.041 with Tango 0.99.8 и задавался вопросом, как я буду перемещать мышь и имитировать нажатия клавиш и получать информацию с экрана, например цвет определенного пикселя на определенной координате. Я использую Windows.D 1.0 (Tango) Перемещение мыши; имитировать нажатия клавиш на клавиатуре и т. д.

Любая помощь была бы принята с благодарностью. Я хочу запрограммировать библиотеку на основе классов с функциональностью, похожей на AutoIt. Например:

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); 
    } 
} 

Этот код дает мне следующее сообщение об ошибке:

Error 42: Symbol Undefined [email protected] --- errorlevel 1

Любая помощь по этому вопросу? Я все еще использую version.

+1

Это не проблема, связанная с D. Попытайтесь найти решение на основе C; портирование должно быть простым. – FeepingCreature

+0

Не делайте это так быстро. Как вы можете видеть ниже, это специфичная для Tango проблема, поэтому она также D-специфична. –

ответ

2

Это ошибка в танго.

танго объявляет mouse_event как:

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

в то время как MSDN показывает, что она занимает 5 параметров, а не 4.

Для серьезного развития Win32 вы должны взглянуть на проект Windows API bindings.