Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение количества потоков в моей программе, и получение к ним хендлов 
V
    Опции темы
586
Дата 18.5.2006, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



Как определить количество потоков в моей программе и получить к ним хендлы? 
PM   Вверх
rsm
Дата 21.5.2006, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Типа такого имеешь в виду?
Код

;goto make

.386    
.model flat,stdcall    
option casemap:none    

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib

.data    

    msg_cap1 db "Before starting two new threads...",0
    msg_cap2 db "With two new threads...",0
    msg_cap3 db "After terminating two threads...",0
    
    buff db 800h dup(0)
    
    dwCurProc dd 0
    hThread1 dd 0
    hThread2 dd 0
    
    dwAbort dd 0
    
.code

EnumThreads proc dwProcessId :DWORD

    LOCAL te32 :THREADENTRY32
    LOCAL hSnapshot :DWORD
    LOCAL nThreads :DWORD
    LOCAL info[50] :BYTE
    jmp @F
        fmt_str db "thread %d, ID = 0x%.8X",0Dh,0
    @@:

    ; ------------------------------------------------------------------
    
    mov nThreads,0
    mov te32.dwSize,SIZEOF THREADENTRY32

    invoke CreateToolhelp32Snapshot, TH32CS_SNAPTHREAD, dwProcessId
    test eax,eax
    js _leave

    mov hSnapshot,eax

    invoke Thread32First, hSnapshot, ADDR te32
    or eax,eax
    jz _closesnap

_nextthread:
    
    mov eax,dwProcessId
    cmp eax,te32.th32OwnerProcessID
    jne _notour

    inc nThreads
    invoke wsprintf, ADDR info, ADDR fmt_str, nThreads, te32.th32ThreadID
    invoke lstrcat, ADDR buff, ADDR info

_notour:

    invoke Thread32Next, hSnapshot, ADDR te32
    or eax,eax
    jnz _nextthread

_closesnap:
    
    invoke CloseHandle, hSnapshot
    
_leave:
    
    ret

EnumThreads endp

; ----------------------------------------------------------------------

ThreadProc1 proc lpParam :DWORD

    cmp dwAbort,1
    je @F
    invoke Sleep, 10
@@:
    ret

ThreadProc1 endp

; ----------------------------------------------------------------------

ThreadProc2 proc lpParam :DWORD

    cmp dwAbort,1
    je @F
    invoke Sleep, 10
@@:
    ret

ThreadProc2 endp

; ----------------------------------------------------------------------

start:

    invoke GetCurrentProcessId
    mov dwCurProc,eax
    
    invoke EnumThreads, eax

    invoke MessageBox, 0, ADDR buff, ADDR msg_cap1, MB_ICONINFORMATION
    
    invoke CreateThread, 0, 0, OFFSET ThreadProc1, 0, 0, 0
    mov hThread1,eax
    
    invoke CreateThread, 0, 0, OFFSET ThreadProc2, 0, 0, 0
    mov hThread2,eax
    
    invoke RtlZeroMemory, ADDR buff, SIZEOF buff

    invoke EnumThreads, dwCurProc

    invoke MessageBox, 0, ADDR buff, ADDR msg_cap2, MB_ICONINFORMATION

    inc dwAbort
    
    invoke CloseHandle, hThread2
    
    invoke CloseHandle, hThread1
    
    invoke RtlZeroMemory, ADDR buff, SIZEOF buff
    
    invoke EnumThreads, dwCurProc
    
    invoke MessageBox, 0, ADDR buff, ADDR msg_cap3, MB_ICONINFORMATION

    invoke ExitProcess, 0
    
end start

;:make
;\masm32\bin\ml.exe /c /coff threads.cmd
;\masm32\bin\link.exe /SUBSYSTEM:WINDOWS threads.obj
;pause
 

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  threads.zip 1,90 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.0412 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.