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
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.
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.
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);
}