Jump to content
Fórum Script Brasil
  • 0

Simulação de tecla pressionada no Qbasic.


Question

Bom dia.
Gostaria de saber se é possível haver um acionamento de uma tecla, feito automaticamente por um programa em "Qbasic", e como seria essa linha de comando.
Eu tenho o programa SNARF.EXE, que executo antes do Qbasic, no MS-DOS. O SNARF.EXE é um programa que fica residente na memória, e a função dele é a captura da tela, criando uma imagem ".BMP". Ele fica a espera do acionamento das teclas combinadas "ALT + S" para a captura. Eu preciso capturar milhares de telas "prontas" ao longo do trabalho feito por um programa ".BAS" no Qbasic. O programa ".BAS" roda sem problemas com a tecla "ALT" travada (constantemente acionada); assim basta que a tecla "S" seja acionada para que a tela seja capturada pelo SNARF.EXE. Se o próprio programa ".BAS" não realizar o acionamento da tecla "S", eu tenho que ficar por muitas horas no teclado, acionando essa tecla, sempre que a tela estiver "pronta", e isso ocorre a cada 6 ou 10 segundos, ininterruptamente.
Como, então, eu programo o arquivo ".BAS" para ele executar essa "teclada", que seja válida para o SNARF.EXE aceitar como sendo feito no teclado físico, e assim capturar a tela.
Espero que ainda tenha alguém recebendo comentários aqui, e que possa responder, me informando como eu resolvo essa questão.
Obrigado.

Edited by wrcasasanta
Linhas qubradas pelo bloco de notas onde copiei para colar aqui. A pergunta apareceu, também, com as linhas quebradas.
Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Olá, pessoal.

Não sei se alguém visualizou minha postagem acima, mas, mesmo não havendo respostas, venho informar que não necessito mais dessa "teclada", pois resolvi conseguindo muito mais que isso.

Eu consegui desenvolver uma captura de tela pelo próprio programa do Qbasic.

Depois de muito trabalho em entender a estrutura de imagens, elaborei esse programinha de captura de tela, salvando-a no formato BMP, que é o mais fácil de ser entendido e programado:

 

REM CAPTURA DE TELA POR UM PROGRAMA DO QBASIC.

DIM p AS STRING * 1

REM Cabecalho de arquivo BMP (640x480 16 cores) já convertido em decimais
DATA 66,77,118,88,2,0,0,0,0,0,118,0,0,0,40,0,0,0,128,2
DATA 0,0,224,1,0,0,1,0,4,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,0
DATA 0,0,0,168,0,0,168,168,0,0,0,0,168,0,168,0,168,0,0,84
DATA 168,0,168,168,168,0,84,84,84,0,252,84,84,0,84,252,84,0,252,252
DATA 84,0,84,84,252,0,252,84,252,0,84,252,252,0,252,252,252,0

REM Dimensiona "s" pelo tamanho do cabecalho
DIM s(118) AS INTEGER

FOR i = 1 TO 118
READ s(i)
NEXT i

CLS : SCREEN 12

REM Cria uma tela para ser capturada
FOR i = 1 TO 300
a = INT(RND * 640)
b = INT(RND * 480)
c = INT(RND * 640)
d = INT(RND * 480)
cor = INT(RND * 16)
LINE (a, b)-(c, d), cor
NEXT i

REM Inicia a criacao do arquivo BMP de nome "TELA0001.BMP"
OPEN "C:\TELA0001.BMP" FOR BINARY AS #1

REM Cria o cabecalho
FOR i = 1 TO 118
p = CHR$(s(i)): REM O "PUT" deve enviar o codigo ASCII do valor do dado
PUT #1, i, p
NEXT i

REM Para iniciar dados da imagem no ponto imediatamente apos o cabecalho
l = 119

REM Transfere valores de cores de cada pixel da tela ao arquivo
FOR y = 479 TO 0 STEP -1: REM O BMP varre de baixo para cima
FOR x = 0 TO 639 STEP 2
a = POINT(x, y) * 16
a = a + POINT(x + 1, y)
p = CHR$(a): REM O "PUT" deve enviar o codigo ASCII do valor de cada pixel
PUT #1, l, p
l = l + 1
NEXT x, y
REM Arquivo BMP completamente formado

REM Fecha arqivo
CLOSE #1

END

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      149178
    • Total Posts
      645430
×
×
  • Create New...