Pagina 3 di 3 primaprima 1 2 3
Visualizzazione dei risultati da 21 a 28 su 28
  1. #21
    CyberPro, quello che dici mi sembra molto utile, ho provato a fare come hai detto ma non ho ottenuto nessun risultato, ho scritto qualche cosa del genere:


    HWND windowHandle = FindWindow(0, "test.txt - Blocco note");

    if(windowHandle == NULL)
    cout << "not found";

    SendMessage(windowHandle, WM_KEYDOWN, 'a', 1L);



    con lo scopo di mandare la lettera 'a' al blocco note...cosa ho sbagliato? cosa e' l'ultimo parametro del SendMessage?

    grazie

  2. #22
    Occhio: il wParam di WM_KEYDOWN è un virtual-key code, non un normale carattere ASCII; i virtual-key codes non corrispondono esattamente ai caratteri ASCII, perché non devono mappare solo lettere e simboli, ma anche tasti funzione (e, soprattutto, molti simboli sulla tastiera non sono presenti); i virtual-key codes non fanno distinzione tra lettere maiuscole e minuscole (in effetti sulla tastiera ci sono solo lettere maiuscole) e i codici usati nell'ASCII per rappresentare le lettere minuscole qui sono impiegati per altri scopi. Tutto questo per dire che non devi inviare lettere minuscole, ma maiuscole perché vengano riconosciute correttamente. Quanto alla funzione dell'lParam, in WM_KEYDOWN si tratta di un campo di bit che contiene informazioni di vario genere sulla pressione del tasto; per ulteriori informazioni ti rimando alla MSDN (guarda sotto WM_KEYDOWN).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #23
    Originariamente inviato da MItaly
    Non ho mai lavorato in assembly, ma credo che sotto Windows (specialmente la famiglia NT) non sia possibile "sintetizzare" la pressione di un tasto semplicemente usando interrupt, perché in molti casi Windows parla direttamente con l'hardware, bypassando alcune routine del BIOS.
    E' possibile simulare la pressione di un tasto da consolle sotto windows...
    Naturalmente, intendevo, la pressione è limitata al prompt (il che nn ha senso)
    Experience is what you get when you don’t get what you want

  4. #24
    Credo che funzionerebbe solo compilando per DOS.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #25
    si
    Experience is what you get when you don’t get what you want

  6. #26
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    16
    Originariamente inviato da .::HauXbands::.
    CyberPro, quello che dici mi sembra molto utile, ho provato a fare come hai detto ma non ho ottenuto nessun risultato, ho scritto qualche cosa del genere:


    HWND windowHandle = FindWindow(0, "test.txt - Blocco note");

    if(windowHandle == NULL)
    cout << "not found";

    SendMessage(windowHandle, WM_KEYDOWN, 'a', 1L);



    con lo scopo di mandare la lettera 'a' al blocco note...cosa ho sbagliato? cosa e' l'ultimo parametro del SendMessage?

    grazie
    Incuriosito da quello che mi hai detto ho provato anche io :master: ed in effetti hai ragione!
    Il motivo è il seguente:
    Hai inviato il messaggio alla finestra di blocco note ma in realtà l'handle che si occupa di inviare i messaggi è il campo edit! (che è un controllo della finestra)
    Quindi fai in questo modo:


    HWND wnd = FindWindow(NULL,"Senza nome - Blocco note");
    HWND ctrl = GetDlgItem(wnd,15);

    SendMessage(ctrl,WM_CHAR,'a',0);


    Prima ci catturiamo l'handle della finestra, poi ci catturiamo il controllo edit (Dai per buono che è 15 ) e gli inviamo il messaggio!
    Ora dovrebbe funzionare, fammi sapere

  7. #27
    giusto! complimenti per la soluzione, nn ci sarei mai arrivato! la cosa e' interessante, anche se mi scoraggia al quanto: finche' faccio le prove con il file di testo tutto ok! pultroppo il programma a cui voglio inviare la pressione di un tasto e' ben divero, e nn ha una box dove editare il testo...

    vorrei quindi sapere che tipo di caratteristiche deve avere tale applicazione, mi e' stato chiesto se questa
    E' una normale applicazione Win32 con GUI
    ... be' in verita' nn so se lo e', a fini di chiarezza mi tocca scoprire le carte, il programma che vorrei controllare e' guitar rig 2 ... che con la pressione di determinati tasti(definiti da me) esegue certe azioni(definite da me) tipo cambio di parametri, on/off di effetti etc...

    (alla fin fine ho raccontato la storia della mia vita...nn e' stato poi tanto difficile... eh eh)

    scoraggiato quindi? direi proprio di si, ho provato ben due strade per risolvere un problema che credevo nn avesse soluzinone, e forse nn ce l'ha...mii quanto pessimisssmo...possibile nn ci sia un modo di simulare un ingresso da tastiera a questa applicazione?

    aspetto qualche commento sul sendMessage e poi penso sia il caso di postare il primo prototipo che feci, quello con il SendInput...

  8. #28
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    16
    In effetti.. il programma non sembra proprio una normale finestra... Potrebbe utilizzare le DirectX come anche no... se così fosse...è un po un casino :master:

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.