|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
[VB->C++] Mandare testo alla tastiera
ho visto in alcuni programmi, scritti probabilmente in vb, una funzione, che manda del testo alla tastiera.
mi spiego meglio: c'è una textbox dove io scrivo qualunque cosa, e vicino ad essa un bottone. se scrivo una frase a caso, premo il bottone e seleziono una pagina di word, vedo la tastiera scrivere da sola la frase che avevo scritto in precedenza. non so se mi sono spiegato bene, ma spero di aver reso l'idea. vorrei sapere se è possibile fare una cosa del genere anche in c++. grazie in anticipo |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
muovere magicamente i tasti della tastiera affinché scriva da sola? lo puoi fare solo con hardware dedicato, e probabilmente hai bisogno di contattare l'azienda produttrice per informazioni tecniche sulla gestione dell'hardware via software
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
non si muovono i tasti, ma compare la frase, come se l'avessi digitata io.
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
A dire il vero in Win32 esiste la funzione keybd_event() (e sui sistemi NT/2K/XP c'è SendInput()).
Permettono di "sintetizzare" la pressione dei tasti.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
|
In VB viene usata la funzione SendMessage oppure la KeySend per inviare un qualsiasi carattere o messaggio ad una qualsiasi applicazione tramite il suo hwnd (handle window) ...
Nel caso di passaggio di testo in Word (o altri applicativi) viene semplicemente caricato il componente OLE dell' applicazione nell' applicazione VB e poi si passa la stringa usando semplicemente gli oggetti offerti dal componente OLE. Quindi sicuramente si può fare questa cosa anche in altri linguaggi ...
__________________
IN WIN 909 / AMD Ryzen 9 3950X / Gigabyte X570 Aorus Xtreme / 4x8gb G.Skill 3200 / Gigabyte Aorus RTX2080Ti Xterme / 2x Gigabyte Aorus NVMe M.2 1Tb / Corsair AX1200i / full liquid EK - Bitspower / circa 160 trattative nel mercatino |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
Quote:
|
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) Ultima modifica di andbin : 23-08-2006 alle 09:43. |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
dove li trovo questi header?
io ho solo quelli normali (iostream, string...) |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jun 2006
Città: Inverno: Novgorod. Estate: Haifa
Messaggi: 879
|
Quote:
#include <windows.h> solitamente il compilatore (configurato di default) è in grado di trovarli. Altrimenti fai una bella ricerca, così ne trovi decine in decine di posti diversi
__________________
Hosti non solum dandam esse viam ad fugiendum, sed etiam muniendam / Ceterum censeo Carthaginem esse delendam / Et facere et pati fortia romanum est / Nemo Romanorum pacis mentionem habere dignatus est / Roma locuta, causa finita Milla |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
erano nella cartella include del borland
grazie mille metal gear solid p.s. come uso SendInput()? SendInput(testo) va bene? |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
vado a vedere.
grazie mille edit: cosa sono quei parametri? |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
credo di aver capito...
in sendinput devo dare tra gli argomenti il puntatore a un array di struct di tipo input che a loro volta contengono struct di tipo mouseinput, keyboardinput o hardwareinput, che a loro volta sono formati da piccole strutture... vorrei non aver capito |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
cosa significa "wrappare"?
esiste un verbo inglese ma non ricordo che significa |
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Ho scritto questo breve programma di prova:
Codice:
#define STRICT
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
BOOL SendKeyboardText (LPSTR lpszText)
{
INT iLen, iIdx;
INPUT input;
SHORT code;
BYTE vk, flags;
iLen = lstrlen (lpszText);
input.type = INPUT_KEYBOARD;
for (iIdx = 0; iIdx < iLen; iIdx++)
{
code = VkKeyScan (lpszText[iIdx]);
vk = LOBYTE ((WORD) code);
flags = HIBYTE ((WORD) code);
if (vk != 0xFF)
{
if (flags & 1)
{
input.ki.wVk = VK_SHIFT;
input.ki.dwFlags = 0;
SendInput (1, &input, sizeof (INPUT));
}
input.ki.wVk = (WORD) vk;
input.ki.dwFlags = 0;
SendInput (1, &input, sizeof (INPUT));
input.ki.wVk = (WORD) vk;
input.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput (1, &input, sizeof (INPUT));
if (flags & 1)
{
input.ki.wVk = VK_SHIFT;
input.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput (1, &input, sizeof (INPUT));
}
}
}
return TRUE;
}
int main (void)
{
Sleep (4000);
SendKeyboardText ("Ciao, prova\r");
SendKeyboardText ("!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~");
return 0;
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) Ultima modifica di andbin : 23-08-2006 alle 12:18. |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
cosa sono questi?
#define STRICT #define _WIN32_WINNT 0x0500 |
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
_WIN32_WINNT è una macro che consente (insieme all'altra WINVER) di abilitare le funzioni/costanti/strutture specifiche per i vari OS Microsoft. Anche in questo caso è meglio se leggi <qui>. P.S.: ho modificato il codice del mio post sopra. Ora gestisce bene tutti i codici ASCII.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:05.



















