易語言建立執行緒掛起執行緒恢復執行緒銷毀執行緒

2021-10-07 06:47:15 字數 2158 閱讀 7542

執行緒建立createthread,執行緒掛起suspendthread,執行緒恢復resumethread,執行緒銷毀terminatethread,都是kernel32的命令,我們自己封裝這些執行緒的命令,就是便於我們理解他們的工作機制。

api原始碼:

.版本 2

.dll命令 恢復執行緒, 整數型, "kernel32", "resumethread", , 恢復執行緒

.引數 hthread, 整數型, , 執行緒的控制代碼

.dll命令 銷毀執行緒, 整數型, "kernel32", "terminatethread", , 銷毀執行緒

.引數 hthread, 整數型, , 執行緒的控制代碼

.引數 dwexitcode, 整數型, , 退出碼0

.dll命令 建立執行緒, 整數型, "kernel32", "createthread", , 建立執行緒

.引數 lpthreadattributes, 整數型, , 第乙個引數表示執行緒核心物件的安全屬性,一般傳入null表示使用預設設定。0

.引數 dwstacksize, 整數型, , 第二個引數表示執行緒棧空間大小。傳入0表示使用預設大小(1mb)。0

.引數 子程式指標, 子程式指標, , 第三個引數表示新執行緒所執行的執行緒函式位址,多個執行緒可以使用同乙個函式位址。

.引數 lpparameter, 整數型, , 第四個引數是傳給執行緒函式的引數。0

.引數 dwcreationflags, 整數型, , 第五個引數指定額外的標誌來控制線程的建立,為0表示執行緒建立之後立即就可以進行排程,如果為create_suspended則表示執行緒建立後暫停執行,這樣它就無法排程,直到呼叫resumethread()。0

.引數 執行緒id, 整數型, , 第六個引數將返回執行緒的id號,傳入null表示不需要返回該執行緒id號。

.dll命令 掛起執行緒, 整數型, "kernel32", "suspendthread", , 掛起執行緒

.引數 hthread, 整數型, , 執行緒的控制代碼

易語言呼叫原始碼:

.版本 2

.支援庫 ethread

.支援庫 spec

.程式集 視窗程式集_啟動視窗

.程式集變數 許可證1, 整數型

.程式集變數 許可證2, 整數型

.程式集變數 執行緒控制代碼1, 整數型

.程式集變數 執行緒控制代碼2, 整數型

.子程式 _按鈕_執行緒1_被單擊

許可證1 = 建立進入許可證 ()

啟動執行緒 (&子_多執行緒主程式, 許可證1, 執行緒控制代碼1)

.子程式 _按鈕_執行緒2_被單擊

許可證2 = 建立進入許可證 ()

啟動執行緒 (&子_多執行緒主程式, 許可證2, 執行緒控制代碼2)

.子程式 子_多執行緒主程式

.引數 許可證, 整數型

.區域性變數 i, 整數型

.計次迴圈首 (1000, i)

進入許可區 (許可證)

.判斷開始 (許可證 = 許可證1)

編輯框1.加入文字 (到文字 (i) + 「我是執行緒1 |」 + #換行符)

.判斷 (許可證 = 許可證2)

編輯框1.加入文字 (「 #」 + 到文字 (i) + 「 我是執行緒2」 + #換行符)

.預設.判斷結束

延遲 (1000)

處理事件 ()

退出許可區 (許可證)

.計次迴圈尾 ()

刪除進入許可證 (許可證)

.子程式 _按鈕_掛起執行緒1_被單擊

掛起執行緒 (執行緒控制代碼1)

.子程式 _按鈕_掛起執行緒2_被單擊

掛起執行緒 (執行緒控制代碼2)

.子程式 _按鈕_恢復執行緒1_被單擊

恢復執行緒 (執行緒控制代碼1)

.子程式 _按鈕_恢復執行緒2_被單擊

恢復執行緒 (執行緒控制代碼2)

.子程式 _按鈕_關閉執行緒1_被單擊

銷毀執行緒 (執行緒控制代碼1, 0)

.子程式 _按鈕_關閉執行緒2_被單擊

銷毀執行緒 (執行緒控制代碼2, 0)

執行緒的掛起與恢復

執行緒的掛起與恢復 缺點 什麼時候呼叫?掛起後的資源會存在,會發生一些不可預知問題!xthread.h pragma once ifdef xplatform exports define xplatform api declspec dllexport else define xplatform ...

執行緒的掛起與恢復

建立完乙個執行緒並啟動之後,還可以掛起 恢復 休眠或終止它,本節主要對執行緒的掛起與恢復進行講解。執行緒的掛起與恢復分別可以通過呼叫thread類中的suspend方法和resume方法實現,下面對這兩個方法進行詳細介紹。1 suspend方法 該方法用來掛起執行緒,如果執行緒已掛起,則不起作用。語...

掛起執行緒注入

掛起執行緒後,獲得執行緒當前的上下背景文。將其中的eip設定為我們shellcode的位址,執行完畢後再返回原本的eip 提權獲得執行緒的id 可以通過程序id createtoolhelp32snapshot th32cs snapthread,0 te32.th32ownerprocessid ...