Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Help Funzione Sendkeys c#
Forum - C# / VB.NET - Help Funzione Sendkeys c#

Avatar
natamas (Member)
Pro


Messaggi: 115
Iscritto: 09/04/2006

Segnala al moderatore
Postato alle 10:01
Lunedì, 26/10/2020
Salve a tutti,
Ho un programma che ha dei campi dove inserire delle chiavi di decryptaggio ma non permette di copiare/incollare del testo nei suoi campi e sono costretto a scrivere la key di 26 cifre a mano ogni santa volta.
Ho creato un piccolo software che eseguendosi senza form o altre interfacce intercetta i tasti dalla tastiera (tipo combinazioni ALT+F9) e alla loro pressione scrive del testo specifico in un programma che in quel momento ha il focus...
Il problema e che la funzione Sendkeys ha dei caratteri speciali che devono essere racchiusi dalle { } per essere scritti.
Io ho risolto con questa funzione, che funziona con tutti i caratteri speciali tranne con ^
Codice sorgente - presumibilmente C#

  1. private void Scrivi(string dati)
  2.         {
  3.             char[] specialChars = { '{', '}', '(', ')', '+', '^', '%', '~' };
  4.             foreach (char c in dati)
  5.             {
  6.                 bool _specialCharFound = false;
  7.                 for (int i = 0; i < specialChars.Length; i++)
  8.                 {
  9.                     if (c == specialChars[i])
  10.                     {
  11.                         _specialCharFound = true;
  12.                         break;
  13.                     }
  14.                 }
  15.                 if (_specialCharFound)
  16.                     SendKeys.SendWait("{" + c.ToString() + "}");
  17.                 else
  18.                     SendKeys.Send(c.ToString());
  19.             }
  20.         }


Scrive tutto ma quando arriva al carattere ^ invece di scriverlo correttamente mi mette questo &
Sapete come risolvere? Grazie


PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1345
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 13:35
Lunedì, 26/10/2020
per mandare il simbolo elevazione a potenza devi fare una sostituzione ad hoc, sostituisci ^ con: +{ì}
  + = shift
   ì = lettera da combinare con shift (tastiera italiana)

SendKeys può produrre risultati diversi con layout tastiera diversi.

Ultima modifica effettuata da Carlo il 26/10/2020 alle 13:48


in programmazione tutto è permesso
PM Quote
Avatar
natamas (Member)
Pro


Messaggi: 115
Iscritto: 09/04/2006

Segnala al moderatore
Postato alle 17:55
Lunedì, 26/10/2020
Testo quotato

Postato originariamente da Carlo:

per mandare il simbolo elevazione a potenza devi fare una sostituzione ad hoc, sostituisci ^ con: +{ì}
  + = shift
   ì = lettera da combinare con shift (tastiera italiana)

SendKeys può produrre risultati diversi con layout tastiera diversi.



Grazie mille... sono impazzito un giorno e non ho trovato nulla sul web.
Ho riscritto la funzione così e tutto ora funziona.
Codice sorgente - presumibilmente C#

  1. private void Scrivi(string dati)
  2.         {
  3.             char[] specialChars = { '{', '}', '(', ')', '+', '^', '%', '~' };
  4.             foreach (char c in dati)
  5.             {
  6.                 bool _specialCharFound = false;
  7.                 for (int i = 0; i < specialChars.Length; i++)
  8.                 {
  9.                     if (c == specialChars[i])
  10.                     {
  11.                         _specialCharFound = true;
  12.                         break;
  13.                     }
  14.                 }
  15.                 if (_specialCharFound)
  16.                 {
  17.                     if (c == '^') { SendKeys.Send("+{ì}"); }
  18.                     else { SendKeys.SendWait("{" + c.ToString() + "}"); }
  19.                 }
  20.                 else
  21.                     SendKeys.Send(c.ToString());
  22.             }
  23.         }


Ultima modifica effettuata da natamas il 26/10/2020 alle 17:55
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1345
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 18:15
Lunedì, 26/10/2020
di nulla :heehee::k:


in programmazione tutto è permesso
PM Quote