Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Sono molte le novità che ASUS ha scelto di presentare al CES 2026 di Las Vegas, partendo da una gamma di soluzioni NUC con varie opzioni di processore passando sino agli schermi gaming con tecnologia OLED. Il tutto senza dimenticare le periferiche di input della gamma ROG e le soluzioni legate alla connettività domestica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-08-2006, 15:31   #1
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
[C++] getch anche fuori dalla finestra di DOS

Sto lavorando a un programma di mouse su tastiera (tipo tast su skermo, ma al contrario) e mi servirebbe sapere come usare getch anche se i tasti vengono premuti avendo selezionato una finestra diversa da quella di dos.
grazie in anticipo.
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 16:03   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da AngeL)
Sto lavorando a un programma di mouse su tastiera (tipo tast su skermo, ma al contrario) e mi servirebbe sapere come usare getch anche se i tasti vengono premuti avendo selezionato una finestra diversa da quella di dos.
grazie in anticipo.
Non è molto chiaro. getch (così come le altre funzioni standard di I/O come getchar, printf, ecc... lavorano con una "console", non con una finestra qualunque di Windows.
Spiegati meglio.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 16:30   #3
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
praticamente dovrebbe funzionare tipo keylogger, solo che anziche salvare i tasti premuti su un file, li usa in uno switch che decide dove far muovere il mouse
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 16:40   #4
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da AngeL)
Sto lavorando a un programma di mouse su tastiera (tipo tast su skermo, ma al contrario) e mi servirebbe sapere come usare getch anche se i tasti vengono premuti avendo selezionato una finestra diversa da quella di dos.
grazie in anticipo.
se ho capito bene hai lo stesso problema che avevo io.
Prova questo che ho fatto e se hai domande falle qui perché c'é altra gente che ti puó aiutare, magari io sto a casa e non mi connetto.
C'é anche il make che ti crea la libreria ma non ho tempo per cambiartelo o per spiegartelo adesso.
Ciao
Allegati
File Type: gz kb_util.tar.gz (2.6 KB, 3 visite)
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 16:42   #5
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da AngeL)
praticamente dovrebbe funzionare tipo keylogger, solo che anziche salvare i tasti premuti su un file, li usa in uno switch che decide dove far muovere il mouse
ti serve un getch che risponda direttamente al tasto senza l'enter no ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 16:43   #6
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
Quote:
Originariamente inviato da trallallero
ti serve un getch che risponda direttamente al tasto senza l'enter no ?
esatto
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 16:49   #7
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
che me ne faccio di quel file senza estensione?
cosa devo includere nel codice?
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 16:52   #8
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da AngeL)
che me ne faccio di quel file senza estensione?
cosa devo includere nel codice?
Codice:
make -f makeKbUtil
io tra un attimo me ne vado, mi spiace. Ma andbin (se vuole ) ha piú esperienza di me
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 16:54   #9
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Se ho capito bene, hai bisogno di muovere il mouse in base alla pressione dei tasti della tastiera. Giusto?

Ecco:
Codice:
#define STRICT
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <stdio.h>
#include <conio.h>

#define KEY_ESCAPE  0x1B

#define KEY_X_UP    0x48
#define KEY_X_DOWN  0x50
#define KEY_X_LEFT  0x4B
#define KEY_X_RIGHT 0x4D

void MoveMouse (int dx, int dy)
{
    INPUT input;

    ZeroMemory (&input, sizeof (INPUT));

    input.type = INPUT_MOUSE;
    input.mi.dx = dx;
    input.mi.dy = dy;
    input.mi.dwFlags = MOUSEEVENTF_MOVE;

    SendInput (1, &input, sizeof (INPUT));
}

int main (void)
{
    int ch, ch2;

    do {
        ch = getch ();

        if (ch == 0x00 || ch == 0xE0)
        {
            ch2 = getch ();

            if (ch2 == KEY_X_UP)
                MoveMouse (0, -1);
            else if (ch2 == KEY_X_DOWN)
                MoveMouse (0, +1);
            else if (ch2 == KEY_X_LEFT)
                MoveMouse (-1, 0);
            else if (ch2 == KEY_X_RIGHT)
                MoveMouse (+1, 0);
        }
    } while (ch != KEY_ESCAPE);

    return 0;
}
Basta usare le frecce della tastiera e il mouse si muove.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 16:54   #10
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
sono su win, non su linux
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 16:55   #11
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da AngeL)
sono su win, non su linux
'azz ... scusa
allora io proprio sono il meno adatto
ciao
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 17:00   #12
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da andbin
Basta usare le frecce della tastiera e il mouse si muove
antiquati come al solito ... su Sun con sole 600 righe di codice fai la funzione getch()
per la MouseMove non oso immaginarlo
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 17:00   #13
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
esiste anche un sistema per determinare fin quando un tasto è premuto, e generare eventi quando il tasto viene premuto e quando viene rilasciato?
mi serve per simulare il tasto premuto
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 17:04   #14
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da AngeL)
esiste anche un sistema per determinare fin quando un tasto è premuto, e generare eventi quando il tasto viene premuto e quando viene rilasciato?
mi serve per simulare il tasto premuto
Con la getch non puoi avere l'informazione tasto premuto/rilasciato.
Dovresti usare la gestione ad "eventi" di Windows all'interno di una finestra. Allora puoi avere questa informazione.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 17:07   #15
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
ma come mai quando facevo input.mi.dx-- non funzionava?
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 17:17   #16
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da AngeL)
ma come mai quando facevo input.mi.dx-- non funzionava?
Tu hai usato:
Codice:
input.mi.dy--;
input.mi.dwFlags=MOUSEEVENTF_MOVE;
Senza specificare MOUSEEVENTF_ABSOLUTE, il valori in dx/dy indicano un movimento relativo e non assoluto.

