C++ DLL Lag ?

03/05/2014 18:12 blackout617#1
Hallo ich bin neu in C++ bei meinen DLL Versuch habe ich ein problem Source:
Code:
// MyFirstDllExp.cpp : Defines the exported functions for the DLL application.
//

#include "stdafx.h"
#include <windows.h>
#include <stdio.h>

BOOL Messages()
{
	MessageBoxA(0,"Message^^","Caption =)",0);
	return 1;
}

void Loop()
{
while(1)
{
	if(GetKeyState(VK_F11) < 0)
		{
		MessageBoxA(0,"Well Done You Pressed F11\n Now You will get a Second MsgBox.","Done !",0);
		Sleep(1);
		Messages();
		}
}
}

DWORD WINAPI dwHoThread(LPVOID)
{
Loop();
	return NULL;
}


BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
{
	DisableThreadLibraryCalls(hModule);
	if(dwReason == DLL_PROCESS_ATTACH) {
		MessageBoxA(0, "--> Injected", "Caption<--", MB_OK);
		CreateThread(NULL, NULL, &dwHoThread, NULL, NULL, NULL);
	}
	return TRUE;
}
Das problem ist ven ich die DLL Injecte der process benutzt meinen CPU %90 - %100 ohne die Dll %1 - %5 mit der Dll %90 - %100 warum ?wie kan ich es fixxen
03/05/2014 18:46 Dr. Coxxy#2
1. formatier den text mal ordentlich
2. hast du nen singlecore, dass du auf 90-100% kommst? O.o
3. hast vermutlich nen thread der i-was dauerhaft macht, ein kleiner sleep kann da helfen.
03/05/2014 18:47 snow#3
Code:
while (1)
Verwende GetMessage & schau, ob F11 gedrückt wurde.
03/05/2014 19:10 MrSm!th#4
Dein Sleep wird nur ausgeführt, wenn F11 gedrückt wurde, andernfalls wird der if-Block übersprungen und die Schleife beginnt ohne Pause von vorne.
Das zieht CPU Leistung.
03/05/2014 19:15 blackout617#5
mein processor ist single core :( [AMD Athlon XP 2400+ 2.00Ghz]
danke MrSm!th
danke ich habe jetzt meinen fehler gefunden ich habe
Bei void Loop()
Code:
while(1)
{
	if(GetKeyState(VK_F11) < 0)
		{
		MessageBoxA(0,"Well Done You Pressed F11\n Now You will get a Second MsgBox.","Done !",0);
		Messages();
			Sleep(1);
		}
}
gemacht aber eigentlich habe ich den sleep an der falsche stelle geschrieben
das richtige würde:

Code:
while(1)
{
	if(GetKeyState(VK_F11) < 0)
		{
		MessageBoxA(0,"Well Done You Pressed F11\n Now You will get a Second MsgBox.","Done !",0);
		Messages();
		}
	Sleep(1);
}
und jetzt ist mein code besser :)

Code:
void dwHoThread();
void Messages();


BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
{
    if (dwReason == DLL_PROCESS_ATTACH)
    {
        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)dwHoThread, 0, 0, 0);
		MessageBoxA(0, "--> Injected", "Caption<--", MB_OK);
    }
    return TRUE;
}

void dwHoThread()
{
    while (1)
    {
        if (GetKeyState(VK_F11) < 0)
        {
		MessageBoxA(0,"Well Done You Pressed F11	\n Now You will get a Second MsgBox","Done !",0);
        Messages();
		}
        Sleep(1);
    }
}  

void Messages()
{
	MessageBoxA(0,"Message^^","Caption =)",0);
}