Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Focus con api su textbox_Risolto
Forum - Visual Basic 6 - Focus con api su textbox_Risolto

Avatar
wilson007 (Normal User)
Newbie


Messaggi: 1
Iscritto: 28/03/2011

Segnala al moderatore
Postato alle 11:44
Lunedì, 28/03/2011
Grazie Cmq a poeo85 per l'interesse

***************************************FORM1*********************************************
' ----------------------------------------------------------------------------------
' Autohigh sample
'
' Written by Marcel A. FRITSCH
' Copyright 2002 by Marcel A. FRITSCH
'
' This software is FREEWARE. You may use it for your own projects but you may not
' re-sell the original or the source code.
'
' No warranty express or implied, is given as to the use of this program.
' Use at your own risk.
'
' I am creating a global application hook. The callback procedure (WindowProc) is placed in
' the Module1 module. This call allows you to intercept all windows messages before they are
' processed, but you cannot change them. If there is a message WM_SETFOCUS or WM_KILLFOCUS
' the public procedure SETKILLFocus is called. In this procedure the control with the handle
' from the message is searched and the backcolor is changed if the type of the control is
' matching with the types that should be processed (It is not very usefull to change the
' backcolor of Buttons).
'
' ATTENTION: When working in the IDE do not stop this program with the STOP-Button
'            because the unhook-function will not be executed and the IDE crashes.
' ----------------------------------------------------------------------------------
'
Private Sub Form_Load()
' Set global application hook
lHook = SetWindowsHookEx(WH_CALLWNDPROC, AddressOf WindowProc, App.hInstance, App.ThreadID)
End Sub
Public Sub SETKILLFocus(msg As Long, CHwnd As Long)
On Local Error Resume Next
Dim Ctrl As Control
For Each Ctrl In Controls
Err.Clear
If CHwnd = Ctrl.hwnd Then
If Err.Number = 0 Then
     If msg = WM_SETFOCUS Then
        If (TypeOf Ctrl Is TextBox) Or _
           (TypeOf Ctrl Is ComboBox) Then
            Ctrl.BackColor = &H80000018
        End If
     Else   ' WM_KILLFOCUS
        If (TypeOf Ctrl Is TextBox) Or _
           (TypeOf Ctrl Is ComboBox) Then
            Ctrl.BackColor = &H80000005
         End If
     End If
     Exit For
  End If
End If
Next ' Ctrl
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
' Give up global application hook
UnhookWindowsHookEx lHook
End Sub



**********************************************MODULO*************************************
Option Explicit


' ----------------------------------------------------------------------------------
' Autohigh sample
'
' Written by Marcel A. FRITSCH
' Copyright 2002 by Marcel A. FRITSCH
'
' This software is FREEWARE. You may use it for your own projects but you may not
' re-sell the original or the source code.
'
' No warranty express or implied, is given as to the use of this program.
' Use at your own risk.
'
' ----------------------------------------------------------------------------------
'
' USER32 - Functions
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
(ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function CallNextHookEx Lib "user32" _
(ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
' KERNEL32 - Functions
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
' CONSTANTS
Public Const WH_CALLWNDPROC = 4
Public Const WM_SETFOCUS = &H7
Public Const WM_KILLFOCUS = &H8
' STRUCTS
Type MYSTRUCT
    lParam As Long
    wParam As Long
    message As Long
    hwnd As Long
End Type
' REST
Public lHook As Long
Public Function WindowProc(ByVal Hookid As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Dim SWINP As MYSTRUCT
    CopyMemory SWINP, ByVal lParam, Len(SWINP)
    WindowProc = CallNextHookEx(lHook, Hookid, wParam, ByVal lParam)
    If SWINP.message = WM_SETFOCUS Or SWINP.message = WM_KILLFOCUS Then
       Form1.SETKILLFocus SWINP.message, SWINP.hwnd
    End If
End Function





--------------------------------------------------------------------------------------
Salve sono nuovo, Vi chiedo per cortesia un esempio su focus nella text box.
Mi spiego:
Ok:
In una applicazioneMDI ho 2 form, all'interno di ogni form cè 1 casella di testo (TEXTBOX).
Visto che lo scopo è quello di utilizzare l'applicazione su  un pc touch screen Vorre che accdesse quanto segue:
1)Ogni volta che il focus è attivo nella text box vorrei che si apresse la virtualKey che ho creato shell ("virtualkey.exe").

2)altra spiegazione. Appena faccio click nella casella di testo stessa cosa shell ("virtualkey.exe").

::attualmente sto usando:
Private Sub Text1_GotFocus()
Text1.Text = ""
If Visualizza_Tastiera = 1 Then Shell "Virtual_BlumKey.exe", vbNormalFocus
End Sub

::ma devo copiarlo in ogni _GotFocus di testo
GRazie in anticipo


Ultima modifica effettuata da wilson007 il 30/03/2011 alle 9:14
PM