Schleife per Tastendruck starten

01/25/2011 16:50 Dany.Sahne#1
Hallo,

Ich möchte wissen, wie ich meinen Quellcode verändern muss, damit die Schleife erst startet, wenn ich F5 gedrückt habe.

Code:
#include "stdafx.h"
#include <windows.h>

DWORD dwUseItemFunc = 0x0041ECF0;
DWORD dwUseItemFunc2 = 0x0053BFA0;



void UseItem(DWORD slot)
{
	
	while(1)
	{
		__asm
		{
			MOV ECX,DWORD PTR DS:[0x5F1D34]
			PUSH slot
			CALL dwUseItemFunc
			CALL dwUseItemFunc2
				
		}
		Sleep(10000);
	}
	
}
int __stdcall DllMain(_In_ void * _HDllHandle, _In_ unsigned _Reason, _In_opt_ void * _Reserved)
{
	if(DLL_PROCESS_ATTACH == _Reason)
	{
		UseItem(0);
	}
	return 1;
}

Nach der Injektion der .dll, wird ein Item aus dem Inventar benutzt, und zwar aller 10 Sekunden.
01/25/2011 17:49 xNopex#2
Mit inline-asm arbeiten und dann bei sowas scheitern?

Code:
DWORD WINAPI RecvInput( LPVOID lpParam )
{
    BOOL* start = (BOOL*)(lpParam);
    while( TRUE )
    {
            Sleep( 200 );
            if( GetAsyncKeyState( VK_F5 ) )
                *start = !(*start);
    }
    return 0;
}

DWORD WINAPI MainThread( LPVOID lpParam )
{
    BOOL* isRunning = (BOOL*)(lpParam );
    while( TRUE )
    {
        if( *isRunning == TRUE )
        {
             //Aktiv
        }
        Sleep( 200 );
    }
    return 0;
}
Mit geeigneter Parameterübergabe bei CreateThread(). Vllt so:

Code:
BOOL running = FALSE;
CreateThread( NULL, 0, RecvInput, &running, 0, NULL );
CreateThread( NULL, 0, MainThread, &running, 0, NULL );