VB6 - SendKeys Windows Vista

Yokozuna

Power Member
Boas,

O SendKeys no VB6 provoca "RUNTIME ERROR 70 - Permission Denied" no Windows Vista (Ultimate neste caso).

Como é que eu posso dar a volta. Parece-me tão simples que não estou a ver nada... Bem, ainda não domino nada o VB (quanto mais o 6, lol).

Código:

Código:
Private Sub Form_Load()
Dim n As Long
Dim Documento As String
Dim Tamanho As Long

Open "c:\fotosP\caminho.txt" For Input As #1
Line Input #1, Documento
Close #1

Tamanho = Len(Documento)

Key

SendKeys Mid$(Documento, 2, Tamanho - 2), False
SendKeys "{enter}", False

For n = 1 To 5000
    DoEvents
Next n

End

End Sub
 
senkeys nao é suportado pelo winVista, Para fazeres isso, teras que usar a API do windows

coloca isto num modulo
Código:
Option Explicit

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

Private Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As GENERALINPUT, ByVal cbSize As Long) As Long
Private 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
Metodo de utilização da funcao SendKeysA

Código:
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
   SendKeysA vbKeyTab, True
   KeyAscii = 0
End If
End Sub

cumpz
 
Ok, vou experimentar, thx...

Mas, estive a ver uma cena muito gira.

O que se passa é que este programa já existia e agora estive a experimentar no Vista, estão a ver se os programas funcionam no Vista na minha empresa, e o executável funciona bem. O debug é que dá o erro...
 
Yup, já executaram mas eu se calhar expliquei-me mal.

O debug dá erro e o executável também dá quando é chamado pela aplicação principal. Mas quando se corre só o executável funciona bem. Quer dizer, pelo menos não dá erro e executa o pedido.
 
Yup, já executaram mas eu se calhar expliquei-me mal.

O debug dá erro e o executável também dá quando é chamado pela aplicação principal. Mas quando se corre só o executável funciona bem. Quer dizer, pelo menos não dá erro e executa o pedido.

talvez não dê erro por ja estar compilado e em linguagem máquina!
 
Back
Topo