Oppure

Loading
26/10/20 9:01
natamas
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 ^
private void Scrivi(string dati)
        {
            char[] specialChars = { '{', '}', '(', ')', '+', '^', '%', '~' };
            foreach (char c in dati)
            {
                bool _specialCharFound = false;
                for (int i = 0; i < specialChars.Length; i++)
                {
                    if (c == specialChars[i])
                    {
                        _specialCharFound = true;
                        break;
                    }
                }
                if (_specialCharFound)
                    SendKeys.SendWait("{" + c.ToString() + "}");
                else
                    SendKeys.Send(c.ToString());
            }
        }

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

aaa
26/10/20 12:35
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.
Ultima modifica effettuata da Carlo 26/10/20 12:48
in programmazione tutto è permesso
26/10/20 16:55
natamas
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.
private void Scrivi(string dati)
        {
            char[] specialChars = { '{', '}', '(', ')', '+', '^', '%', '~' };
            foreach (char c in dati)
            {
                bool _specialCharFound = false;
                for (int i = 0; i < specialChars.Length; i++)
                {
                    if (c == specialChars[i])
                    {
                        _specialCharFound = true;
                        break;
                    }
                }
                if (_specialCharFound)
                {
                    if (c == '^') { SendKeys.Send("+{ì}"); }
                    else { SendKeys.SendWait("{" + c.ToString() + "}"); }
                }
                else
                    SendKeys.Send(c.ToString());
            }
        }
Ultima modifica effettuata da natamas 26/10/20 16:55
aaa
26/10/20 17:15
Carlo
di nulla :heehee::k:
in programmazione tutto è permesso