Login
Estamos no Facebook
Buscar
Quem está conectado
Há 23 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 23 Visitantes :: 2 Motores de buscaNenhum
[ Ver toda a lista ]
O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Brasília
| |
Estamos no Twitter

Nossa Comunidade

Nosso Grupo

Últimos assuntos
Top dos mais postadores
| Marcos Guedes | ||||
| hugo | ||||
| alceu11 | ||||
| Julio | ||||
| m@r<3|o | ||||
| mfelis | ||||
| Tales Ruan | ||||
| Nelson Arcas | ||||
| _batmanvfp_ | ||||
| marcio |
Minimizar , Maximizar e Restaurar
17/5/2012, 13:46 por FERNANDOMATRELLA
Olá gostaria de saber se alguem ja se deparou com uma dificuldade que eu estou tendo:
Ao minimizar …
Ao minimizar …
Comentários: 8
Estatísticas
Temos 4025 usuários registradosO último usuário registrado atende pelo nome de fhpvga
Os nossos membros postaram um total de 14399 mensagens em 2043 assuntos
Teclado x API
Página 1 de 1 • Compartilhe •
Teclado x API
Identifica a(s) tecla(s) pressionada(s):
Fonte:
news2news.com/vfp/?example=305&function=-1&xpg=14
- Código:
DO GetKeyStates
DO GetKeyNames
* end of main
PROCEDURE GetKeyStates
DECLARE INTEGER GetKeyboardState IN user32 STRING @lpKeyState
LOCAL cBuffer, nIndex
cBuffer = Repli(Chr(0), 256)
= GetKeyboardState (@cBuffer)
CREATE CURSOR csResult (index N(3), asc N(3))
FOR nIndex=1 TO Len(cBuffer)
INSERT INTO csResult VALUES (;
nIndex-1, Asc(SUBSTR(cBuffer, nIndex,1)))
ENDFOR
SELECT csResult
GO TOP
BROWSE NORMAL
PROCEDURE GetKeyNames
DECLARE INTEGER GetKeyNameText IN user32;
INTEGER lParam, STRING @lpString, INTEGER nSize
CREATE CURSOR cs (scancode I, keyname C(32))
FOR nIndex=0 TO 255
= SaveKeycode(nIndex)
ENDFOR
SELECT cs
GO TOP
BROWSE NORMAL NOWAIT
PROCEDURE SaveKeycode(nKeyindex)
LOCAL nKeycode, cKeyname
nKeycode = BITLSHIFT(m.nKeyindex, 16)
cKeyname = GetKeyName(m.nKeycode)
IF NOT EMPTY(m.cKeyname)
INSERT INTO cs VALUES (m.nKeyindex, m.cKeyname)
ENDIF
FUNCTION GetKeyName(num)
LOCAL cBuffer, nBufsize
nBufsize=64
cBuffer = REPLICATE(CHR(0), nBufsize)
nBufsize = GetKeyNameText(num, @cBuffer, nBufsize)
RETURN SUBSTR(cBuffer, 1, nBufsize)
Fonte:
news2news.com/vfp/?example=305&function=-1&xpg=14
Última edição por Marcos Guedes em 6/9/2010, 10:22, editado 1 vez(es)
Marcos Guedes- Webmaster

