Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Nel Formula 1 Technology and Media Centre di Biggin Hill, la velocità delle monoposto si trasforma in dati, immagini e decisioni in tempo reale grazie all’infrastruttura Lenovo che gestisce centinaia di terabyte ogni weekend di gara e collega 820 milioni di spettatori nel mondo
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
Il nuovo gimbal mobile DJI evolve il concetto di tracciamento automatico con tre modalità diverse, un modulo multifunzionale con illuminazione integrata e controlli gestuali avanzati. Nel gimbal è anche presente un'asta telescopica da 215 mm con treppiede integrato, per un prodotto completo per content creator di ogni livello
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-04-2006, 22:37   #1
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2780
[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, 09: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 09:20.
mynos79 è offline   Rispondi citando il messaggio o parte di esso
Old 29-04-2006, 19:55   #3
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2780
Grazie mille! Adesso non ho tempo, ma domani lo provo!
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 30-04-2006, 19:24   #4
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2780
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, 19:31   #5
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2780
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, 20: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, 20: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, 12:09   #8
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2780
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 12:12.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 01-05-2006, 13: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, 20:43   #10
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2780
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, 08: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, 14:28   #12
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2780
Lol, lo tengo proprio a 1 ms..
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 02-05-2006, 14:48   #13
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2780
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


Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce Recensione Pura 80 Pro: HUAWEI torna a stupire c...
Opera Neon: il browser AI agentico di nuova generazione Opera Neon: il browser AI agentico di nuova gene...
Snap e Perplexity unite: dal prossimo an...
La Cina dice addio a NVIDIA? Il governo ...
Microlino, simbolo italiano della mobili...
Apple disattiverà la sincronizzaz...
Google lancia l'allarme: attenzione ai m...
Primo test drive con Leapmotor B10: le c...
'Non può essere un robot': l'uman...
Monopattino elettrico Segway Ninebot Max...
Syberia Remastered è disponibile:...
Sony scopre che tutti i modelli AI hanno...
Amazon nasconde un -15% su 'Seconda Mano...
Due occasioni Apple su Amazon: iPhone 16...
Verso la fine della TV tradizionale? I g...
Cassa JBL a 39€, portatili, smartphone, ...
Cometa interstellare 3I/ATLAS: la sonda ...
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: 02:01.


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