Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Abbiamo giocato a lungo a Battlefield 6, abbiamo provato tutte le modalità multiplayer, Redsec, e le numerose personalizzazioni. In sintesi, ci siamo concentrati su ogni aspetto del titolo per comprendere al meglio uno degli FPS più ambiziosi della storia dei videogiochi e, dopo quasi due mesi, abbiamo tirato le somme. In questo articolo, condividiamo con voi tutto ciò che è Battlefield 6, un gioco che, a nostro avviso, rappresenta esattamente ciò che questo genere attendeva da tempo
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Abbiamo messo alla prova il drone Antigravity A1 capace di riprese in 8K a 360° che permette un reframe in post-produzione ad eliche ferme. Il concetto è molto valido, permette al pilota di concentrarsi sul volo e le manovre in tutta sicurezza e decidere con tutta tranquillità come gestire le riprese. La qualità dei video, tuttavia, ha bisogno di uno step in più per essere competitiva
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-05-2009, 12:43   #1
Federicoat
Member
 
Iscritto dal: Jan 2008
Messaggi: 34
Registrazione click del mouse avvenuti sul desktop

Ciao a tutti,
ho un piccolo problema. Mi è stato richiesto di valutare la possibilità di monitorare (scrivere un file di log) i click del mouse avvenuti su delle porzioni del desktop (sistema operativo windows). Una specie di mouse logger.

Es: Ho una sbarra delle applicazioni nella parte alta del desktop da monitorare e in base a dove avvine in click in questa sbarra scriverlo in un file.

La mia idea sarebbe quella di creare un windows service. Questo programma deve funzionare sempre e deve avviarsi in automatico all'avvio di windows. In poche parole deve essere totalmente trasparente all'utente.

Secondo voi è possibile? Avete qualche idea o qualche consiglio da darmi.

Qualsiasi linguaggi di programmazione va bene.

Grazie a tutti.
Federicoat è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2009, 14:29   #2
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
Qui troverai abbastanza informazioni da mettere insieme qualcosa, posto che tu abbia qualche conoscenza (anche minima) di C#.
http://www.codeproject.com/KB/cs/globalhook.aspx
Se vuoi filtrare i click puoi usare GetForegroundWindow per determinare qual'è la finestra che l'utente sta visualizzando in maniera tale da determinare a quale processo appartiene.

Ultima modifica di !k-0t1c! : 13-05-2009 alle 14:37.
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2009, 15:01   #3
Federicoat
Member
 
Iscritto dal: Jan 2008
Messaggi: 34
Quote:
Originariamente inviato da !k-0t1c! Guarda i messaggi
Qui troverai abbastanza informazioni da mettere insieme qualcosa, posto che tu abbia qualche conoscenza (anche minima) di C#.
http://www.codeproject.com/KB/cs/globalhook.aspx
Se vuoi filtrare i click puoi usare GetForegroundWindow per determinare qual'è la finestra che l'utente sta visualizzando in maniera tale da determinare a quale processo appartiene.
Grazie mille per la risposta.... purtroppo in C# non ho esperienza ma dovrei riuscire a cavarmela con le conoscenze di altri linguaggi (almeno spero). Adesso come adesso mi urgeva capire se era fattibile farlo e con che tempi...
Federicoat è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2009, 16:43   #4
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da Federicoat Guarda i messaggi
ho un piccolo problema. Mi è stato richiesto di valutare la possibilità di monitorare (scrivere un file di log) i click del mouse avvenuti su delle porzioni del desktop (sistema operativo windows). Una specie di mouse logger.
Mouse Logger ? Usa VB e la libreria API :
Codice:
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Integer
E' semplice, ti faccio un breve esempio WinForm ( ma puoi portarlo facilmente su un WinService... ) :

Dichiarazioni generali :

Codice:
    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Integer

    Private Const vKeyPSinistro = 1 'Click Sinistro
    Private mouseDownSn As Boolean = False

    Private Const vKeyPDestro = 2 'Click Destro
    Private mouseDownDx As Boolean = False

    Private Const vKeyPCentrale = 4 'Click Centrale
    Private mouseDownCn As Boolean = False

    'Coordinate al momento del MouseDown
    Private mouseDownX As Integer = 0
    Private mouseDownY As Integer = 0
    'Coordinate Mouse Timer
    Private mouseX As Integer = 0
    Private mouseY As Integer = 0
