Salve a tutti!

Ho qualche problema di conversione; non riesco ad ottenere perfettamente dei caratteri che passo ad una funzione della api di windows. Praticamente ho definito un altra funzione in cui il suo funzionamento è il seguente:

void macchinetta(char *str)
{
int i=0;

while( i <= ( strlen(str)-1 ) )
{
keybd_event( *(str+i)-32, 0, 0, 0 );
keybd_event( *(str+i)-32, 0, KEYEVENTF_KEYUP, 0 );
Sleep(100);
i++;
}

}

Quindi noterete che la mia funzione deve ricevere una stringa e carattere per carattere deve simulare un input tramite la funzione keybd_event.

Il problema, e che il primo argomento di keybd_event è di tipo BYTE. Di conseguenza la stringa che io passo è fatta di char. Avendo monitorato l'output se io passo a questa funzione la stringa "ciao" avrò correttamente il suo output. Le cose si complicano quando io per esempio inserisco spazi o scrivo "Ciao".

Nel Prog principale ho la seguente sintassi:


#include <stdio.h>
#include <windows.h>
#include <string.h>

int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpStr, int cmdShow) {

system("start notepad");
sleep(100);

char *testo="ciao";
macchinetta(testo);

}

Allora, il programma funziona completamente, nessun errore. Il problema sono i caratteri. Ripeto, se scrivo solo "ciao" le cose vanno bene. Se comincio a cambiare le cose non va più bene.


QUALCUNO può aiutarmi???