Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2010, 13:51   #1
ordoss
Пользователь
 
Регистрация: 03.01.2010
Сообщений: 41
Восклицание Ошибка 'kernel32.dll' [C++]

Код:
//---------------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Grids.hpp>
//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published:	// IDE-managed Components
	TStringGrid *StringGrid1;
	TGroupBox *GroupBox1;
	void __fastcall FormShow(TObject *Sender);

private:	// User declarations
public:		// User declarations
	__fastcall TForm2(TComponent* Owner);
	HANDLE ThreadSnap, ThreadDescriptor;
	LPFILETIME lpCreationTime, lpExitTime, lpKernelTime, lpUserTime;
	DWORD IDS[1000];
	THREADENTRY32 th32;
	int i, Numb;
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <windows.h>
#include <tlhelp32.h>
#include <psapi.h>

#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormShow(TObject *Sender)
{
	for(i = 1; i < 1000; i++)
		IDS[i] = Form1->IDS[i];
	Numb = Form1->Numb;

	Form2->Caption = IDS[Numb];
	StringGrid1->Cells[0][0] = "Потік";
	StringGrid1->Cells[1][0] = "Час";
	StringGrid1->RowCount = 2;

	ThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
	th32.dwSize = sizeof(THREADENTRY32);

	if(Thread32First(ThreadSnap, &th32))
	{
		i = 0;
		do
		{
			if(th32.th32OwnerProcessID == IDS[Numb])
			{
				ThreadDescriptor = OpenThread(THREAD_ALL_ACCESS, FALSE, th32.th32ThreadID);
				GetThreadTimes(ThreadDescriptor, lpCreationTime, lpExitTime, lpKernelTime, lpUserTime);
				StringGrid1->Cells[0][++i] = th32.th32ThreadID;
				StringGrid1->RowCount++;
			}
		}
		while(Thread32Next(ThreadSnap, &th32));
		StringGrid1->RowCount--;
	}
}
//---------------------------------------------------------------------------
При использовании фун GetThreadTimes() в программе вылетает ошибка 'kernel32.dll'. Что я делаю нетак?
ordoss вне форума Ответить с цитированием
Старый 14.10.2010, 14:03   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ану полный текст ошибки в студию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.10.2010, 14:13   #3
ordoss
Пользователь
 
Регистрация: 03.01.2010
Сообщений: 41
По умолчанию


вот
ordoss вне форума Ответить с цитированием
Старый 14.10.2010, 14:18   #4
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

Сори. тупанул.
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 14.10.2010, 14:20   #5
ordoss
Пользователь
 
Регистрация: 03.01.2010
Сообщений: 41
По умолчанию

Don Karleone, радикал тупит)
http://s60.radikal.ru/i167/1010/65/05ec7593d6ba.png
ordoss вне форума Ответить с цитированием
Старый 14.10.2010, 14:37   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А почему стесняешся на ошибки проверять?
Код:
                
ThreadDescriptor = OpenThread(THREAD_ALL_ACCESS, FALSE, th32.th32ThreadID);
 if(ThreadDescriptor ){
    if(GetThreadTimes(ThreadDescriptor, lpCreationTime, lpExitTime, lpKernelTime, lpUserTime)){
                StringGrid1->Cells[0][++i] = th32.th32ThreadID;
                StringGrid1->RowCount++;
   } else {Чет не получилось} 
 } else {Чет не открылось}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.10.2010, 14:45   #7
ordoss
Пользователь
 
Регистрация: 03.01.2010
Сообщений: 41
По умолчанию

Проверял, ошибок вроде бы и нет(
ordoss вне форума Ответить с цитированием
Старый 14.10.2010, 14:51   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Значит Ось тупит. У меня тоже подобное бывает, я просто ищи другие пути.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.10.2010, 14:56   #9
ordoss
Пользователь
 
Регистрация: 03.01.2010
Сообщений: 41
По умолчанию

У меня в лабе задание спользовать эту функцию((
ordoss вне форума Ответить с цитированием
Старый 14.10.2010, 15:35   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Значит Ось тупит.
Все мы знаем мелкософт, но не надо спешить.

Код:
LPFILETIME lpCreationTime, lpExitTime, lpKernelTime, lpUserTime;
Это указатели, где сами структуры? Кто под них память выделять будет? ВОт и пытается функция писать туда, куда ВЫ ему и говорите... в 0, так в 0...
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В kernel32.dll не существует такой функции Rin Общие вопросы Delphi 11 08.09.2010 01:07
kernel32 ошибка 1000 TreadProblem Общие вопросы Delphi 2 10.08.2010 15:17
Windows I/o без Kernel32.dll и Advapi32.dll coinkrsk Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 31 27.06.2010 08:52
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36
не удается открыть файл ''kernel32.lib'' Paul_Norck Общие вопросы C/C++ 6 06.07.2009 23:34