Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-04-2006, 21:37   #1
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
[VB 6] Spostare il puntatore del mouse

Ciao, vorrei sapere se è possibile spostare il puntatore del mouse da codice e come fare. Grazie!
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 29-04-2006, 08:07   #2
mynos79
Senior Member
 
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
Certo che si può spostare il cursore del mouse tramite codice.

Innanzitutto bisogna inserire nel form oppure meglio in un modulo la seguente dichiarazione:

Codice:
Declare Sub SetCursorPos Lib "User32" (ByVal X As Integer, ByVal Y As Integer)
Mentre nel form basta inserire la seguente chiamata:

Codice:
SetCursorPos 20, 20
che sposterà il mouse alle coordinate (20, 20) a partire dall' angolo in alto a sinistra dello schermo.




Per spostare invece il mouse con le coordinate riferite alla finestra form o a un controllo particolare, bisogna dichiarare in un modulo le seguenti dichiarazioni:

Codice:
Type POINTAPI
    x As Long
    y As Long
End Type
Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Mentre nel progetto:

Codice:
Private Sub Command1_Click()
    MoveMouse 300, 450
End Sub

Sub MoveMouse(x As Single, y As Single)
    Dim pt As POINTAPI
    pt.x = x
    pt.y = y
    ClientToScreen hwnd, pt
    SetCursorPos pt.x, pt.y
End Sub
La funzione ClientToScreen serve per ancorare le coordinate al controllo passato tramite la proprietà hwnd (in questo caso il form).
__________________
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

Ultima modifica di mynos79 : 29-04-2006 alle 08:20.
mynos79 è offline   Rispondi citando il messaggio o parte di esso
Old 29-04-2006, 18:55   #3
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Grazie mille! Adesso non ho tempo, ma domani lo provo!
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 30-04-2006, 18:24   #4
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Ce l'ho fatta, non pensavo fosse così semplice, grazie!
Ora xò vorrei chiederti un'altra cosa, come faccio a far vedere che il programma è in esecuzione ed eventualmente dare la possibilità di chiuderlo mettendo un'iconcina tipo quella della connessione in basso a destra? In pratica voglio che abbia un'iconcina a fianco dell'orologio..
So che non c'entra col resto ma mi serve x lo stesso programma.. Grazie!
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 30-04-2006, 18:31   #5
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Mi è venuta in mente anche un'altra cosa, c'è un evento mouse_move che viene attivato quando muovo il mouse anche all'esterno del form? X ora uso un timer x rilevare dove si trova il mouse e poi faccio di conseguenza quello che mi serve ma non so se è la soluzione ottimale.. Il massimo è che fosse attivato l'evento solo quando il mouse si trova in un certo punto ma non so se è possibile..
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 30-04-2006, 19:20   #6
mynos79
Senior Member
 
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
Icona nella system tray

Non è difficile ma un po' lungo da fare ...
Innanzitutto bisogna dichiarare delle dichiarazioni di costanti e della funzione Shell_NotifyIcon in un modulo:

Codice:
Public Const WM_LBUTTONDBLCLICK = &H203
Public Const WM_RBUTTONUP = &H205
Public Const WM_MOUSEMOVE = &H200
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4

Public Type NOTIFYICONDATA
    cbSize As Long
    hwnd As Long
    uId As Long
    uFlags As Long
    ucallbackMessage As Long
    hIcon As Long
    szTip As String * 64
End Type

Public VBGTray As NOTIFYICONDATA

Declare Function Shell_NotifyIcon Lib "shell32" Alias _
    "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
    
Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Poi nel form, nell' esempio che ti sto facendo, ho messo un pulsante Command1 e devi inserire questo codice (faccio prima a scrivertelo che a spiegarti passo per passo, non è difficile da capire comunque):

Codice:
Private Sub GoSystemTray()
    VBGTray.cbSize = Len(VBGTray)
    VBGTray.hwnd = Me.hwnd
    VBGTray.uId = vbNull
    VBGTray.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
    VBGTray.ucallbackMessage = WM_MOUSEMOVE
    
    VBGTray.hIcon = Me.Icon
    ' Tooltip
    VBGTray.szTip = Me.Caption & vbNullChar
    Call Shell_NotifyIcon(NIM_ADD, VBGTray)
    App.TaskVisible = False   ' rimuovi applicazione dalla taskbar
    Me.Hide
End Sub

Private Sub Command1_Click()
    Call GoSystemTray
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Static lngMsg As Long
    Static blnFlag As Boolean
    Dim result As Long
    
    lngMsg = X / Screen.TwipsPerPixelX
    If blnFlag = False Then
        blnFlag = True
        Select Case lngMsg
                ' doppio click
            Case WM_LBUTTONDBLCLICK
                Me.Show
                ' tasto destro
            Case WM_RBUTTONUP
                result = SetForegroundWindow(Me.hwnd)
                ' apertura menù
                Me.PopupMenu mnuSystemTray
        End Select
        blnFlag = False
    End If
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    VBGTray.cbSize = Len(VBGTray)
    VBGTray.hwnd = Me.hwnd
    VBGTray.uId = vbNull
    Call Shell_NotifyIcon(NIM_DELETE, VBGTray)
