Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[VB] Simulare pressione ALT

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[VB] Simulare pressione ALT

Messaggioda M@ttia » gio lug 08, 2004 9:07 pm

Salve raga, eccovi un problemin oche mi assilla da un po': In VB ho trovato il modo per simulare "cioè farli premere dal pc) la pressione di tasti sulla tastiera, usando il seguente codice:

Codice: Seleziona tutto
Private Declare Sub keybd_event Lib "user32" ( _
   ByVal bVk As Byte, ByVal bScan As Byte, _
   ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2

Private Declare Function GetVersion Lib "kernel32" () As Long
Private Declare Function VkKeyScan Lib "user32" Alias "VkKeyScanA" ( _
   ByVal cChar As Byte) As Integer
Private Declare Function VkKeyScanW Lib "user32" ( _
   ByVal cChar As Integer) As Integer

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
    lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)


Public Sub KeyDown(ByVal vKey As KeyCodeConstants)
   keybd_event vKey, 0, KEYEVENTF_EXTENDEDKEY, 0
End Sub

Public Sub KeyUp(ByVal vKey As KeyCodeConstants)
   keybd_event vKey, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End Sub

Public Function KeyCode(ByVal sChar As String) As KeyCodeConstants
Dim bNt As Boolean
Dim iKeyCode As Integer
Dim b() As Byte
Dim iKey As Integer
Dim vKey As KeyCodeConstants
Dim iShift As ShiftConstants

   ' Determine if we have Unicode support or not:
   bNt = ((GetVersion() And &H80000000) = 0)
   
   ' Get the keyboard scan code for the character:
   If (bNt) Then
      b = sChar
      CopyMemory iKey, b(0), 2
      iKeyCode = VkKeyScanW(iKey)
   Else
      b = StrConv(sChar, vbFromUnicode)
      iKeyCode = VkKeyScan(b(0))
   End If
   
   KeyCode = (iKeyCode And &HFF&)

End Function


Private Sub Command1_Click()
Text1.SetFocus
KeyDown (VBKeyN) '(oppure invece di VBKeyN metto 78) schiaccia e tiene premuto N nella textbox
End Sub



Ora il mio problema: io devo simulare la pressione dei tasti ALT + F4 (x chiudere una finestra): x l'F4 no problem, VBKeyf4 e funziona, il mio problema invece è la pressione dell'alt (che per chiudere una finestra deve essere l'Alt di sinistra...). Sul SITO sono dati tutti i codici (anche maiuscolo, ctrl, tab, ecc...), ma non si parla dell'alt... Provando con la funzione normale di vb form_keydown(keycode as integer, shift as integer) e facendomi dare il keycode, schiacciando l'alt mi restituisce 18, ma poi se lo metto nella funzione x schiacciarlo non me l oschiaccia: qualcuno sa come fare???? Grazie mille! [brindisi] [^]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Robby78 » ven lug 09, 2004 7:43 am

si, il keycode è il 18, ma lo shift che assume valore 4; credo che l'unico modo sia trovare una funzione analoga a quella che usi che ti permetta di passare anche il parametro shift
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda M@ttia » ven lug 09, 2004 1:54 pm

Già, ok cercherò grazie [^]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Robby78 » lun lug 12, 2004 12:41 pm

Ciao Mattia, forse ho trovato quello che cercavi...
guarda l'esempio:

Dim ReturnValue, I
ReturnValue = Shell("calc.exe", 1) 'Esegue l'applicazione
AppActivate ReturnValue 'Attiva l'applicazione
SendKeys "%{F4}", True ' Invia ALT+F4
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Messaggioda M@ttia » lun lug 12, 2004 5:06 pm

<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da Robby78</i>
<br />Ciao Mattia, forse ho trovato quello che cercavi...
guarda l'esempio:

Dim ReturnValue, I
ReturnValue = Shell("calc.exe", 1) 'Esegue l'applicazione
AppActivate ReturnValue 'Attiva l'applicazione
SendKeys "%{F4}", True ' Invia ALT+F4

<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

YESSSSSSSSS!!!!!! [applauso] Grazie mille, di devo una [brindisi]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising