Página 1 de 1

mover o mouse

Enviado: 08 Mar 2013 13:15
por Abel
Ola pessoal, estou usando esta rotina abaixo para mover o mouse em uma posicao especifica da tela, mas o que eu precisava mesmo, é mover o mouse 1 linha abaixo da posicao atual., sera que alguem sabe como fazer ?

Abracos

Código: Selecionar todos

#pragma BEGINDUMP

#include <windows.h>
#include <windef.h>

VOID CENTRALIZA_MOUSE();
HB_FUNC ( CENTRALIZA_MOUSE )
{                  //  col lin
   SetCursorPos(450,280);
}   

#pragma ENDDUMP

mover o mouse

Enviado: 08 Mar 2013 19:59
por Pablo César
Abel, você diz que quer o ponteiro do mouse se movimente uma linha a mais da posição Atual. Ai vem as dúvidas: quando você diz "posição atual" seria do ponteiro onde o mouse estiver posicionado ou você quis dizer a posição do cursor ? Claro tudo isto imagino que é para Harbour/console. Mas o código C que você postou o mouse irá se movimentar em pixels o que se sub-entende que essa é uma rotina para modo gráfico.

mover o mouse

Enviado: 09 Mar 2013 00:40
por Abel
ola, entao é harbour modo console mesmo, e ele realmente se movimenta, o problema é justamente este, os pixels.

eu quero move-lo, uma linha para baixo da posicao atual do mouse, mas nao sei como saber qual é a posicao que ele se encontra par mandar ele mover alguns pixels para baixo.

tentei fazer umas mudancas, mas dava erro de compilacao.

Abraços, grato,
ABEL

mover o mouse

Enviado: 09 Mar 2013 12:48
por Pablo César
Olha Abel, eu não uso Harbour em modo console, então não tenho como testar pra valer. Por isso gostaria que você me mostrasse o seu código ou faça um código exemplo pra eu testar.

Eu comecei mas não sei se funcionaria isto:

Código: Selecionar todos

Function Pula()
Local nRow:=MROW(), nCol:=MCOL()

MSETPOS( nRow+1, nCol )
MSETCURSOR(.T.)
Return .T.

mover o mouse

Enviado: 14 Mar 2013 12:52
por Abel
ola, Pablo,

aparentemente o codigo é este, mas ele nao tem nenhum efeito na tela,

mas o mouse funciona normalmente nos menus.

sera que tenho que linkar alguma lib em especial ?

Abracos,
ABEL

mover o mouse

Enviado: 14 Mar 2013 13:49
por Abel
ola, apos pesquisas dos comando do "c++" na net, e analisando a rotina movemouse que vi neste mesmo forum, consegui criar uma rotina que sobe ou desce o mouse a partir da posicao q ele se encontra.

segue:

Código: Selecionar todos

#pragma BEGINDUMP

#include <windows.h>
#include <windef.h>

VOID MoveMouse();
HB_FUNC( MOVEMOUSE )
 {
    RECT TrayRect;
    GetWindowRect(FindWindowEx(FindWindow("Shell_TrayWnd",NULL),0,"TrayNotifyWnd",NULL),&TrayRect);

    POINT Cursor;
    GetCursorPos(&Cursor);

    while(TrayRect.left+11 < TrayRect.right) {
        SetCursorPos(TrayRect.left+10,TrayRect.top+12);
        Sleep(1);
        TrayRect.left += GetSystemMetrics(SM_CXSMICON)+2;
    }
    SetCursorPos(Cursor.x,Cursor.y);
}


VOID SOBE_MOUSE();
HB_FUNC ( SOBE_MOUSE )
{           //  col lin
   POINT Cursor;
   GetCursorPos(&Cursor);
   
   Cursor.y = Cursor.y-GetSystemMetrics(SM_CYSMICON)-35;
   SetCursorPos(Cursor.x,Cursor.y);

   /////  SetCursorPos(450,280);
}   


VOID DESCE_MOUSE();
HB_FUNC ( DESCE_MOUSE )
{           //  col lin
   POINT Cursor;
   GetCursorPos(&Cursor);
   
   Cursor.y = Cursor.y+GetSystemMetrics(SM_CYSMICON)+10;
   SetCursorPos(Cursor.x,Cursor.y);

   /////  SetCursorPos(450,280);
}   

#pragma ENDDUMP

mover o mouse

Enviado: 21 Mar 2013 17:11
por Paulo Pereira
Entao pessoal.. pegando carona aqui,, estou perdendo clientes por causa do mouse,
e por nao ser aquela telinha bonita do windows...
eu uso modo console...coloquei esses comandos

ANNOUNCE HB_GT_SYS
REQUEST HB_GT_WIN_DEFAULT // tela grafica
REQUEST HB_GT_WVT_DEFAULT // tela grafica
HB_GTInfo( HB_GTI_ALTENTER, .T. ) * Toggles Alt+Enter as full screen switch (HB_GTInfo( HB_GTI_MAXIMIZED, .T. ) * Get/Set Window's Maximized status (


entao a tela fica grafica e tem um mouse, mas como fazer para que ele navegue/selecione as opcoes de menu ?

Se tiver uma tela com varios get. é possivel clicar uma get especifico ?

Obrigado

mover o mouse

Enviado: 22 Mar 2013 08:38
por asimoes
Olá,

Com xHarbour:

SET EVENTMASK TO INKEY_ALL

ou

Com Harbour:

SET( _SET_EVENTMASK, INKEY_ALL )

mover o mouse

Enviado: 22 Mar 2013 23:14
por Paulo Pereira
ok funciona..
mas senti 2 problemas:

1 -estando dentro dos gets , nao tenho opcao, copia/cola

2- estando num sub menu , parado em MENU TO vopcao, nao tem como clicar
em outro menu, ou no menu anterior, e jogar o foco para aquela area...

mover o mouse

Enviado: 23 Mar 2013 06:04
por Pablo César
Paulo Pereira escreveu:mas senti 2 problemas:

1 -estando dentro dos gets , nao tenho opcao, copia/cola
Paulo, modo console por natureza, não possui os mesmos recursos que a programação GUI (for Windows) nos traz. É dizer, essa questão de copiar/colar nos GETs ou telas não possui na sua natureza em modo console. Você mesmo deve implementar funções para tais recursos. O que eu acho uma total perdida de tempo, passe logo a usar bibliotecas gráficas que tem maiores e melhores recursos.
Neste tópico você vai ter como referência para implementação: https://pctoledo.org/forum/viewto ... 440#p72440

Outra forma mais prática e que vem do Windows mas o programa precisa estar em modo janelado (não em tela cheia) e que pode ser utilizado. No entanto requer também que o atalho que abre a sua aplicação esteja devidamente configurada. Veja este outro tópico: https://pctoledo.org/forum/viewto ... 811#p79811
2- estando num sub menu , parado em MENU TO vopcao, nao tem como clicar
em outro menu, ou no menu anterior, e jogar o foco para aquela area...
Tudo depende como são elaborado esses menu e sub-menus. Talvez você não tenha conhecido ou não lembre. Mas o MiroMenu é um ótimo exemplo para conseguir esse efeito de navegar entre menus e sub-menus. O Miro, é um gerador de aplicativos mas que era pago, não sei dizer se ainda estão comercializando. De todas formas, postei um exemplo simples recém gerado que irá dar uma boa ideia de como é composto os menus no Miro, podendo você reproduzir no Harbour. Veja aqui para download do exemplo do Miro_Menu, espero que goste.