How to make fortran be able to press "enter" key

How to make fortran be able to press "enter" key

Dear all,

I would like to know how to let fortran read " enter " key.

Regards

 

3 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.
to READ the keyboard:
Use the following in a new console project to demonstrate it:
PROGRAM READENTER
    USE DFLIB
    CHARACTER(1) MYINPUT
    INTEGER RESULT
    DO WHILE (.TRUE.)
        MYINPUT=GETCHARQQ()
        IF(MYINPUT.EQ.CHAR(13) ) PRINT *, 'CARRIAGE RETURN'
        IF(MYINPUT == "X".OR.MYINPUT == "x") EXIT
        END DO
    
    END PROGRAM

However, your post title mentions 'press' the Enter key.
In that case, are you wanting to send an 'enter key has been pressed' message from within
your program to some part of your program or to some other program which must act on it, without actually
having to physically press the ';Enter' key?

 

Try this program, which posts a 'WM_KEYDOWN' message to the console when the 'E' key is pressed and after the 'E' (or 'e') is displayed
in the console window. The message results in GETCHARQQ picking up the 'Enter' message and subsequently displaying 'CARRIAGE RETURN'.

PROGRAM READENTER
    use dfwin
    USE DFLIB
    CHARACTER(1) MYINPUT
    INTEGER result, hwnd
 ! Give your console window a nice title and add a short delay to let the title take   
    result=SetConsoleTitle('My Enter program'c)
    call sleep(40)
 ! Get the handle to the console window that has your title
   hwnd=FindWindow('ConsoleWindowClass'c,'My Enter program'c)
! Enter the loop to test what is coming in from the keyboard.
! press some keys to exercise the program, including the 'Enter' key...
    DO WHILE (.TRUE.)
        MYINPUT=GETCHARQQ()
        IF(MYINPUT.EQ.CHAR(13) ) PRINT *, 'CARRIAGE RETURN'
        IF(MYINPUT == "X".OR.MYINPUT == "x") EXIT    ! To exit the infinite loop when required
! to test the PostMessage method, press the 'E' key to send an 'Enter' message
        IF(MYINPUT == "E".OR.MYINPUT == "e") then 
! Send a message to the console window's message queue that the 'Enter' key has been pressed
! use PostMessage instead of SendMessage as Postmessage returns immediately
! 13 is the virtual key code for the 'Enter' key and it is put into the low order bits of the WPARAM. 
! 28 is the scan key code for it and it is put into the high order bits of the LPARAM.
! 0 is the repeat code and is put into nthe low order bits of the LPARAM
           RESULT=POSTMESSAGE(hwnd, WM_KEYDOWN,MAKEWPARAM(13,0),MAKELPARAM(0,28))
        ENDIF
        PRINT *,MYINPUT
    
    END DO
    
    END PROGRAM
    

 

Leave a Comment

Please sign in to add a comment. Not a member? Join today