Ma come hai impostato inizialmente questi valori dx/dy???
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 17:20   #17
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
ti posto il codice intero finora:
Codice:
#define KEY_ESCAPE  0x1B
#define KEY_X_UP    0x48
#define KEY_X_DOWN  0x50
#define KEY_X_LEFT  0x4B
#define KEY_X_RIGHT 0x4D
#define STRICT
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>

BOOL func(CHAR mov)
{
INPUT input;
ZeroMemory (&input, sizeof (INPUT));
input.type=INPUT_MOUSE;

switch(mov)
{
case '7'://UL
input.mi.dx--;
input.mi.dy--;
input.mi.dwFlags=MOUSEEVENTF_MOVE;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
case '8'://U
input.mi.dy--;
input.mi.dwFlags=MOUSEEVENTF_MOVE;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
case '9'://UR
input.mi.dx++;
input.mi.dy--;
input.mi.dwFlags=MOUSEEVENTF_MOVE;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
case '4'://L
input.mi.dx--;
input.mi.dwFlags=MOUSEEVENTF_MOVE;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
case '6'://R
input.mi.dx++;
input.mi.dwFlags=MOUSEEVENTF_MOVE;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
case '1'://DL
input.mi.dx--;
input.mi.dy++;
input.mi.dwFlags=MOUSEEVENTF_MOVE;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
case '2'://D
input.mi.dy--;
input.mi.dwFlags=MOUSEEVENTF_MOVE;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
case '3'://DR
input.mi.dx++;
input.mi.dy++;
input.mi.dwFlags=MOUSEEVENTF_MOVE;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
case KEY_X_DOWN://wheel down
input.mi.mouseData--;
input.mi.dwFlags=MOUSEEVENTF_WHEEL;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
case KEY_X_UP://wheel up
input.mi.mouseData++;
input.mi.dwFlags=MOUSEEVENTF_WHEEL;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
case KEY_X_LEFT://left button click
input.mi.dwFlags=MOUSEEVENTF_LEFTDOWN;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
input.mi.dwFlags=MOUSEEVENTF_LEFTUP;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
case KEY_X_RIGHT://right button click
input.mi.dwFlags=MOUSEEVENTF_RIGHTDOWN;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
input.mi.dwFlags=MOUSEEVENTF_RIGHTUP;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
case '/'://left button hold;
input.mi.dwFlags=MOUSEEVENTF_LEFTDOWN;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
case '*'://right button hold
input.mi.dwFlags=MOUSEEVENTF_RIGHTDOWN;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
case '-'://button relase
input.mi.dwFlags=MOUSEEVENTF_RIGHTUP;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
input.mi.dwFlags=MOUSEEVENTF_LEFTUP;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
}


return TRUE;
}

void MoveMouse (int dx, int dy)
{
    INPUT input;

    ZeroMemory (&input, sizeof (INPUT));

    input.type = INPUT_MOUSE;
    input.mi.dx = dx;
    input.mi.dy = dy;
    input.mi.dwFlags = MOUSEEVENTF_MOVE;

    SendInput (1, &input, sizeof (INPUT));
}

int main ()
{

//ci sto lavorando


}
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 17:35   #18
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da AngeL)
ti posto il codice intero finora:
un pochino lunghetto.
Comunque ho capito: nella funzione azzeri la struttura INPUT e poi incrementi/decrementi dx/dy per avere +1 o -1.
Ma a questo punto ti conviene usare la funzione MoveMouse come ho fatto io, passando -1, 0, +1.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 17:44   #19
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
non funziona la rotellina... questa è la parte di codice che la riguarda:
Codice:
case KEY_X_DOWN://wheel down
input.mi.mouseData--;
input.mi.dwFlags=MOUSEEVENTF_WHEEL;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
case KEY_X_UP://wheel up
input.mi.mouseData++;
input.mi.dwFlags=MOUSEEVENTF_WHEEL;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
break;
ho fatto lo stesso errore di prima?
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 17:57   #20
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da AngeL)
non funziona la rotellina... questa è la parte di codice che la riguarda:

ho fatto lo stesso errore di prima?
Tecnicamente mi sembra ok. MSDN dice di specificare MOUSEEVENTF_WHEEL e di mettere l'indicazione del movimento in mouseData.

Ci sono 2 cose che vorrei verificare bene (lo farò magari stasera a casa, il mouse che ho in ufficio non ha la rotellina azz che rottura):
- Forse muovere di -1/+1 è poco. Sempre MSDN dice: One wheel click is defined as WHEEL_DELTA, which is 120.
- C'è un'altra considerazione da fare: l'effetto della rotellina si manifesta nella finestra che ha il focus. Se stai lavorando con un browser, devi avere il cursore sulla finestra del browser (che deve avere il focus) e allora la rotellina ti permette di scrollare il documento.
Ma se l'applicazione che ha il focus è la tua che sta prendendo in input i tasti .... credo che non funzioni!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
Meta ridimensiona la VR: ondata di licen...
Coupon Amazon nascosti di gennaio 2026, ...
PC completo, grande schermo e zero ingom...
Windows 11, rilasciato il primo aggiorna...
Riscaldamento smart, bollette giù: i kit...
Casa smart spendendo pochissimo: termost...
Apple accelera sull'AI: chip server prop...
Tesla, basta Full Self-Driving come pack...
VoidLink è il nuovo malware per L...
OLED di fascia alta a metà prezzo...
Cadillac è la prima a mostrare le...
Xiaomi lancerà uno smartphone con...
Linus Torvalds prova il 'vibe coding', a...
Power station in offerta su Amazon: crol...
ARC Raiders è sempre più u...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:16.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v