Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Simulare pressione tasti - Problema

    Ciao a tutti ragazzi.. ho un problema...

    ho fatto un programma che simula la pressione di alcuni tasti per un gioco...


    funzionava tutto fino a ieri.. oggi stranamente.. non funziona più

    cioè se io lo uso su windows normale che ne so su notepad o altro funziona... ma se lo uso sul gioco no... ho pensato che potesse centrare qualcosa l'handle però mi chiedo perchè fino a ieri funzionava....


    non è che c'è un'altro modo per simulare la pressione di UN tasto?

    come se lo stessi premendo DAVVERO io...

    dicasi lo stesso per il mouse... devo fare in modo che venga premuto il pulsante sinistro del mouse... e funziona ovunque tranne sul gioco ....

    qualche api che mi può aiutare?

    io per la tastiera ho usato keybd_event

    e per il mouse mouse_event

    Potete darmi una mano? Grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Regolamento?
    Linguaggio?
    Codice?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    si scusa...

    comunque il linguaggio è vb6...


    il codice non ce l'ho cioè.. ho risolto il problema detto sopra ma è sorto quello della simulazione del mouse


    ho visto che si deve usare l'api sendinput

    ma su internet non ho capito nulla

    perciò non ho codice... e la mia domanda ora è:

    come si usa sendinput per simulare il click del mouse? (sinistro)

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    ma l'api che dici tu oregon è per la tastiera :S

    potrebbe andare anche bene.. ma io non sono molto pratico in quel codice... potresti spiegarmi la sintassi?

    vedi quello che io cerco è questo:

    quando io premo A... il sistema operativo riceverà un qualcosa dalla tastiera no? verrà poi interpretato dal gioco questo segnale.


    ORA....

    è possibile, fare in modo.. che tramite codice.. INVII.. lo stesso e identico comando al sistema operativo?

    ho trovato il codice per il mouse col sendinput.. e funzionava... MA, NON COL GIOCO!

    io dico.. ma perchè!? dove sbaglio? se io premo il tasto manualmente lo accetta se lo faccio da codice non fa nulla.. CHE NERVI

    Potete darmi un'aiutino ancora?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Leggi questa discussione

    http://forum.html.it/forum/showthrea...ight=Sendinput

    e dai un'occhiata agli esempi
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Quisi usa l'api sendinput... anche io l'ho usata..


    ti mostro il mio codice:


    In un modulo:

    -----------------------------
    Type MOUSEINPUT
    dx As Long
    dy As Long
    mouseData As Long
    dwFlags As Long
    dwtime As Long
    dwExtraInfo As Long
    End Type

    Type INPUT_TYPE
    dwType As Long
    xi(0 To 23) As Byte
    End Type
    ----------------

    poi:
    --------------------------------------
    Const HWND_TOPMOST = -1
    Const HWND_NOTOPMOST = -2
    Const SWP_NOACTIVATE = &H10
    Const SWP_SHOWWINDOW = &H40
    Private Declare Sub SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
    Private Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As INPUT_TYPE, ByVal cbSize As Long) As Long
    Private Const INPUT_MOUSE = 0
    Private Const INPUT_KEYBOARD = 1
    Private Const INPUT_HARDWARE = 2
    --------------------------------------------

    Public Sub ClickDaMouse()
    AppActivate ("Warrock") 'Nome Caption
    Dim intX As Integer
    Dim inputEvents(0 To 1) As INPUT_TYPE ' holds information about each event
    Dim mouseEvent As MOUSEINPUT ' temporarily hold mouse input info

    ' Load the information needed to synthesize pressing the left mouse button.
    mouseEvent.dx = 0 ' no horizontal movement
    mouseEvent.dy = 0 ' no vertical movement
    mouseEvent.mouseData = 0 ' not needed
    mouseEvent.dwFlags = MOUSEEVENTF_LEFTDOWN ' left button down
    mouseEvent.dwtime = 0 ' use the default
    mouseEvent.dwExtraInfo = 0 ' not needed
    ' Copy the structure into the input array's buffer.
    inputEvents(0).dwType = INPUT_MOUSE ' mouse input
    CopyMemory inputEvents(0).xi(0), mouseEvent, Len(mouseEvent)
    intX = SendInput(2, inputEvents(0), Len(inputEvents(0))) ' place the events into the stream
    End Sub
    __________________________________________________ __

    Public Sub LeaveDaMouse()
    AppActivate ("Warrock") 'Nome Caption

    Dim intX As Integer
    Dim inputEvents(0 To 1) As INPUT_TYPE ' holds information about each event
    Dim mouseEvent As MOUSEINPUT ' temporarily hold mouse input info

    ' Do the same as above, but for releasing the left mouse button.
    mouseEvent.dx = 0 ' no horizontal movement
    mouseEvent.dy = 0 ' no vertical movement
    mouseEvent.mouseData = 0 ' not needed
    mouseEvent.dwFlags = MOUSEEVENTF_LEFTUP ' left button up
    mouseEvent.dwtime = 0 ' use the default
    mouseEvent.dwExtraInfo = 0 ' not needed
    ' Copy the structure into the input array's buffer.
    inputEvents(1).dwType = INPUT_MOUSE ' mouse input
    CopyMemory inputEvents(1).xi(0), mouseEvent, Len(mouseEvent)

    ' Now that all the information for the 2 input events has been placed
    ' into the array, finally send it into the input stream.
    intX = SendInput(2, inputEvents(0), Len(inputEvents(0))) ' place the events into the stream

    End Sub
    -----------------------------------------

    Alla fine poi per chiamarlo chiamo le 2 sub

    però col gioco non funziona ... non è che devo settare il focus sul gioco? se si.. COME SI FA?



    Grazie Mille Dell'aiuto! Sto uscendo pazzo...

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    1) Mancano le definizioni delle due costanti

    MOUSEEVENTF_LEFTDOWN
    MOUSEEVENTF_LEFTUP

    2) Assicurati che l'AppActivate funzioni con quel titolo

    3) Se non funziona, gioca normalmente e senza aiuti da programma ... (capito :Virus: ?)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    ho fatto le 2 costanti... ora ho visto l'appactivatee sembra essere ciò che ci vuole.. ma alla fine...


    >_<

    vabeh tanto mi sto allenando a mani mie, sto diventando pro XD... anche se nn capisco cosa hanno cambiato nel gioco >_<

    vabeh dai... credo che ormai il problema nn si possa risolvere...


    grazie mille dell'aiuto a tutti ciao Ganton-AHEM... Oregon ^^

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.