SENDKEYS - PROBLEMA NO WINDOWS 8

PEPE.LEGAL 16/08/2014 11:14:55
#440487
Amigos, instalei o VB6 no windows 8 e com toda a dificuldade funcionou beleza.

O único problema é que o SendKeys retorna o erro

Run-time error '7' :
Permission Denied


Mudei a chave EnableLUA no registro para 0 mas infelizmente, nada do que eu fiz resolveu.

Alguem tem alguma ideia ?

A versao do Windows 8 é Single Language. Será que se eu mudar a versao do windows, isso se acerta ? Só falta esse detalhe para eu poder trabalhar com esse notebook que ja esta parado ha 1 ano por causa desse problema.

FILMAN 16/08/2014 18:20:33
#440494
Resposta escolhida
Crie um modulo com o seguinte código

Private Const KEYEVENTF_KEYUP = &H2

Private Const INPUT_KEYBOARD = 1

Private Type KEYBDINPUT

wVk As Integer

wScan As Integer

dwFlags As Long

time As Long

dwExtraInfo As Long

End Type

Private Type GENERALINPUT

dwType As Long

xi(0 To 23) As Byte

End Type

Public Declare Function SendInput Lib [Ô]user32.dll[Ô] (ByVal nInputs As Long, pInputs As GENERALINPUT, ByVal cbSize As Long) As Long

Public Declare Sub CopyMemory Lib [Ô]kernel32[Ô] Alias [Ô]RtlMoveMemory[Ô] (pDst As Any, pSrc As Any, ByVal ByteLen As Long)

Public Function SendKeysA(ByVal vKey As Integer, Optional booDown As Boolean = False)

Dim GInput(0) As GENERALINPUT

Dim KInput As KEYBDINPUT

KInput.wVk = vKey

If Not booDown Then

KInput.dwFlags = KEYEVENTF_KEYUP

End If

GInput(0).dwType = INPUT_KEYBOARD

CopyMemory GInput(0).xi(0), KInput, Len(KInput)

Call SendInput(1, GInput(0), Len(GInput(0)))

End Function



Para chamar a função faça o seguinte

Call SendKeysA(vbKeyTab, True)
LEANDRO.LUIZ 18/08/2014 14:54:18
#440546
Já tentou executar seu aplicativo com permissões de Administrador?
TUNUSAT 18/08/2014 15:24:27
#440547
PEPE LEGAL,

O [Ô]KNILSSON[Ô] está com um post aberto exatamente com o mesmo problema apesar do caso dele ser VB6 + Win7, veja:

======================================================

COMO CORRIGIR O RUN-TIME ERROR 70 DO VB NO WIN7?
http://www.vbmania.com.br/index.php?modulo=forum&metodo=abrir&id=440529&pagina=1

Sugeri a ele substituir o SendKey por uma API chamada [Ô]PostMessage[Ô]:

======================================================

Public Declare Function PostMessage Lib [Ô]user32[Ô] Alias [Ô]PostMessageA[Ô] (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then
SendKeys [Ô]{tab}[Ô] [ô]13 = Enter Key
PostMessage hwnd, &H100, &HD&, &H1C0001
End If

End Sub


Tem outras sugestões lá ... veja se algum serve para você.

Bom ... a Microsoft tem um exemplo para:
- .NET Framework: Com suporte em: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0
- .NET Framework Client Profile: Com suporte em: 4, 3.5 SP1
Veja em:
http://msdn.microsoft.com/pt-br/library/system.windows.forms.sendkeys.send(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

[ô] Clicking Button1 causes a message box to appear.
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
MessageBox.Show([Ô]Click here![Ô])
End Sub


[ô] Use the SendKeys.Send method to raise the Button1 click event
[ô] and display the message box.
Private Sub Form1_DoubleClick(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles MyBase.DoubleClick

[ô] Send the enter key; since the tab stop of Button1 is 0, this
[ô] will trigger the click event.
SendKeys.Send([Ô]{ENTER}[Ô])
End Sub


[][ô]s,
Tunusat.
PEPE.LEGAL 18/08/2014 20:03:22
#440561
Obrigado,

sim, eu fiz toda a instalacao como administrador.

O problema nao ocorre no programa compilado , somente no IDE.

Esse problema já aconteceu comigo quando instalei no windows 7 , faz tempo. Na época eu me debati mas acabei resolvendo. O problema é que não lembro o que fiz....

Ocorre que dessa vez não estou tendo a mesma sorte.

Se nada der certo, vou seguir a orientacao de voces e criar a funcao.

Se alguem tiver mais alguma sugestao , fico no aguardo.

Obrigado!
FILMAN 18/08/2014 20:12:00
#440562
Cara utiliza a função que passei vai funcionar!

Coloque tudo dentro de um modulo e chame a mesma que vai dar certo!
PEPE.LEGAL 22/08/2014 10:18:20
#440649
Obrigado FILMAN

Acho que a melhor solucao foi essa mesma. Muito obrigado !!
FILMAN 22/08/2014 17:11:49
#440655
Bom se o problema foi resolvido encerre o tópico

Fico grato por ter ajudado!
Tópico encerrado , respostas não são mais permitidas