Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-08-2006, 14: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, 15:03   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 15: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, 15: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, 15: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, 15: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, 15: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, 15: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, 15:54   #9
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 15: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, 15: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, 16: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, 16: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, 16:04   #14
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 16: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, 16:17   #16
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 16: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, 16:35   #18
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 23-08-2006, 16: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, 16:57   #20
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Android Auto, il nuovo lettore porta in ...
I nuovi MacBook con display OLED potrebb...
Windows 11: l'aggiornamento KB5124010 fa...
iPhone Duo, la pellicola protettiva del ...
Memorie più costose, NVIDIA aumen...
TSMC potrebbe affiancare Intel nel proge...
Windows 11, un solo simbolo può risparmi...
Niente cloud, niente abbonamenti, niente...
Prime o meno, Amazon è piena di o...
Kindle in offerta: e-reader base a 89€ e...
Hackerato l'account ufficiale Microsoft ...
Tutti i dispositivi Ring: videocamere 2K...
Memorie HBM, la domanda si concentra su ...
Dash cam 70mai 4K da 74,99€: A800 Nano, ...
Nuovi rincari da Fastweb: l'operatore ha...
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: 03:32.


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