Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - mandare una combinazione di tasti ad una finestra ridotta a icona
Forum - C/C++ - mandare una combinazione di tasti ad una finestra ridotta a icona

Avatar
NickoMaiden (Normal User)
Pro


Messaggi: 115
Iscritto: 10/06/2009

Segnala al moderatore
Postato alle 17:19
Mercoledì, 15/09/2010
è possibile mandare una combinazione di tasti ad una finestra ridotta a icona tramite il suo hwnd? tipo facciamo che ho il notepad, voglio scrivere all'interno "ciao" senza che la finestra sia necessariamente aperta (dico notepad per fare un esempio). anche se potrà essere complicato, è una cosa fattibile? se si, mi potete dare una mano sul materiale da cercare?
grazie in anticipo ;)


char segreto[100]={"Abaca da cala da ciaccia"};
for(int i=0;i<100;i++)
  {
  if(segreto[ i ]=='a'||segreto[ i ]=='A')
    {
    segreto[ i ]='u';
    }
  }
cout<<segreto;
system("pause");
return EXIT_SUCCESS;
PM
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Up
2
Down
V
Segnala al moderatore
Postato alle 19:57
Mercoledì, 15/09/2010
Un tentativo potrebbe essere sfruttare la API SendMessage: http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx

Ovviamente devi prima enumerare le finestra esistenti per ottenere tutti gli handle usando le api EnumWindows e compagnia: http://support.microsoft.com/?scid=kb%3Ben-us%3B183009&x=9 ...

Poi si tratta di sapere quali messaggi mandare alla specifica finestra.

Cercando qualche esempio potresti sfruttare anche PostMessage.

Qui un esempio: http://stackoverflow.com/questions/808540/i-cant-understan ...

E' in C# ma le api usate sono le stesse.

In quel link viene anche indicato questo esempio:http://www.codeproject.com/KB/cs/SendKeys.aspx

Che semplicemente ti imposta la finestra a cui stai mandando in quel momendo l'evento di tasto premuto in modalità attiva.



Mai memorizzare quello che puoi comodamente trovare in un libro.
Imparare è un'esperienza; tutto il resto è solo informazione.
L'immaginazione è più importante della conoscenza.
(A. Einstein)


Esistendo poi google...
PM
Avatar
NickoMaiden (Normal User)
Pro


Messaggi: 115
Iscritto: 10/06/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 21:11
Mercoledì, 15/09/2010
Testo quotato

Postato originariamente da netarrow:

Un tentativo potrebbe essere sfruttare la API SendMessage: http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx

Ovviamente devi prima enumerare le finestra esistenti per ottenere tutti gli handle usando le api EnumWindows e compagnia: http://support.microsoft.com/?scid=kb%3Ben-us%3B183009&x=9 ...

Poi si tratta di sapere quali messaggi mandare alla specifica finestra.

Cercando qualche esempio potresti sfruttare anche PostMessage.

Qui un esempio: http://stackoverflow.com/questions/808540/i-cant-understan ...

E' in C# ma le api usate sono le stesse.

In quel link viene anche indicato questo esempio:http://www.codeproject.com/KB/cs/SendKeys.aspx

Che semplicemente ti imposta la finestra a cui stai mandando in quel momendo l'evento di tasto premuto in modalità attiva.




mmm grazie 1000, vedo che riesco a fare :)


char segreto[100]={"Abaca da cala da ciaccia"};
for(int i=0;i<100;i++)
  {
  if(segreto[ i ]=='a'||segreto[ i ]=='A')
    {
    segreto[ i ]='u';
    }
  }
cout<<segreto;
system("pause");
return EXIT_SUCCESS;
PM
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Up
-1
Down
V
Segnala al moderatore
Postato alle 18:12
Mercoledì, 15/09/2010


"I have never let my schooling interfere with my education." Mark Twain
PM
Avatar
NickoMaiden (Normal User)
Pro


Messaggi: 115
Iscritto: 10/06/2009

Up
-1
Down
V
Segnala al moderatore
Postato alle 18:27
Mercoledì, 15/09/2010
Testo quotato




ti pare che non ho gia provato? non ho trovato nulla di concreto, roba che funziona solo con la finestra aperta, cosa fattibile facilmente con keybd_event(). a me serve mandare al programma con la finestra ridotta a icona o comunque in poche parole senza emulare i tasti


char segreto[100]={"Abaca da cala da ciaccia"};
for(int i=0;i<100;i++)
  {
  if(segreto[ i ]=='a'||segreto[ i ]=='A')
    {
    segreto[ i ]='u';
    }
  }
cout<<segreto;
system("pause");
return EXIT_SUCCESS;
PM