Re: Teclado x API
Exibe layouts de teclado disponíveis para o processo atual e permite alternar entre layouts:
Fonte:
news2news.com/vfp/?example=275
- Código:
PUBLIC oform
oform = CREATEOBJECT("Tform")
oform.VISIBLE=.T.
DEFINE CLASS tform AS FORM
#DEFINE wm_inputlangchange 0x0051
#DEFINE wm_inputlangchangerequest 0x0050
#DEFINE gwl_wndproc -4
PROTECTED activelayout, hwindow, horigproc
hwindow=0
horigproc=0
WIDTH=340
HEIGHT=100
BORDERSTYLE=2
MAXBUTTON=.F.
MINBUTTON=.F.
CAPTION="Available Keyboard Layouts"
AUTOCENTER=.T.
ADD OBJECT lbllst AS LABEL WITH;
LEFT=5, TOP=5, AUTOSIZE=.T., FONTBOLD=.T.,;
FONTSIZE=10, CAPTION="Handles to kbd layouts:"
ADD OBJECT lst AS LISTBOX WITH;
LEFT=5, TOP=25, WIDTH=160, HEIGHT=60, STYLE=2
ADD OBJECT lbllbl AS LABEL WITH;
LEFT=190, TOP=5, AUTOSIZE=.T., FONTBOLD=.T.,;
FONTSIZE=10, CAPTION="Active layout:"
ADD OBJECT lbl AS LABEL WITH;
LEFT=190, TOP=25, AUTOSIZE=.T.
PROCEDURE INIT
THIS.DECLARE
IF NOT THIS.enumkbdlayouts()
= MESSAGEBOX("Keyboard layout enumeration failed!",;
48, "Error!")
RETURN .F.
ENDIF
* save current layout
THIS.activelayout = getkeyboardlayout(0)
THIS.lst.LISTINDEX=1
THIS.displayactivelayout
ENDPROC
PROCEDURE DESTROY
* restore initial layout
THIS.switchkbdlayout(THIS.activelayout)
ENDPROC
PROCEDURE ACTIVATE
IF THIS.hwindow = 0
THIS.hwindow = THIS.HWND
THIS.horigproc = getwindowlong(THIS.hwindow, gwl_wndproc)
* track WM_INPUTLANGCHANGE window messages
IF VERSION(5) >= 900
= BINDEVENT(THIS.hwindow, wm_inputlangchange,;
THIS, "WindowProc")
ENDIF
ENDIF
THIS.displayactivelayout
ENDPROC
PROCEDURE lst.INTERACTIVECHANGE
THISFORM.switchkbdlayout(VAL(THIS.VALUE))
THISFORM.displayactivelayout
ENDPROC
PROCEDURE windowproc(hwindow AS INTEGER, nmsgid AS INTEGER,;
wparam AS INTEGER, LPARAM AS INTEGER)
* requires VFP9, otherwise ignored
LOCAL nreturn
nreturn=0
IF nmsgid=wm_inputlangchange
* The input language has been changed for the applicaiton.
* Note that only in-focus (active) form receives this message
THIS.displayactivelayout
ENDIF
* pass control to the original window procedure
nreturn = callwindowproc(THIS.horigproc, THIS.hwindow,;
m.nmsgid, m.wparam, m.lparam)
RETURN nreturn
ENDPROC
PROCEDURE displayactivelayout
LOCAL nlocaleid, cbuffer
nlocaleid=getkeyboardlayout(0)
THIS.lst.VALUE=TRANSFORM(m.nlocaleid,"@0")
cbuffer = REPLICATE(CHR(0), 250)
= getkeyboardlayoutname(@cbuffer)
THIS.lbl.CAPTION = STRTRAN(cbuffer, CHR(0),"") +;
" | " + THIS.getlocalename(m.nlocaleid)
ENDPROC
PROCEDURE switchkbdlayout(hlayout)
= activatekeyboardlayout(m.hlayout, 0)
ENDPROC
PROCEDURE enumkbdlayouts
LOCAL cbuffer, nbufsize, ncount, nindex, hlayout
nbufsize = 256
cbuffer = REPLICATE(CHR(0), nbufsize)
ncount = getkeyboardlayoutlist(nbufsize, @cbuffer)
FOR nindex=1 TO ncount
hlayout = buf2dword(SUBSTR(cbuffer, (nindex-1)*4+1, 4))
THIS.lst.ADDITEM(TRANSFORM(hlayout,"@0"))
ENDFOR
RETURN (ncount > 0)
ENDPROC
FUNCTION getlocalename(nlocaleid AS NUMBER) AS STRING
#DEFINE locale_english_us 0x0409
#DEFINE locale_english_canada 0x1009
#DEFINE locale_french_standard 0x040c
#DEFINE locale_french_canada 0x0c0c
#DEFINE locale_russian 0x0419
#DEFINE locale_ukrainian 0x0422
LOCAL clocalename
nlocaleid=BITAND(nlocaleid, 0xffff)
DO CASE
CASE nlocaleid=locale_english_us
clocalename="EN-US"
CASE nlocaleid=locale_english_canada
clocalename="EN-CA"
CASE nlocaleid=locale_french_standard
clocalename="FR"
CASE nlocaleid=locale_french_canada
clocalename="FR-CA"
CASE nlocaleid=locale_russian
clocalename="RU"
CASE nlocaleid=locale_ukrainian
clocalename="UA"
OTHERWISE
clocalename=TRANSFORM(nlocaleid, "@0")
ENDCASE
RETURN m.clocalename
PROCEDURE DECLARE
DECLARE INTEGER GetWindowLong IN user32;
INTEGER hWindow, INTEGER nIndex
DECLARE INTEGER CallWindowProc IN user32;
INTEGER lpPrevWndFunc, INTEGER hWindow, LONG Msg,;
INTEGER wParam, INTEGER LPARAM
DECLARE INTEGER GetKeyboardLayout IN user32;
INTEGER idThread
DECLARE INTEGER GetKeyboardLayoutName IN user32;
STRING @pwszKLID
DECLARE INTEGER GetKeyboardLayoutList IN user32;
INTEGER nBuff, STRING @lpList
DECLARE INTEGER ActivateKeyboardLayout IN user32;
INTEGER hkl, INTEGER nFlags
ENDDEFINE
FUNCTION buf2dword(cbuffer)
RETURN ASC(SUBSTR(cbuffer, 1,1)) +;
ASC(SUBSTR(cbuffer, 2,1)) * 256 +;
ASC(SUBSTR(cbuffer, 3,1)) * 65536 +;
ASC(SUBSTR(cbuffer, 4,1)) * 16777216
ENDFUNC
Fonte:
news2news.com/vfp/?example=275
_________________
Marcos Guedes - Programador e desenvolvedor Web.
Convidado, seja nosso seguidor no Twitter:
twitter.com/programacaobras
Marcos Guedes- Webmaster