Nel Timer, con intervallo opportunamente basso ( diciamo 10 ) :

Codice:
        mouseX = Cursor.Position.X
        mouseY = Cursor.Position.Y

        'Click Sinistro
        If GetAsyncKeyState(vKeyPSinistro) And mouseDownSn = False Then
            mouseDownSn = True
            mouseDownX = mouseX
            mouseDownY = mouseY
        End If
        If GetAsyncKeyState(vKeyPSinistro) = 0 Then
            If mouseDownSn = True And mouseX = mouseDownX And mouseY = mouseDownY Then
                'Click Sinistro accettato nel punto X,Y -> gestisco l'evento
                ListBox1.Items.Add(Now & " - Click Sinistro in : X[" & mouseX & "]-Y[" & mouseY & "]")
            End If
            mouseDownSn = False
        End If

        '...
        '...
E così via per gestire Click Destro e Centrale ( pulsante centrale o Click su rotella ). Nel mio caso ho deciso deliberatamente di escludere dal Log ( che effettuo aggiungendo una voce ad una ListBox, ma puoi fare l'append di una stringa in un file di Log tipo testo ) i casi in cui le coordinate del mouseDown NON corrispondono a quelle del mouseUp.
In ogni caso, il Log registra Data/Ora/Coordinate Desktop X ed Y/Click-Sn-Dx-Centrale.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2009, 16:47   #5
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Occhio alla sbarra ci finisce chi lo usa e chi l'ha scritto.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2009, 17:04   #6
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
@MarcoGG, la tua soluzione per quanto possa funzionare è altamente inefficiente e consuma risorse della CPU in quantità comparata con i global hooks, fatti apposta per il proposito di Federicoat ed almeno altrettanto semplici da usare.
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2009, 17:32   #7
Federicoat
Member
 
Iscritto dal: Jan 2008
Messaggi: 34
Grazie a tutti... purtroppo su vb c# o c++ non ho molta conoscenza.
Non devo fare questo programmino per svago ma per lavoro.
Ovviamente mi serve qualcosa che non consumi troppe risorse e che non interferisca con gli altri processi. Qualcosa che catturi il click del mouse ovunque si trovi....

ho trovato questo codice per iniziare... qualcuno mi sa dare un feedback?

http://blogs.msdn.com/toub/archive/2...03/589468.aspx

Dimenticavo, una cosa è fondamentale... questo programma deve lavorare in background.. in poche parole deve essere un processo o qualcosa di simile...

Ultima modifica di Federicoat : 13-05-2009 alle 17:40.
Federicoat è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2009, 10:11   #8
Federicoat
Member
 
Iscritto dal: Jan 2008
Messaggi: 34
Ragazzi ho bisogno di aiuto...
Ho provato a copiare e a compilare sta classe ma nulla da fare... non riesco a far partire nulla... vi prego aiutatemi... per lavorare con c# ho scaricato Microsoft visual c# express edition.

Codice:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.InteropServices;

class InterceptMouse
{
    private static LowLevelMouseProc _proc = HookCallback;
    private static IntPtr _hookID = IntPtr.Zero;

    public static void Main()
    {
        _hookID = SetHook(_proc);
        Application.Run();
        UnhookWindowsHookEx(_hookID);
    }

    private static IntPtr SetHook(LowLevelMouseProc proc)
    {
        using (Process curProcess = Process.GetCurrentProcess())
        using (ProcessModule curModule = curProcess.MainModule)
        {
            return SetWindowsHookEx(WH_MOUSE_LL, proc,
                GetModuleHandle(curModule.ModuleName), 0);
        }
    }

    private delegate IntPtr LowLevelMouseProc(int nCode, IntPtr wParam, IntPtr lParam);

    private static IntPtr HookCallback(
        int nCode, IntPtr wParam, IntPtr lParam)
    {
        if (nCode >= 0 &&
            MouseMessages.WM_LBUTTONDOWN == (MouseMessages)wParam)
        {
            MSLLHOOKSTRUCT hookStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT));
            Console.WriteLine(hookStruct.pt.x + ", " + hookStruct.pt.y);
        }
        return CallNextHookEx(_hookID, nCode, wParam, lParam);
    }

    private const int WH_MOUSE_LL = 14;

    private enum MouseMessages
    {
        WM_LBUTTONDOWN = 0x0201,
        WM_LBUTTONUP = 0x0202,
        WM_MOUSEMOVE = 0x0200,
        WM_MOUSEWHEEL = 0x020A,
        WM_RBUTTONDOWN = 0x0204,
        WM_RBUTTONUP = 0x0205
    }

    [StructLayout(LayoutKind.Sequential)]
    private struct POINT
    {
        public int x;
        public int y;
    }

    [StructLayout(LayoutKind.Sequential)]
    private struct MSLLHOOKSTRUCT
    {
        public POINT pt;
        public uint mouseData;
        public uint flags;
        public uint time;
        public IntPtr dwExtraInfo;
    }

    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    private static extern IntPtr SetWindowsHookEx(int idHook,
        LowLevelMouseProc lpfn, IntPtr hMod, uint dwThreadId);

    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool UnhookWindowsHookEx(IntPtr hhk);

    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode,
        IntPtr wParam, IntPtr lParam);

    [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    private static extern IntPtr GetModuleHandle(string lpModuleName);
}
Federicoat è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2009, 10:46   #9
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
PM per Federicoat
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2009, 10:54   #10
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
Non so se hai letto bene l'articolo di cui ti avevo dato il link, ma in cima è disponibile il download di alcuni sorgenti, nello specifico: http://www.codeproject.com/KB/cs/glo...lhook2_src.zip
(richiede registrazione)

