psapi.h
使用 psapi.h 會比較麻煩,得到的資訊也比 tlhelp32.h 方式不會比較少,這個例子只是提供簡單的資訊出來而已。使用前需要先連 psapi.lib。由於它的函式引數都特別長,所以這裡會每個引數都一個段行,如果覺得原始碼看得很吃力可以上 MSDN 查詢相關資訊。
程式碼
// ==================================
// filename: ListProcess.cpp
// compiler: vs2008
// author : EdisonX (Edison.Shih.)
// ref : MSDN
//
// **** all rights reserve ****
// ==================================
#include <windows.h>
#include <psapi.h>
#include <stdio.h>
#pragma comment(lib, "psapi.lib")
edisonx 發表在 痞客邦 留言(0) 人氣(1,208)
列舉 process 可用 tlhelp32.h 與 psapi.h,這裡先說明 tlhelp32.h。
tlhelp32.h
基本上不管是要列舉 process 還是 module、thread,步驟都一樣
A. 先用 CreateToolhelp32SnapShot 取得快照
B. 設定相關 struct 大小
C. 使用 xxxxx32First 取得第一個 process( module、thread) 。
D. 使用 xxxxx32Next 取得下一個 process(module、thread)。
edisonx 發表在 痞客邦 留言(0) 人氣(1,053)
這幾天在摸程序的相關函式,本來想說寫二、三篇就結束,不過發現其實東西還蠻多的,所以先發個簡介出來,基本上所有的東西在 MSDN 上都找得到,只是要花時間去理解、去看而已。沒學過作業系統,查過網路上一些資料、翻一些書後,整理述敘如下(發現有誤也請更正):
1. program: 程式,一群程式碼集合,事實上它是死的,一直放在電腦的某個角落。
2. process: 行程,有些書籍又稱 job(工作),由 program 執行時所產生之個體。一個程式如果可以多次執行的話就有多個 process。然而每個 process 所佔用的記憶體空間並不相同;即使這二個 process 是由同一個 program 所產生,不過他們所佔用之 memory space 仍為不同。生死過程主要為新生(new)、就緒(ready)、執行(running)、等待(wating)、終結(terminated)。其中 ready、running、waiting 這三個階段可能不只經歷一次,有興趣詳情再查看作業系統相關資料。
3. thread: 執行緒,也是 CPU 基本之執行單元,同一 process 之每個 thread,可共享其程式碼、資料、檔案等系統資源。一個 process 有一個以上之 thread,若有二個以上的 thread 則稱為 multi-thread。由於系統內有多個 process 同時存在,但CPU一時間只能處理一個 process,為使執行效果自然,故交付某些 process 競爭特質去搶 CPU 使用權,具搶進 CPU 特性的就叫 thread 。
edisonx 發表在 痞客邦 留言(1) 人氣(781)
1. 刪除檔案
(1) C/C++ - remove / stdio.h
int remove ( const char * filename );
const char* filename = "D:\\Test.txt"
if (!remove(filename)) // success
else // fail.
edisonx 發表在 痞客邦 留言(0) 人氣(2,482)

1. 名稱定義
Dim $Arr[維度1][維度2][維度3]...[維度N]
在說明多維陣列時,先以上為例定義出二個名詞出來。
(1) 維度:以上為例,$Arr 陣列維度即為 N 維。故一維陣列為 Dim $Arr[維度1];二維陣列為 Dim $Arr[維度1][維度2];依此類推。
edisonx 發表在 痞客邦 留言(0) 人氣(4,716)
1. 陣列之宣告
陣列和一般變數不同,一般變數可以不經由宣告就可以使用,但陣列一定要先行宣告,宣告可用 Global、Local、Dim,如下所示
Dim $A[4] ; 宣告 $A 是 大小為 4 的一維陣列
Dim $B[3] = ["Test","Good","EdisonX"]
; 宣告 $B 是大小為 3 的一維陣列,並把 "Test","Good","EdisonX" 設給 $B
2. 使用陣列
edisonx 發表在 痞客邦 留言(0) 人氣(2,691)
1. ContinueLoop
和 C 語言的 Continue 相似,必須與 If-Else-Then 合用,當條件成立時,此次回圈不執行,直接執行下個回圈。以 1+3+5...+11 為例
Dim $i=0, $sum=0
For $i=1 To 11
If(Mod($i,2)=0) Then ; 除以2之餘數為0 時 (即偶數時) 跳過不做
ContinueLoop
EndIf
$sum+=$i
Next
MsgBox(0, "title", $sum)
2. ContinueCase
edisonx 發表在 痞客邦 留言(0) 人氣(2,644)

1. 善用內建函式庫
事實上 AutoIt 已提供了非常多的現有函式庫,要去調用時,必須知道那些現有函式是存在於哪些函式庫裡。而這些現有函式庫,在安裝時都已安裝於 C:\Program Files\AutoIt3\Include (筆者電腦之作業系統為 XP,AutoIt 版本為 3.3) 。而要調用這些現有的函式庫,可加上這麼一段敘述
#include <函式庫名>
以 Array.au3 為例,若要調用 C:\Program Files\AutoIt3\Include 裡面內附的 Array.au3,則這麼使用
edisonx 發表在 痞客邦 留言(0) 人氣(1,827)
1. 大小寫問題
AutoIt 對於大小寫並不敏感,所以 $Var 和 $var 及 $VAR 其實都是一樣的東西。
2. 變數命名
除了不能和內建函式撞名外,變數名必須以底線、數字、英文字母所組成。
edisonx 發表在 痞客邦 留言(0) 人氣(3,773)
和一般程式語言一樣, AutoIt 也可自定義函式。自定義函式寫法如下
Func 函式名稱(引數)
函式本體內容
(return something)
EndFunc
edisonx 發表在 痞客邦 留言(0) 人氣(2,236)