DLL命令表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
.版本 2 .DLL命令 GetWindowThreadProcessId___, 整數型, "user32.dll", "GetWindowThreadProcessId" .參數 hwnd, 整數型 .參數 lpdwProcessId, 整數型, 傳址 .DLL命令 OpenProcess___, 整數型, "kernel32.dll", "OpenProcess" .參數 dwDesiredAccess, 整數型 .參數 bInheritHandle, 邏輯型 .參數 dwProcessId, 整數型 .DLL命令 VirtualAllocEx___, 整數型, "kernel32.dll", "VirtualAllocEx" .參數 hProcess, 整數型 .參數 lpAddress, 整數型 .參數 dwSize, 整數型 .參數 flAllocationType, 整數型 .參數 flProtect, 整數型 .DLL命令 SendMessageA_整數型___, 整數型, , "SendMessageA" .參數 hwnd, 整數型 .參數 msg, 整數型 .參數 wparam, 整數型 .參數 lparam, 整數型 .DLL命令 ReadProcessMemory_TBBUTTON32___, 整數型, , "ReadProcessMemory" .參數 hProcess, 整數型 .參數 lpBaseAddress, 整數型 .參數 lpBuffer, TBBUTTON32, 傳址 .參數 nSize, 整數型 .參數 lpNumberOfBytesWritten, 整數型 .DLL命令 ReadProcessMemory_TBBUTTON64___, 整數型, , "ReadProcessMemory" .參數 hProcess, 整數型 .參數 lpBaseAddress, 整數型 .參數 lpBuffer, TBBUTTON64, 傳址 .參數 nSize, 整數型 .參數 lpNumberOfBytesWritten, 整數型 .DLL命令 ReadProcessMemory_字節集___, 整數型, , "ReadProcessMemory" .參數 hProcess, 整數型 .參數 lpBaseAddress, 整數型 .參數 lpBuffer, 字節集, 傳址 .參數 nSize, 整數型 .參數 lpNumberOfBytesWritten, 整數型 .DLL命令 IsWow64Process___, 整數型, "kernel32", "IsWow64Process" .參數 hProcess, 整數型 .參數 Wow64Process, 整數型, 傳址 .DLL命令 GetCurrentProcess___, 整數型, , "GetCurrentProcess" .DLL命令 ReadProcessMemory_TRAYDATA32___, 整數型, , "ReadProcessMemory" .參數 hProcess, 整數型 .參數 lpBaseAddress, 整數型 .參數 lpBuffer, TRAYDATA32, 傳址 .參數 nSize, 整數型 .參數 lpNumberOfBytesWritten, 整數型 .DLL命令 ReadProcessMemory_TRAYDATA64___, 整數型, , "ReadProcessMemory" .參數 hProcess, 整數型 .參數 lpBaseAddress, 整數型 .參數 lpBuffer, TRAYDATA64, 傳址 .參數 nSize, 整數型 .參數 lpNumberOfBytesWritten, 整數型 .DLL命令 VirtualFreeEx___, 邏輯型, , "VirtualFreeEx" .參數 hProcess, 整數型 .參數 lpAddress, 整數型 .參數 dwSize, 整數型 .參數 flAllocationType, 整數型 .DLL命令 CloseHandle___, 整數型, , "CloseHandle" .參數 hwnd, 整數型 .DLL命令 WideCharToMultiByte___, 整數型, , "WideCharToMultiByte" .參數 CodePage, 整數型 .參數 dwFlags, 整數型 .參數 lpWideCharStr, 字節集 .參數 cchWideChar, 整數型 .參數 lpMultiByteStr, 文本型, 傳址 .參數 cbMultiByte, 整數型 .參數 lpDefaultChar, 文本型 .參數 lpUsedDefaultChar, 邏輯型 .DLL命令 FindWindow___, 整數型, "user32.dll", "FindWindowA" .參數 窗口類名, 文本型 .參數 窗口文本, 文本型 .DLL命令 FindWindowExA___, 整數型, "user32", "FindWindowExA" .參數 hwnd1, 整數型 .參數 hwnd2, 整數型 .參數 class, 文本型 .參數 title, 文本型 .DLL命令 GetWindowRect___, 邏輯型, , "GetWindowRect" .參數 hwnd, 整數型 .參數 RECT, RECTData, 傳址 .DLL命令 ClientToScreen___, 整數型, "user32.dll", "ClientToScreen", , 取窗口位置 .參數 hwnd, 整數型 .參數 lpPoint, int .DLL命令 SetCursorPos___, , "user32.dll", "SetCursorPos", , 置鼠標位置 .參數 x, 整數型 .參數 y, 整數型 .DLL命令 PostMessageA_整數型___, , , "PostMessageA" .參數 hwnd, 整數型 .參數 消息號, 整數型 .參數 參數1, 整數型 .參數 參數2, 整數型 .DLL命令 EnumProcessModules___, 邏輯型, "psapi.dll", "EnumProcessModules", , 窗口_句柄取文件路徑 .參數 hProcess, 整數型 .參數 lphModule, 整數型, 傳址 .參數 cb, 整數型 .參數 lpcbNeeded, 整數型, 傳址 .DLL命令 GetModuleFileNameExA___, 整數型, "Psapi.dll", "GetModuleFileNameExA", , _進程取全路徑名 .參數 hProcess, 整數型 .參數 hModule, 整數型, , 0 .參數 lpFilename, 文本型, , 1000 .參數 nSize, 整數型, , 1000 .DLL命令 CreateThread___, 整數型, , "CreateThread", , 啟動線程; 成功返回線程句柄,返回0=失敗 .參數 lpThreadAttributes, 整數型 .參數 dwStackSize, 整數型 .參數 lpStartAddress, 子程序指針, , 線程執行函數 .參數 lpParameter, 整數型, , 傳入線程參數 .參數 dwCreationFlags, 整數型 .參數 lpThreadId, 整數型, 傳址, 返回線程ID .DLL命令 MoveWindow___, 邏輯型, "user32.dll", "MoveWindow" .參數 hwnd, 整數型 .參數 左側位置, 整數型 .參數 頂部位置, 整數型 .參數 新寬度, 整數型 .參數 新高度, 整數型 .參數 是否重畫, 邏輯型 |
自定義數據類型表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
.版本 2 .數據類型 TBBUTTON32, , 20 .成員 iBitmap, 整數型 .成員 idCommand, 整數型 .成員 fsState, 字節型 .成員 fsStyle, 字節型 .成員 bReserved, 字節型, , "2", win64[6]win32[2] .成員 dwData, 整數型 .成員 iString, 整數型 .數據類型 TBBUTTON64, , 24 .成員 iBitmap, 整數型 .成員 idCommand, 整數型 .成員 fsState, 字節型 .成員 fsStyle, 字節型 .成員 bReserved, 字節型, , "6", win64[6]win32[2] .成員 dwData, 整數型 .成員 iString, 整數型 .數據類型 TRAYDATA32 .成員 hwnd, 整數型 .成員 uID, 整數型 .成員 uCallbackMessage, 整數型 .成員 Reserved1, 整數型, , "2" .成員 hIcon, 整數型 .成員 Reserved2, 整數型, , "3" .成員 ExePath, 字節型, , "255" .數據類型 TRAYDATA64 .成員 hwnd, 整數型 .成員 uID, 整數型 .成員 uCallbackMessage, 整數型 .成員 Reserved1, 整數型, , "3" .成員 hIcon, 整數型 .成員 Reserved2, 整數型, , "5" .成員 ExePath, 字節型, , "255" .數據類型 RECTData .成員 x1, 整數型 .成員 y1, 整數型 .成員 x2, 整數型 .成員 y2, 整數型 .數據類型 int .成員 x .成員 y |
圖標監控
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
|
.版本 2 .程序集 程序集1 .子程序 _啟動子程序, 整數型, , 請在本子程序中放置易模塊初始化代碼 載入 (窗口1, , 真) _臨時子程序 () ' 在初始化代碼執行完畢后調用測試代碼 返回 (0) .子程序 _臨時子程序 ' 本名稱子程序用作測試程序用,僅在開發及調試環境中有效,編譯發布程序前將被系統自動清空,請將所有用作測試的臨時代碼放在本子程序中。 注意不要修改本子程序的名稱、參數及返回值類型。 .子程序 檢測系統托盤, 邏輯型, 公開 .參數 _hToolbar, 整數型 .參數 _hwnd, 整數型, 參考 .局部變量 Pid .局部變量 hProcess .局部變量 i .局部變量 lpButton .局部變量 TButton32, TBBUTTON32 .局部變量 TButton64, TBBUTTON64 .局部變量 dwData, 整數型 .局部變量 idCommand, 整數型 .局部變量 TrayData32, TRAYDATA32 .局部變量 TrayData64, TRAYDATA64 .局部變量 hwnd, 整數型 .局部變量 hIcon, 整數型 .局部變量 ExePath, 文本型 .局部變量 szTips, 字節集 .局部變量 int, int .局部變量 value, 邏輯型 .局部變量 b, 整數型 value = 假 GetWindowThreadProcessId___ (_hToolbar, Pid) hProcess = OpenProcess___ (1082, 假, Pid) .如果真 (hProcess > 0) lpButton = VirtualAllocEx___ (hProcess, 0, 24, 4096, 64) .計次循環首 (SendMessageA_整數型___ (_hToolbar, 1048, 0, 0), i) SendMessageA_整數型___ (_hToolbar, 1047, i - 1, lpButton) .判斷開始 (Is64 () = 假) ReadProcessMemory_TBBUTTON32___ (hProcess, lpButton, TButton32, 20, 0) dwData = TButton32.dwData idCommand = TButton32.idCommand .默認 ReadProcessMemory_TBBUTTON64___ (hProcess, lpButton, TButton64, 24, 0) dwData = TButton64.dwData idCommand = TButton64.idCommand .判斷結束 szTips = 取空白字節集 (100) .判斷開始 (SendMessageA_整數型___ (_hToolbar, 1069, idCommand, lpButton) = -1) szTips = { } .默認 ReadProcessMemory_字節集___ (hProcess, lpButton, szTips, 100, 0) .判斷結束 .判斷開始 (Is64 () = 假) ReadProcessMemory_TRAYDATA32___ (hProcess, dwData, TrayData32, 300, 0) hwnd = TrayData32.hwnd hIcon = TrayData32.hIcon ExePath = W2A (到字節集 (TrayData32.ExePath)) .默認 ReadProcessMemory_TRAYDATA64___ (hProcess, dwData, TrayData64, 288, 0) hwnd = TrayData64.hwnd hIcon = TrayData64.hIcon ExePath = W2A (到字節集 (TrayData64.ExePath)) .判斷結束 .如果真 (ExePath = “”) ExePath = GetProcessPath (hwnd) .如果真結束 .如果真 (i = 1) .如果真 (取文本左邊 (到文本 (szTips), 7) = “解決 PC”) b = 1 .如果真結束 .如果真結束 .如果真 (尋找文本 (ExePath, “Bin\QQ.exe”, , 假) > 0) ' 當前圖標是QQ .如果真 (到文本 (szTips) = “”) ' QQ圖標在閃 int = 取圖標坐標 (_hToolbar, i - b) log (到文本 (i - b)) ' LeftClick (_hToolbar, int.x, int.y) LeftDoubleClick (_hToolbar, int.x, int.y) _hwnd = hwnd value = 真 跳出循環 () .如果真結束 .如果真結束 .計次循環尾 () VirtualFreeEx___ (hProcess, lpButton, 24, 65536) CloseHandle___ (hProcess) .如果真結束 返回 (value) .子程序 GetProcessPath, 文本型 .參數 hwnd .局部變量 局_進程ID .局部變量 局_所需內存 .局部變量 局_進程句柄 .局部變量 局_模塊數組, , , "255" .局部變量 局_模塊路徑, 文本型 .局部變量 局_返回路徑, 文本型 GetWindowThreadProcessId___ (hwnd, 局_進程ID) .如果真 (局_進程ID > 0) 局_進程句柄 = OpenProcess___ (位或 (1024, 16), 假, 局_進程ID) .如果真 (局_進程句柄 > 0) .如果真 (EnumProcessModules___ (局_進程句柄, 局_模塊數組 [1], 256, 局_所需內存)) 局_模塊路徑 = 取空白文本 (512) GetModuleFileNameExA___ (局_進程句柄, 局_模塊數組 [1], 局_模塊路徑, 256) .如果 (尋找文本 (局_模塊路徑, “\??\”, , 假) ≠ -1) 局_返回路徑 = 子文本替換 (局_模塊路徑, “\??\”, “”, , , 真) .否則 局_返回路徑 = 局_模塊路徑 .如果結束 處理事件 () .如果真結束 CloseHandle___ (局_進程句柄) .如果真結束 處理事件 () .如果真結束 返回 (局_返回路徑) .子程序 取圖標坐標, int, , 返回對應的窗口坐標 .參數 hwnd, 整數型 .參數 index, 整數型 .局部變量 r, RECTData .局部變量 z1, int .局部變量 z2, int .局部變量 w1, 整數型, , , 圖標寬度 .局部變量 h1, 整數型, , , 圖標高度 .局部變量 w2, 整數型 .局部變量 h2, 整數型 .局部變量 num, 整數型 .局部變量 value, 整數型 .如果真 (GetWindowRect___ (hwnd, r)) .如果 (是否已創建 (窗口1)) value = 到整數 (窗口1.選擇框1.選中) .否則 value = 1 .如果結束 num = SendMessageA_整數型___ (hwnd, 1048, 0, 0) - value w1 = r.x2 - r.x1 h1 = r.y2 - r.y1 w2 = w1 ÷ num - value h2 = h1 ÷ 2 - 選擇 (value = 0, 0, 2) z1.x = w2 × index - w2 ÷ 2 + value z1.y = h1 ÷ 2 - 選擇 (value = 0, 0, 2) .如果真結束 返回 (z1) .子程序 取托盤句柄, 整數型, 公開 .局部變量 hShellTray .局部變量 TrayWnd hShellTray = FindWindow___ (“Shell_TrayWnd”, “”) .如果真 (hShellTray > 0) hShellTray = FindWindowExA___ (hShellTray, 0, “TrayNotifyWnd”, 字符 (0)) .如果真 (hShellTray > 0) hShellTray = FindWindowExA___ (hShellTray, 0, “SysPager”, 字符 (0)) .如果真 (hShellTray > 0) TrayWnd = FindWindowExA___ (hShellTray, 0, “ToolbarWindow32”, 字符 (0)) .如果真結束 .如果真結束 .如果真結束 返回 (TrayWnd) .子程序 Is64, 邏輯型 .局部變量 IsWow64Process .如果真 (IsWow64Process___ (GetCurrentProcess___ (), IsWow64Process) ≠ 0 且 IsWow64Process ≠ 0) 返回 (真) .如果真結束 返回 (假) .子程序 W2A, 文本型 .參數 CharStr, 字節集 .局部變量 len, 整數型 .局部變量 Returned, 文本型 len = WideCharToMultiByte___ (1, 0, CharStr, -1, 字符 (0), 0, 字符 (0), 假) Returned = 取空白文本 (len) WideCharToMultiByte___ (1, 0, CharStr, -1, Returned, 取文本長度 (Returned), 字符 (0), 假) 返回 (Returned) |
QQ新消息監聽
此功能需要加載精易模塊5.6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
.版本 2 .支持庫 spec .程序集 窗口程序集_窗口1 .程序集變量 _hwnd, 整數型 .程序集變量 _檢測, 邏輯型 .子程序 _窗口1_創建完畢 _hwnd = 取托盤句柄 () .子程序 _檢測按鈕_被單擊 .局部變量 hwnd, 整數型 檢測系統托盤 (_hwnd, hwnd) .子程序 _移動按鈕_被單擊 .局部變量 z, int z = 取圖標坐標 (_hwnd, 到整數 (編輯框1.內容)) MoveTo (_hwnd, z.x, z.y) .子程序 log .參數 text, 文本型 .局部變量 time, 文本型 time = 到文本 (取現行時間 ()) time = 子文本替換 (time, “年”, “-”, , , 真) time = 子文本替換 (time, “月”, “-”, , , 真) time = 子文本替換 (time, “日”, “ ”, , , 真) time = 子文本替換 (time, “時”, “:”, , , 真) time = 子文本替換 (time, “分”, “:”, , , 真) time = 子文本替換 (time, “秒”, “”, , , 真) 監聽編輯框.加入文本 (time + “ ” + text + #換行符) .子程序 _開始按鈕_被單擊 .如果真 (_檢測) 返回 () .如果真結束 _檢測 = 真 log (“開始檢測”) CloseHandle___ (CreateThread___ (0, 0, &遞歸檢查, 0, 0, 0)) .子程序 _停止按鈕_被單擊 _檢測 = 假 .子程序 遞歸檢查 .局部變量 value, 邏輯型 .局部變量 hwnd, 整數型 .局部變量 PID, 整數型 .如果真 (_檢測) value = 檢測系統托盤 (_hwnd, hwnd) .如果真 (value) GetWindowThreadProcessId___ (hwnd, PID) 調試輸出 (hwnd, PID) log (“收到新消息”) 處理事件 () 延時 (1000) 處理事件 () 子_執行模擬 (PID) 處理事件 () .如果真結束 處理事件 () 延時 (選擇 (value, 200, 1 × 1000)) 處理事件 () CloseHandle___ (CreateThread___ (0, 0, &遞歸檢查, 0, 0, 0)) 返回 () .如果真結束 log (“停止檢測”) .子程序 子_執行模擬 .參數 Pid, 整數型 .局部變量 nun, 整數型 .局部變量 窗口, 精易_窗口信息, , "0" .局部變量 i, 整數型 .局部變量 矩形, RECTData .局部變量 hwnds, 整數型 .局部變量 msg, 文本型 nun = 窗口_枚舉 (窗口) .計次循環首 (nun, i) .如果真 (窗口 [i].窗口類名 = “TXGuiFoundation” 且 窗口 [i].進程ID = Pid) ' 判斷打開的窗口是不是之前點擊的進程 .判斷開始 (窗口 [i].窗口標題 = “”) .判斷 (窗口 [i].窗口標題 = “TXMenuWindow”) .判斷 (窗口 [i].窗口標題 = “QQ”) .判斷 (窗口 [i].窗口標題 = “驗證消息”) log (“驗證消息”) 延時 (3500) ' 這里需要延時才能顯示出來 LeftClick (窗口 [i].窗口句柄, 450, 130) ' 好友請求 LeftClick (窗口 [i].窗口句柄, 500, 120) ' 群請求 延時 (100) LeftClick (FindWindow___ (“TXGuiFoundation”, “添加”), 218, 150) ' 同意 延時 (100) PostMessageA_整數型___ (窗口 [i].窗口句柄, 16, 0, 0) 返回 () .默認 GetWindowRect___ (窗口 [i].窗口句柄, 矩形) .如果真 (矩形.x2 ≠ 500 或 矩形.y2 ≠ 500) MoveWindow___ (窗口 [i].窗口句柄, 10, 10, 500, 500, 真) 延時 (100) .如果真結束 LeftClick (窗口 [i].窗口句柄, 380, 65) 延時 (100) hwnds = FindWindow___ (“TXGuiFoundation”, “TXMenuWindow”) .如果真 (hwnds > 0) GetWindowRect___ (hwnds, 矩形) .如果真 (矩形.x2 - 矩形.x1 = 165 且 矩形.y2 - 矩形.y1 = 198) log (“群消息”) PostMessageA_整數型___ (窗口 [i].窗口句柄, 16, 0, 0) 返回 () .如果真結束 .如果真結束 LeftClick (窗口 [i].窗口句柄, 225, 65) 延時 (100) hwnds = FindWindowExA___ (0, 0, “TXGuiFoundation”, “TXMenuWindow”) .如果真 (hwnds > 0) GetWindowRect___ (hwnds, 矩形) .判斷開始 (矩形.x2 - 矩形.x1 = 129 且 矩形.y2 - 矩形.y1 = 80) log (“臨時會話消息”) PostMessageA_整數型___ (窗口 [i].窗口句柄, 16, 0, 0) 返回 () .判斷 (矩形.x2 - 矩形.x1 = 165 且 矩形.y2 - 矩形.y1 = 84) log (“好友消息”) LeftClick (窗口 [i].窗口句柄, 220, 420) 延時 (20) msg = “http://www.hibbba.com/ 貝貝吧” 文本_投遞 (窗口 [i].窗口句柄, msg) 延時 (20) LeftClick (窗口 [i].窗口句柄, 430, 490) 延時 (100) PostMessageA_整數型___ (窗口 [i].窗口句柄, 16, 0, 0) 延時 (100) LeftClick (FindWindow___ (“TXGuiFoundation”, “提示”), 225, 140) 返回 () .判斷 (矩形.x2 - 矩形.x1 = 153 且 矩形.y2 - 矩形.y1 = 80) log (“討論組消息”) LeftClick (窗口 [i].窗口句柄, 266, 84) 延時 (100) LeftClick (FindWindow___ (“TXGuiFoundation”, “提示”), 225, 140) 延時 (200) .如果真 (FindWindow___ (“TXGuiFoundation”, “提示”) > 0) log (“執行退出討論組”) LeftClick (FindWindow___ (“TXGuiFoundation”, “提示”), 296, 138) .如果真結束 返回 () .默認 .判斷結束 .如果真結束 .判斷結束 .如果真結束 .計次循環尾 () .子程序 MoveTo .參數 hwnd .參數 x .參數 y .局部變量 int, int ClientToScreen___ (hwnd, int) SetCursorPos___ (int.x + x, int.y + y) ' 對應屏幕的坐標 .子程序 LeftClick .參數 hwnd .參數 x .參數 y .局部變量 value, 整數型 value = x + y × 65536 PostMessageA_整數型___ (hwnd, 512, 2, value) PostMessageA_整數型___ (hwnd, 513, 1, value) PostMessageA_整數型___ (hwnd, 514, 0, value) .子程序 LeftDoubleClick .參數 hwnd .參數 x .參數 y .局部變量 value, 整數型 value = x + y × 65536 PostMessageA_整數型___ (hwnd, 512, 2, value) PostMessageA_整數型___ (hwnd, 513, 1, value) PostMessageA_整數型___ (hwnd, 514, 0, value) PostMessageA_整數型___ (hwnd, 515, 0, value) .子程序 _窗口1_將被銷毀 _停止按鈕_被單擊 () |
運行結果:
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接