PIXNET Logo登入

Edison.X. Blog

跳到主文

YouLoveMe() ? LetItBe() : LetMeFree() ;

部落格全站分類:數位生活

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 1月 24 週一 201111:01
  • [A] AutoIt!! SetTimer 實做

處理函式這裡會花一點時間,如果累的話先去喝杯茶休息一下。
如果對於前面幾篇文章沒很了解,請先去看熟,看熟後接下來就沒什麼了,全都是一些步驟問題而已。
SetTimer 在上一篇有提到整個 API 流程 - (1) SetTimer 建立計數器 (2) 於 CALLBACK TimerProc 執行 (3) KillTimer 刪除計數器。這裡看到有 CALLBACK 函式,在 autoit 開發過程我們就是要先開發 CALLBACK TimerProc。
我們要做的例子是,在 label 上面,每 30ms 的時候把數字加1,加到100之後停下來。整個步驟如下
// ---------------------------------------------------------
// 0. 先把簡單的 GUI 建好
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(0) 人氣(1,983)

  • 個人分類:Auto-Dll
▲top
  • 1月 24 週一 201111:00
  • [A] AutoIt!! SetTimer 運作機制

SetTimer 在 Win32 程式設計是很常用到的一個技巧,但過程要一點觀念,所以這裡先說整個流程,一共會介紹三個 API,這裡先概述。
一開始先用 SetTimer 進行定時執行之動作,這裡包含了 "設定多久執行" 和 "執行什麼函式";
第二個是在 CALLBACK TimerProc 函式處理,這個函式有四個參數,其中最有用的參數是第三個 - idEvent,主要就是拿它來判斷是由哪個計時器發出需求。
第三個是 KillTimer 函式,由於 Timer 計時器可以不只一組 (詳細幾組倒是可以去查查),但計時器數量有限,所以每次用完之後,就要再用 KillTimer 去收回我們分配的計數器。
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(0) 人氣(2,063)

  • 個人分類:Auto-Dll
▲top
  • 1月 24 週一 201109:49
  • [A] AutoIt !! Dll CALLBACK Function

這篇文章有點長,步驟有點煩雜,覺得累的話請先喝杯水再來。
在 C/C++ 裡面,有些函式提供了很人性化的介面機制,叫 function pointer - 函式指標,只要在 MSDN 上原型裡面,參數看到是 PROC 結尾的,幾乎都是函式指標。只要是在 API 裡面出現的函式指標,那跟 struct 沒什麼二樣,有一定的函式規格,還要再去查這個函式指標的原型長怎樣。
我們以 EnumWindow 為例,這個 API 函式主要是在列舉目前 Windows 上的可見視窗,它的原型如下
BOOL WINAPI EnumWindows(
  __in  WNDENUMPROC lpEnumFunc,
  __in  LPARAM lParam
);
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(1) 人氣(1,905)

  • 個人分類:Auto-Dll
▲top
  • 1月 24 週一 201106:39
  • [A] AutoIt!! Dll 調用含指標結構體

Win32 API 裡面定義了許多結構體,像是為了表達座標,於是定義了一個結構體叫 POINT。假設我們要調用 Win32 API 的 GetCursorPos - 取得現在 mouse 座標的函式,先看一下函式原型
BOOL WINAPI GetCursorPos(
  __out  LPPOINT lpPoint
);
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(0) 人氣(826)

  • 個人分類:Auto-Dll
▲top
  • 1月 24 週一 201106:38
  • [A] AutoIt!! Dll HANDLE 調用

我們先看一下 GetWindowText 原型 (下面加過註解)
int WINAPI GetWindowText(
  __in   HWND hWnd,  // 視窗  handle
  __out  LPTSTR lpString, // 存字串的變數
  __in   int nMaxCount // 這個字串最多可以存幾個字
);

這裡有二個地方要注意,在 msdn 上看到參數有  __out 的地方,代表它是把結果存在那個變數裡面。也就是說,我在調用 GetWindowText 時要給它一個變數,執行完後,它會把結果存在該變數裡面。
第二個要注意的是,HWND hwnd 是要指定內容後才可以給它的東西,在這裡我們可以先調用 autoit 裡面的 WinGetHandle ,這樣就可以讓它成為輸入的東西。
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(2) 人氣(1,217)

  • 個人分類:Auto-Dll
▲top
  • 1月 24 週一 201106:35
  • [A] AutoIt !! Dll 結構

------------------------------------------------------------------
// 1. 結構體介紹

結構在 C/C++ 上面很常使用,Win32 API 上也定義了許多結構,但 AutoIt 卻必須使用 Dll 相關函式才可以去定義、設定與讀取。先聲明,AutoIt 在結構操作上並不非常方便 (但有特例),但如果想學好 AutoIt 調用 Dll,這個就一定要學。在繼續介紹 dll 相關函式時,要先講結構的概念。
如果班老師要紀錄一個學生的分數的話,他可能會紀錄這些東西 - 學生姓名、學生學號、國文分數、英文分數、數學分數,如果用 AutoIt 的話可能要寫成這樣
$Name = "EdisonX"  ; 最大長度為 20 之字串,姓名
$NO = "B0000001"   ; 最大長度為 20 之字串,學號
$CH = 90                  ; 整數,國文成績
$ENG = 80                ; 整數,英文成績
$Math = 100             ; 整數,數學成績
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(0) 人氣(1,055)

  • 個人分類:Auto-Dll
▲top
  • 1月 24 週一 201106:22
  • [A] AutoIt !! 結果存在參數之函數

關於 win32 API 裡面,有些參數是把結果存在裡面,這個我們之前有提到。現在介紹的是 GetCurrentDirectory 這個函式,它的原型如下
DWORD WINAPI GetCurrentDirectory(
  __in   DWORD nBufferLength, // 指定給多少長度存 「現在路徑」
  __out  LPTSTR lpBuffer // 調用後,「現在路徑」就存在這個變數裡面。
);