Re: Teclado x API
Olá Marcos, essa função para pegar as teclas pressionadas só vale pra dentro do programa? igual um 'keypress'?
LeticiaVale- Participa Pouco

Re: Teclado x API
Leticia, você chegou a testar a solução?
Se me lembro bem, a rotina captura as teclas mesmo fora do foco do form.

Se me lembro bem, a rotina captura as teclas mesmo fora do foco do form.

_________________
Marcos Guedes - Programador e desenvolvedor Web.
Convidado, seja nosso seguidor no Twitter:
twitter.com/programacaobras
Marcos Guedes- Webmaster

Re: Teclado x API
Não testei direito ainda, estou tentando entender como funciona.
mas obrigada pela resposta
mas obrigada pela resposta
LeticiaVale- Participa Pouco

Re: Teclado x API
havendo dificuldades na utilização, é só postar.


_________________
Marcos Guedes - Programador e desenvolvedor Web.
Convidado, seja nosso seguidor no Twitter:
twitter.com/programacaobras
Marcos Guedes- Webmaster

Página 1 de 1
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum
Início
» Link PHP (Dúvida)
» Fundo do PROJETO Transparente??
» Pivot Table no sql server
» Scroll EditBox Automatico
» Erro no Projeto Chat
» Select Nexval do FoxPro no OracleXE
» Colocar gif na caixa do MESSAGEBOX ()
» Comparar Versões do programa.exe
» Menu lateral
» Fazer com que a tela do sistema assume a janela principal
» Trocar Palavra no Sistema
» invocar Dll em Xbase
» Fechar Porta Aberta
» Acessar Banco de dados mysql na web atraves cursor adapter
» Livro Caixa
» Problema na porta paralela
» Email + PHP + VFP
» Quero ajuda em PHP , alguem que ja programe em php
» Passos Iniciais