Se scarichi quello avrai i sorgenti di una libreria chiamata Gma.UserActivityMonitor che - una volta aggiunta tra le dipendenze del tuo progetto in Visual C# - non richiede nient'altro che la definizione di un EventHandler per l'evento che vuoi gestire e poi l'aggiunta dell'evento in questo modo:
Codice:
HookManager.MouseClick += TUO_EVENT_HANDLER;
e supporta MouseClick, MouseMove e tanti altri eventi (compresi quelli della tastiera).
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2009, 10:59   #11
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da !k-0t1c! Guarda i messaggi
@MarcoGG, la tua soluzione per quanto possa funzionare è altamente inefficiente e consuma risorse della CPU in quantità comparata con i global hooks, fatti apposta per il proposito di Federicoat ed almeno altrettanto semplici da usare.
"Per quanto possa funzionare" non è certo l'ultima ruota del carro, direi. In quanto al fatto che sia "altamente inefficiente", vorrei averne una dimostrazione pratica e tangibile. A fare i sapientoni come te siamo capaci tutti. Che non sia il massimo dell'efficienza, e che i low level hooks siano una scelta migliore, ne posso convenire, sta di fatto che se Federicoat avesse da subito usato il mio metodo a quest'ora avrebbe già finito da un pezzo, invece sta sbattendo la testa con classi per lui poco comprensibili e che non riesce manco a compilare...
@ Federicoat : ovviamente se preferisci studiare il metodo dei Global Hooks in C#, hai la mia benedizione. ...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2009, 11:14   #12
Federicoat
Member
 
Iscritto dal: Jan 2008
Messaggi: 34
Quote:
Originariamente inviato da !k-0t1c! Guarda i messaggi
Non so se hai letto bene l'articolo di cui ti avevo dato il link, ma in cima è disponibile il download di alcuni sorgenti, nello specifico: http://www.codeproject.com/KB/cs/glo...lhook2_src.zip
(richiede registrazione)