還記得之前說過的嗎?我們在調用 autoit 調用 DLL 的時候,記得用 $Result 去接它的結果,$Result[0] 是 GetCurrentDirectory 的傳回值,據 MSDN 表示,這個 API 是放在 kennel32.dll 裡面,傳回值就是「傳回字串的字串長度」;而 $Result[1] 就是第一個參數,也就是我們當初設給它的 nBufferLength;至於 $Result[2] 便是我們要的結果,也就是現在的路徑。範例碼如下所示
#cs
DWORD WINAPI GetCurrentDirectory(
  __in   DWORD nBufferLength,
  __out  LPTSTR lpBuffer
);
#ce
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(0) 人氣(890)

  • 個人分類:Auto-Dll
▲top
  • 1月 24 週一 201102:52
  • [A] AutoIt!! 第一個Dll (幼幼班)

基本上 AutoIt 要調用 dll ,就一定離不開 msdn 查 api ,但對沒程式經驗或只碰過 autoit 的人可能也看不懂,先跟各位說 msdn 的  網址 ,以後會常用到。我們先來看一個簡單的 SetCursorPos ,這個函式是用來設定 mouse 位置。
BOOL WINAPI SetCursorPos(
  __in  int X,
  __in  int Y
);

你在 MSDN 上說明這個函式的 頁面 往下拉,你會發現它是 user32.dll  裡面,這個很重要, autoit 要調用 win32 api 函式前一定要先知道它放在哪個 dll 裡面。這裡要開始解說了。
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(0) 人氣(3,123)

  • 個人分類:Auto-Dll
▲top
  • 1月 24 週一 201102:37
  • [A] AutoIt!! DLL 說明 (幼幼幼班)

windows 底下,就我所知道的 dll 大致上有下面這幾個,想要知道更詳細的可以參考  wiki 這裡
1. kernel32.dll
很重要。主要掌控系統,包含檔案系統、裝置管理、process 與 thread、錯誤管理,早期 16-bit windows,是 krn286.exe、krn386.exe,到 32bit 後就變 kerner32.dll
(繼續閱讀...)
文章標籤

edisonx 發表在 痞客邦 留言(0) 人氣(1,009)

  • 個人分類:Auto-Dll
▲top
1

個人資訊

edisonx
暱稱:
edisonx
分類:
數位生活
好友:
累積中
地區:

熱門文章

  • (4,979)多測資處理
  • (21,952)bitset 整理
  • (83,006)[C&++] 亂數基本使用
  • (444,447)[C] printf 引數說明
  • (39,455)[C] scanf 引數說明
  • (31,150)[W] 初學者的 windows.h
  • (49,828)VBA Procedure 簡述
  • (45,791)VBA 活頁簿(Workbooks)管理
  • (58,126)[浮點數] IEEE754 , C/C++ 浮點數誤差
  • (80,150)[C] 計時器整理

文章分類

toggle 開發手札 (2)
  • 未實作的想法 (4)
  • 心得筆記 (2)
toggle C/C++ (8)
  • C/C++ Note (52)
  • 亂數 (10)
  • Debug (9)
  • Hidden Features in C (6)
  • OO NOTE (0)
  • 面試題庫 (12)
  • C/C++ FAQ (4)
  • STL Note (3)
toggle 應用軟體/工具 (1)
  • Office (1)
toggle 數值分析 (9)
  • 非線性方程式求解 (10)
  • 矩陣運算 (7)
  • 深入質數 (5)
  • 浮點數 (9)
  • 複數 Complex (2)
  • 積分法 (2)
  • 多項式內差法 (2)
  • 常見關於數 (5)
  • math.h/cmath application (8)
toggle 程式之美 (1)
  • 遊戲之樂 (3)
toggle VB.Net (1)
  • VB.Net Note (1)
toggle 英文 (1)
  • 專題單字 (1)
toggle AutoIt!! (2)
  • AutoIt!! Note (13)
  • Auto-Dll (9)
toggle VBA (4)
  • VBA FAQ (5)
  • VBA Note (9)
  • VBA tec. (1)
  • VBA_Note2 (3)
toggle MFC (1)
  • MFC雜記 (4)
toggle Win32 (8)
  • Process (10)
  • Win32-Console (5)
  • 檔案系統 (1)
  • 音效 (1)
  • 隱喻外掛 (3)
  • System undoc. (0)
  • GDI (2)
  • 記憶體管理 (1)
toggle 環境與Script (4)
  • visual studio (6)
  • 批次檔batch (2)
  • 程式環境架構 (3)
  • Library (3)
toggle 數學整理 (2)
  • 常用公式 (1)
  • 有趣數學 (2)
toggle 演算法 (7)
  • Bit-Hacks (1)
  • AI (13)
  • 大數 (5)
  • 資料結構 (0)
  • 影像 (2)
  • 遞迴-recursive (2)
  • 回溯.列舉.遞迴 (2)
toggle 程設亂語 (1)
  • 胡言亂語 (10)
toggle SmallTalk (1)
  • SmallTalk (27)
  • 未分類文章 (1)

最新文章

  • 轉戰 python
  • [MFC] CArray 注意事項
  • 你真的很狠...
  • [開發手札] tool 整理 <NOTE>
  • [開發手札] vs dll 相容性
  • [開發手札] vc 效率問題
  • [開發手札] 修改 exe 裡面的 constant
  • [開發手札] 受不了 IDE 常當機問題...
  • [Job] Job Journal 130501
  • [面試] some tips

動態訂閱

文章精選

文章搜尋

誰來我家

參觀人氣

  • 本日人氣:
  • 累積人氣:

留言板