End Sub
Devi quindi creare un menù con l' editor dei menù di nome (proprietà name non caption) mnuSystemTray (puoi cambiarlo, ma ricordati di modificare anche il codice) e impostalo come non visibile (visible = false dall' editor).
Naturalmente puoi inserire tutti gli elementi che vuoi nel menù ... e ricordati quindi di scrivergli anche il relativo codice
Per ridurre a icona nella system tray basta chiamare la funzione:

Codice:
Call GoSystemTray
come ho fatto nel codice del pulsante.

Mi raccomando, quando esci dal programma rimuovi sempre l' icona e scarica tutto come ho fatto nella QueryUnload ...
__________________
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
mynos79 è offline   Rispondi citando il messaggio o parte di esso
Old 30-04-2006, 19:25   #7
mynos79
Senior Member
 
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
MouseMove fuori dai controlli

L' evento MouseMove è proprio dei vari controlli (form incluso) ... al di fuori del form non c'è nessun controllo con quest' evento; quindi per controllare il mouse al di fuori dell' applicazione, l' unico modo (che conosco, posso sbagliarmi) è quello di monitorare il puntatore tramite le sue coordinate e gestire gli spazi in maniera personalizzata.
Oppure, dipende sempre dai casi e da cosa stai facendo, puoi usare la proprietà hwnd dei vari controlli (sia dell' applicazione tua, che di qualsiasi controllo di qualsiasi applicazione attiva presente in windows); in pratica l' hwnd indica il numero del controllo creato in windows (è una proprietà che da windows in fase di creazione del controllo e dell' applicazione; e può essere utile per gestire controlli di altre applicazioni ... ad esempio usanto il SendMessage puoi dal codice della tua applicazione scrivere delle parole nel blocco note e salvare anche, senza mai entrare nel blocco note).
__________________
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
mynos79 è offline   Rispondi citando il messaggio o parte di esso
Old 01-05-2006, 11:09   #8
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Mmm, quindi il metodo che ho usato io, e cioè un timer x monitorare la posizione del mouse dovrebbe andar bene? E' che mi sembra uno spreco tenere in funzione sto timer continuamente.. boh..
Comunque il programma finito (solo grazie a te), è questo in allegato!
E' stupidissimo ma volevo farlo..


Ok, ora non mi picchiare!

Ps: se non hai capito cosa fa prova a muovere il mouse un po' dappertutto..
Allegati
File Type: zip mouse pazzo.zip (4.2 KB, 14 visite)

Ultima modifica di wingman87 : 01-05-2006 alle 11:12.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 01-05-2006, 12:05   #9
mynos79
Senior Member
 
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
Ah ah ah ... impressionante come l' ingegneria del software sia progredita in questi ultimi anni

Comunque se volevi fare un programmino "scherzoso" ... potevi aggiungerci la possibilità di nascondere casualmente il pulsante start oppure l' orologio o chissà cos' altro con qualche chiamata api fai di tutto.

Cmq l' uso del timer non è uno spreco ... è l' unico modo per avere una funzione indipendente dal flusso del programma ...
__________________
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
mynos79 è offline   Rispondi citando il messaggio o parte di esso
Old 01-05-2006, 19:43   #10
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Ok, è che pensavo che tenere un timer con intervallo così basso consumasse molte risorse.. Grazie ancora!
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2006, 07:18   #11
mynos79
Senior Member
 
Iscritto dal: Jun 2005
Città: Mestre (VE)
Messaggi: 1415
Beh, ma a quanto tieni l' intervallo del timer? per controllare semplicemente il mouse puoi anche metterlo a 250ms (un quarto di secondo), non serve che tieni 1ms ... cmq se il tuo programma non fa altro, anche se lo tieni a 1ms non consuma chissacchè, anche perchè non memorizzi nulla in variabili o array dinamici da consumare chissà quale memoria ... più che altro impegni costantemente un pelino la cpu, ma solo un pelino visto che hai solo un paio di coordinate da controlloare ...
__________________
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
mynos79 è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2006, 13:28   #12
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Lol, lo tengo proprio a 1 ms..
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2006, 13:48   #13
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Ho trovato una cosa molto interessante, l'evento mouse!! Guarda qui:
http://www.allapi.net/apilist/mouse_event.shtml
L'ho già provato e funziona alla grande!
wingman87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
L'ESA risponde alle critiche di Jared Is...
La NASA annuncia il nuovo telescopio spa...
HONOR pubblica The Sea Between Us, un co...
L'Olanda punta su NixOS e open source pe...
OPPO Find X10 Pro Max, il flagship con t...
Gli smartphone Samsung potrebbero avere ...
GeForce Now arriverà sui Googlebo...
Opus 5.5 e GPT-6 Sol nello stesso pomeri...
Weekend Amazon, le prime 5 offerte sono ...
Mini Compressore a 21,84€: gonfia le gom...
Gemini si aggiorna, ora può conne...
Da 32 a 65 pollici: ecco le TV più...
Xiaomi Redmi Note 17 a 269€: ecco perch&...
ASUS avverte i clienti: accesso non auto...
Già record di vendite su Amazon p...
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: 15:07.


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