2010年12月15日星期三

操作自動化(Mac)01: 控制滑鼠位置並按下滑鼠

這是操作自動化(Mac)第1篇教學
操作自動化(Mac)是一系列有關使用Mac的Xcode
製作可代人手按下滑鼠, 鍵盤等可以讓用戶節省時間的教學
此教學製作時使用Xcode 3.2.3




操作自動化(Mac)01: 控制滑鼠位置並按下滑鼠
以下只為參考方法
可能會有其他方法達到相同效果
(此教學所用的指令需求為Mac OS X v10.4或以上)

此教學會在開啟程式後移動滑鼠並按下滑鼠左鍵

首先定義一個Point

在 awakeFromNib 中定義一個名叫abc的CGPoint

CGPoint abc;

然後為abc定義數值, 即要按下滑鼠的位置

abc.x = 10;
abc.y = 10;
'以上2行定義abc為10, 10的位置 (0, 0 代表最左上角)
如果要abc是目前滑鼠位置, 則使用
CGEventRef mouseEvent = CGEventCreate(NULL);
abc = CGEventGetLocation(mouseEvent);
CFRelease(mouseEvent);


定義了位置, 現在是要移動和按下滑鼠了
CGEventRef mouseDownEv = CGEventCreateMouseEvent (NULL,kCGEventLeftMouseDown,abc,kCGMouseButtonLeft);
CGEventPost (kCGHIDEventTap, mouseDownEv);
CGEventRef mouseUpEv = CGEventCreateMouseEvent (NULL,kCGEventLeftMouseUp,abc,kCGMouseButtonLeft);
CGEventPost (kCGHIDEventTap, mouseUpEv );

以上4行指令
第1,3行是定義按下放開滑鼠的變數,kCGEventLeftMouseDown指按下滑鼠左鍵,kCGEventLeftMouseUp指放開滑鼠左鍵
其他按鈕的名稱請見Xcode說明文件中Quartz Event Services Reference中的Constants
第2,4行是對滑鼠執行的指令



這樣就完成了喔!

awakeFromNib 現在應該是這個樣子

-(void) awakeFromNib{
      CGPoint abc;
      abc.x = 10;
      abc.y = 10;
      CGEventRef mouseDownEv = CGEventCreateMouseEvent (NULL,kCGEventLeftMouseDown,abc,kCGMouseButtonLeft);
      CGEventPost (kCGHIDEventTap, mouseDownEv);
      CGEventRef mouseUpEv = CGEventCreateMouseEvent (NULL,kCGEventLeftMouseUp,abc,kCGMouseButtonLeft);
      CGEventPost (kCGHIDEventTap, mouseUpEv );
      
}

沒有留言:

發佈留言