Se scarichi quello avrai i sorgenti di una libreria chiamata Gma.UserActivityMonitor che - una volta aggiunta tra le dipendenze del tuo progetto in Visual C# - non richiede nient'altro che la definizione di un EventHandler per l'evento che vuoi gestire e poi l'aggiunta dell'evento in questo modo:
Codice:
HookManager.MouseClick += TUO_EVENT_HANDLER;
e supporta MouseClick, MouseMove e tanti altri eventi (compresi quelli della tastiera).
Ciao, ho guardato il codice da te proposto ma m i è troppo difficile creare le dipendenze nel mio progetto, però ho scaricato sempre da codeproject un altro codice
http://www.codeproject.com/KB/cs/globalhook.aspx
(Mouse Hook version 1)
E' perfetto per le mie esigenze, ma l'unico problema è che non vorrei che mi venisse mostrato il form... cioè, io ho solo bisogno di loggare in modo stealth senza mostrare il form dell'applicazione... c'è qualcuno che mi suggerisce come eliminare il form, senza smontare l'event handling che mi sembra perfetto...
Poi mi gestisco da solo il logging su file, quello non è un problema
Federicoat è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2009, 11:20   #13
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
"Per quanto possa funzionare" non è certo l'ultima ruota del carro, direi. In quanto al fatto che sia "altamente inefficiente", vorrei averne una dimostrazione pratica e tangibile. A fare i sapientoni come te siamo capaci tutti. Che non sia il massimo dell'efficienza, e che i low level hooks siano una scelta migliore, ne posso convenire, sta di fatto che se Federicoat avesse da subito usato il mio metodo a quest'ora avrebbe già finito da un pezzo, invece sta sbattendo la testa con classi per lui poco comprensibili e che non riesce manco a compilare...
@ Federicoat : ovviamente se preferisci studiare il metodo dei Global Hooks in C#, hai la mia benedizione. ...
Promuovere il codice migliore e non la scelta più facile (che invece è spesso la più stupida) ma è una questione di buon senso. Non solo la conoscenza acquisita nel processo per arrivare ad utilizzare il codice che gli ho consilgiato (che tra l'altro richiede 10 righe e due click per funzionare, e non di più) gli tornerà utile in futuro, ma gli eviterà di scrivere cattivo codice.
La soluzione che gli hai proposto è comunque inaccettabile perché Federicoat ha specificato che gli serve qualcosa di leggero, e un loop che ogni volta fa diverse chiamate tramite P/Invoke è tutto meno che leggero. Nella programmazione non conta solo il risultato, contano molto anche i passaggi, e sembra che tu non sia disposto a recepire questo concetto; pertanto finché posterai soluzioni molto discutibili continuerò a criticarle come debito (vd. thread stringa/hex), astenendomi tuttavia da un dibattito che reputo sterile e limitandomi a mostrare a chi fa la domanda perché dovrebbe evitare l'uso della tua risposta.
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2009, 11:23   #14
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
Quote:
Originariamente inviato da Federicoat Guarda i messaggi
Ciao, ho guardato il codice da te proposto ma m i è troppo difficile creare le dipendenze nel mio progetto, però ho scaricato sempre da codeproject un altro codice
http://www.codeproject.com/KB/cs/globalhook.aspx
(Mouse Hook version 1)
E' perfetto per le mie esigenze, ma l'unico problema è che non vorrei che mi venisse mostrato il form... cioè, io ho solo bisogno di loggare in modo stealth senza mostrare il form dell'applicazione... c'è qualcuno che mi suggerisce come eliminare il form, senza smontare l'event handling che mi sembra perfetto...
Poi mi gestisco da solo il logging su file, quello non è un problema
Imposta la proprietà visible del form su false, ed eventualmente anche ShowInTaskbar su false; lo puoi fare aprendo l'editor visuale del form da Visual C# e cercando tra le proprietà.
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2009, 11:40   #15
Federicoat
Member
 
Iscritto dal: Jan 2008
Messaggi: 34
Quote:
Originariamente inviato da !k-0t1c! Guarda i messaggi
Imposta la proprietà visible del form su false, ed eventualmente anche ShowInTaskbar su false; lo puoi fare aprendo l'editor visuale del form da Visual C# e cercando tra le proprietà.
La proprietà ShowInTaskbar l'ho trovata mentre visible no.
Per quanto riguarda la compilazione delle classi alla fine sono riuscito a farla correttamente. Quella che vi ho incollato prima non riuscivo a compilarla perchè sbagliavo a creare il progetto.
Cmq la mia NON esperienza in c# deriva dal fatto che io nella vita faccio l'analista programmatore Oracle, ma, lavorando in una ditta piccola ogni tanto ti capita di dover fare qualcosa fuori dal tuo lavoro e che in università non hai fatto.
Federicoat è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2009, 11:51   #16
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
My bad, mi sono dimenticato che Form non ha Visible.
Ad ogni modo puoi fare facilmente così: apri l'editor visuale, fai doppio click sullo sfondo del form, ti porterà ad una schermata di codice, all'interno dell'eventhandler per l'evento Load del form, inserisci come riga
Codice:
Hide();
e sei a posto.
E sì, capisco che sta roba rispetto ad Oracle non abbia nulla a che vedere
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2009, 12:02   #17
Federicoat
Member
 
Iscritto dal: Jan 2008
Messaggi: 34
Quote:
Originariamente inviato da !k-0t1c! Guarda i messaggi
My bad, mi sono dimenticato che Form non ha Visible.
Ad ogni modo puoi fare facilmente così: apri l'editor visuale, fai doppio click sullo sfondo del form, ti porterà ad una schermata di codice, all'interno dell'eventhandler per l'evento Load del form, inserisci come riga
Codice:
Hide();
e sei a posto.
E sì, capisco che sta roba rispetto ad Oracle non abbia nulla a che vedere

mmmm non funziona... facendo duobleClick sulla form mi porta in questa portzione di codice:
Codice:
void MainFormLoad(object sender, System.EventArgs e)
{
     Hide();
     actHook = new UserActivityHook(); // crate an instance with global hooks
     // hang on events
    actHook.OnMouseActivity+=new MouseEventHandler(MouseMoved);
    actHook.KeyDown+=new KeyEventHandler(MyKeyDown);
    actHook.KeyPress+=new KeyPressEventHandler(MyKeyPress);
    actHook.KeyUp+=new KeyEventHandler(MyKeyUp);
}
Nonostante la scritta hide(); continua a farmelo vedere... Cmq sono disposto anche ad eliminarlo... ho provato a scrivere application.run(); senza nome del form dentro ma così facendo smette di funzionare tutto...

Codice:
public static void Main(string[] args)
{
	Application.Run(new MainForm());
}
Federicoat è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2009, 12:40   #18
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da Federicoat Guarda i messaggi
Nonostante la scritta hide(); continua a farmelo vedere... Cmq sono disposto anche ad eliminarlo... ho provato a scrivere application.run(); senza nome del form dentro ma così facendo smette di funzionare tutto...
Infatti, non funzionerà mai così.
Il modo più breve per nascondere una Form è :
-> ShowInTaskbar = false
-> Opacity = 0
Proprietà che puoi già definire nella Form a designer.
Il metodo static void Main in Program.cs lascialo stare così com'è.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2009, 12:43   #19
!fazz
Moderatore
 
L'Avatar di !fazz
 
Iscritto dal: Nov 2006
Messaggi: 21881
sostituisci hide(); con this.hide();

e cmq occhio che quello che stai creando è illegale
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX)
Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000
!fazz è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2009, 12:44   #20
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Infatti, non funzionerà mai così.
Il modo più breve per nascondere una Form è :
-> ShowInTaskbar = false
-> Opacity = 0
Proprietà che puoi già definire nella Form a designer.
Il metodo static void Main in Program.cs lascialo stare così com'è.
Già, Hide a quanto pare non ha effetto nell'evento Load, ad ogni modo confermo che se rimuovi la chiamata di Application.Run il tuo programma in sostanza non farà nulla.
Se proprio volessi eliminare il form potresti spostare la registrazione degli eventi
Codice:
actHook.OnMouseActivity+=new MouseEventHandler(MouseMoved);    actHook.KeyDown+=new KeyEventHandler(MyKeyDown);
actHook.KeyPress+=new KeyPressEventHandler(MyKeyPress);
actHook.KeyUp+=new KeyEventHandler(MyKeyUp);
nel Main seguita da un loop di questo genere:
Codice:
while(true)
{
    Application.DoEvents();
    System.Threading.Thread.Sleep(250);
}
ma non avresti particolari vantaggi salvo un minor consumo di memoria.
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando Due mesi di Battlefield 6: dalla campagna al bat...
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Lian Li si è inventata il primo a...
Amazon in raptus sconti: ogni 24 ore nov...
44 idee regalo sotto i 50€: con le offer...
Super Sconti Amazon Haul: ribassi fino a...
Cloudflare ha bloccato 416 miliardi di r...
Prezzo mai visto: POCO F7 12/256GB in su...
Svuotano tutto: super sconto su due scop...
Warner-Netflix, l'accordo riaccende le s...
6 robot al prezzo del Black Friday e non...
Russia, i cani randagi diventano hotspot...
Ogni giorno sconti nuovi: oggi iPhone 17...
Non solo Mac: anche alcuni futuri iPhone...
La costruzione del telescopio spaziale N...
HBO ha cancellato la produzione della se...
OpenAI ha pensato a una partnership (o a...
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:59.


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