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 |