Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [delphi] evento mouse in uno specifico handle

    Salve,
    sto cercando di scatenare gli eventi del mouse senza muovere il cursore, mi pare di aver capito che devo inviare il messaggio alla finestra interessata con sendmessage o postmessage ma non riesco

    al momento sposto il cursore e poi clicco, cosi:

    SetCursorPos(TP.X, TP.Y);
    sleep(30);
    mouse_event(MOUSEEVENTF_LEFTDOWN, TP.X, TP.Y, 0, 0);
    sleep(50);
    mouse_event(MOUSEEVENTF_LEFTUP, TP.X, TP.Y, 0, 0);

    per usare sendmessage da quello che ho trovato googlando dovrei fare cosi:

    SendMessage(Handle, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(TP.X, TP.Y));
    sleep(50);
    SendMessage(Handle, WM_LBUTTONUP, MK_LBUTTON, , MAKELPARAM(TP.X, TP.Y));

    ma non succede nulla

    ho provato a fare dei tentativi cosi:

    SendMessage(Handle, MOUSEEVENTF_LEFTDOWN, 0, MAKELPARAM(X, Y));
    SendMessage(Handle, MOUSEEVENTF_LEFTUP, 0, MAKELPARAM(X, Y));

    ma cosi mi kiude la finestra che gli passo l'handle e quindi eccomi qui a chiedere a chi la sa piu lunga di me, ringrazio anticipatamente

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    ciao alka scusa ma non avevo visto che avevi risposto, cmq con sendmessage su un handle di un qualcosa creato da me che sia un panel, un form o label funziona benissimo(testato con l'evento onclick), invece con un handle di un altra applicazione non funziona, strano ma vero

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da Scarpetta
    ciao alka scusa ma non avevo visto che avevi risposto, cmq con sendmessage su un handle di un qualcosa creato da me che sia un panel, un form o label funziona benissimo(testato con l'evento onclick), invece con un handle di un altra applicazione non funziona, strano ma vero
    L'handle di un'applicazione non so se ha senso utilizzarlo: tu devi ottenere l'handle dell'oggetto che subisce il clic, non quello dell'applicazione.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Originariamente inviato da Scarpetta
    ciao alka scusa ma non avevo visto che avevi risposto, cmq con sendmessage su un handle di un qualcosa creato da me che sia un panel, un form o label funziona benissimo(testato con l'evento onclick), invece con un handle di un altra applicazione non funziona, strano ma vero
    No, da WindowsNT in poi i processi non possono comunicare in questo modo. Sarebbe un mega-buco di sicurezza se un'applicazione a livello utente potesse scatenare eventi su un'altra.
    ...

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da Caiodark
    No, da WindowsNT in poi i processi non possono comunicare in questo modo. Sarebbe un mega-buco di sicurezza se un'applicazione a livello utente potesse scatenare eventi su un'altra.
    Siamo sicuri di questo?

    Io ho parecchie applicazioni - principalmente a scopo diagnostico o per il debugging di applicazioni - che ispezionano tranquillamente le "finestre" (intese nel senso più generale del termine) di altre applicazioni e inviano messaggi ai rispettivi controlli (tra cui anche un banale clic).

    In alcuni casi, si usa questo procedimento per verificare la presenza di un'altra istanza dell'applicazione e, opzionalmente, nell'inviare messaggi per "scatenare" qualcosa nell'istanza attiva.

    Il mistero si infittisce...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Ops, li blocca solo se il processo che invia il messaggio ha privilegi più bassi di quello che lo riceve Mea culpa.
    ...

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da Caiodark
    Ops, li blocca solo se il processo che invia il messaggio ha privilegi più bassi di quello che lo riceve Mea culpa.
    Ah ok, su questo sono d'accordo anche io, e in effetti - non ci ho pensato prima - penso che possa essere la probabile causa del "mancato effetto" riscontrato dall'autore della discussione.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    miiiii allora mi devo imprivileggiare
    ora vedo se ci riesco da solo senno ci vediamo in un altra discussione, intanto grazie per la vostra disponibilità

  10. #10
    Rieccomi qui,
    l'applicazione ora ce li ha i privilegi, ma il problema rimane lo stesso, seguendo il link suggerito da Alka dovrei fare cosi

    codice:
    SendMessage(Panel1.Handle, WM_LBUTTONDBLCLK, 10, 10)
    dove al posto di Panel1.Handle ci metto l'handle della finestra dove voglio che va a finire il click del mouse, però niente da fare non ci vuole proprio cliccare e comincio a pensare che non sia il parametro giusto quello che uso io.

    l'handle lo ottengo trovando la finestra per il titolo, dopodichè la modifico come voglio io in altezza e larghezza e gli assegno anche un panel come parent cosi la infilo nella mia applicazione, la finestra in questione è un istanza di mozilla firefox, all'interno c'è un gioco in flash, io il click lo devo far finire dentro a sto gioco, forse penso che devo prendere l'handle del qualcosa che riproduce il gioco all'interno della finestra e quindi ecco perche non mi clicca dandogli semplicemente l'handle della finestra, mi sa che sto cominciando a dare i numeri, c'è qualcuno che riesce a fare luce su questa questione?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.