Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
Need window handle for a userform
Hi
I would like the window handle of a (user)form in my excel project, how do I get that? I need to use sendmessage to that form. -- Henry |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
Need window handle for a userform
In a normal module:
-------------------------------- Private Declare Function FindWindow _ Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Function GetFormHwnd(strCaption As String) As Long If Val(Application.Version) = 9 Then GetFormHwnd = FindWindow("ThunderDFrame", strCaption) Else GetFormHwnd = FindWindow("ThunderXFrame", strCaption) End If End Function In your form module: ------------------------------------- Private lFormHwnd As Long Public Property Let propFormHwnd(lHwnd As Long) lFormHwnd = lHwnd End Property Public Property Get propFormHwnd() As Long propFormHwnd = lFormHwnd End Property Private Sub Userform_Initialize() Dim hwnd As Long hwnd = GetFormHwnd(Me.Caption) Me.propFormHwnd = hwnd End Sub This will give your form a property propFormHwnd (will show up with intelli-sense) and that can be useful for other purposes. If you don't want this then just use the function. RBS "Henry" wrote in message ... Hi I would like the window handle of a (user)form in my excel project, how do I get that? I need to use sendmessage to that form. -- Henry |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
Need window handle for a userform
Hi
Thanks! Do you also happen to know how I can capture the "postmessage" message on the form? Must be some kind of hook right? -- Henry "RB Smissaert" wrote: In a normal module: -------------------------------- Private Declare Function FindWindow _ Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Function GetFormHwnd(strCaption As String) As Long If Val(Application.Version) = 9 Then GetFormHwnd = FindWindow("ThunderDFrame", strCaption) Else GetFormHwnd = FindWindow("ThunderXFrame", strCaption) End If End Function In your form module: ------------------------------------- Private lFormHwnd As Long Public Property Let propFormHwnd(lHwnd As Long) lFormHwnd = lHwnd End Property Public Property Get propFormHwnd() As Long propFormHwnd = lFormHwnd End Property Private Sub Userform_Initialize() Dim hwnd As Long hwnd = GetFormHwnd(Me.Caption) Me.propFormHwnd = hwnd End Sub This will give your form a property propFormHwnd (will show up with intelli-sense) and that can be useful for other purposes. If you don't want this then just use the function. RBS "Henry" wrote in message ... Hi I would like the window handle of a (user)form in my excel project, how do I get that? I need to use sendmessage to that form. -- Henry |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
Need window handle for a userform
Haven't got that ready no. What messages are you interested in?
RBS "Henry" wrote in message ... Hi Thanks! Do you also happen to know how I can capture the "postmessage" message on the form? Must be some kind of hook right? -- Henry "RB Smissaert" wrote: In a normal module: -------------------------------- Private Declare Function FindWindow _ Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Function GetFormHwnd(strCaption As String) As Long If Val(Application.Version) = 9 Then GetFormHwnd = FindWindow("ThunderDFrame", strCaption) Else GetFormHwnd = FindWindow("ThunderXFrame", strCaption) End If End Function In your form module: ------------------------------------- Private lFormHwnd As Long Public Property Let propFormHwnd(lHwnd As Long) lFormHwnd = lHwnd End Property Public Property Get propFormHwnd() As Long propFormHwnd = lFormHwnd End Property Private Sub Userform_Initialize() Dim hwnd As Long hwnd = GetFormHwnd(Me.Caption) Me.propFormHwnd = hwnd End Sub This will give your form a property propFormHwnd (will show up with intelli-sense) and that can be useful for other purposes. If you don't want this then just use the function. RBS "Henry" wrote in message ... Hi I would like the window handle of a (user)form in my excel project, how do I get that? I need to use sendmessage to that form. -- Henry |
#5
Posted to microsoft.public.excel.programming
|
|||
|
|||
Need window handle for a userform
Hi
My own message, I would like to make a Progressform that can be updated by posting a message with postmessage(hWnd, WM_MY_MESSAGE_PROGRESS, iProgress, iMax) from a "loop" where the work is done. It seems that in VBA the system is upside down on such a thing, when most examples are done by loading the progress form and letting the progressform make the call back to the process function. I don't like that, and I would like to have a progressform that is independant of what work is to be done. Posting a message with the progress values is so much easier. -- Henry "RB Smissaert" wrote: Haven't got that ready no. What messages are you interested in? RBS "Henry" wrote in message ... Hi Thanks! Do you also happen to know how I can capture the "postmessage" message on the form? Must be some kind of hook right? -- Henry "RB Smissaert" wrote: In a normal module: -------------------------------- Private Declare Function FindWindow _ Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Function GetFormHwnd(strCaption As String) As Long If Val(Application.Version) = 9 Then GetFormHwnd = FindWindow("ThunderDFrame", strCaption) Else GetFormHwnd = FindWindow("ThunderXFrame", strCaption) End If End Function In your form module: ------------------------------------- Private lFormHwnd As Long Public Property Let propFormHwnd(lHwnd As Long) lFormHwnd = lHwnd End Property Public Property Get propFormHwnd() As Long propFormHwnd = lFormHwnd End Property Private Sub Userform_Initialize() Dim hwnd As Long hwnd = GetFormHwnd(Me.Caption) Me.propFormHwnd = hwnd End Sub This will give your form a property propFormHwnd (will show up with intelli-sense) and that can be useful for other purposes. If you don't want this then just use the function. RBS "Henry" wrote in message ... Hi I would like the window handle of a (user)form in my excel project, how do I get that? I need to use sendmessage to that form. -- Henry |
#6
Posted to microsoft.public.excel.programming
|
|||
|
|||
Need window handle for a userform
I don't quite get what you are saying there and I don't think you need the
API to have a progressbar in Excel. Have a look at the standard Progressbar control. I think it will do all you want. RBS "Henry" wrote in message ... Hi My own message, I would like to make a Progressform that can be updated by posting a message with postmessage(hWnd, WM_MY_MESSAGE_PROGRESS, iProgress, iMax) from a "loop" where the work is done. It seems that in VBA the system is upside down on such a thing, when most examples are done by loading the progress form and letting the progressform make the call back to the process function. I don't like that, and I would like to have a progressform that is independant of what work is to be done. Posting a message with the progress values is so much easier. -- Henry "RB Smissaert" wrote: Haven't got that ready no. What messages are you interested in? RBS "Henry" wrote in message ... Hi Thanks! Do you also happen to know how I can capture the "postmessage" message on the form? Must be some kind of hook right? -- Henry "RB Smissaert" wrote: In a normal module: -------------------------------- Private Declare Function FindWindow _ Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Function GetFormHwnd(strCaption As String) As Long If Val(Application.Version) = 9 Then GetFormHwnd = FindWindow("ThunderDFrame", strCaption) Else GetFormHwnd = FindWindow("ThunderXFrame", strCaption) End If End Function In your form module: ------------------------------------- Private lFormHwnd As Long Public Property Let propFormHwnd(lHwnd As Long) lFormHwnd = lHwnd End Property Public Property Get propFormHwnd() As Long propFormHwnd = lFormHwnd End Property Private Sub Userform_Initialize() Dim hwnd As Long hwnd = GetFormHwnd(Me.Caption) Me.propFormHwnd = hwnd End Sub This will give your form a property propFormHwnd (will show up with intelli-sense) and that can be useful for other purposes. If you don't want this then just use the function. RBS "Henry" wrote in message ... Hi I would like the window handle of a (user)form in my excel project, how do I get that? I need to use sendmessage to that form. -- Henry |
#7
Posted to microsoft.public.excel.programming
|
|||
|
|||
Need window handle for a userform
Okay, then let's stick to the question, how do I capture windows messages on
a form. -- Henry "RB Smissaert" wrote: I don't quite get what you are saying there and I don't think you need the API to have a progressbar in Excel. Have a look at the standard Progressbar control. I think it will do all you want. RBS "Henry" wrote in message ... Hi My own message, I would like to make a Progressform that can be updated by posting a message with postmessage(hWnd, WM_MY_MESSAGE_PROGRESS, iProgress, iMax) from a "loop" where the work is done. It seems that in VBA the system is upside down on such a thing, when most examples are done by loading the progress form and letting the progressform make the call back to the process function. I don't like that, and I would like to have a progressform that is independant of what work is to be done. Posting a message with the progress values is so much easier. -- Henry "RB Smissaert" wrote: Haven't got that ready no. What messages are you interested in? RBS "Henry" wrote in message ... Hi Thanks! Do you also happen to know how I can capture the "postmessage" message on the form? Must be some kind of hook right? -- Henry "RB Smissaert" wrote: In a normal module: -------------------------------- Private Declare Function FindWindow _ Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Function GetFormHwnd(strCaption As String) As Long If Val(Application.Version) = 9 Then GetFormHwnd = FindWindow("ThunderDFrame", strCaption) Else GetFormHwnd = FindWindow("ThunderXFrame", strCaption) End If End Function In your form module: ------------------------------------- Private lFormHwnd As Long Public Property Let propFormHwnd(lHwnd As Long) lFormHwnd = lHwnd End Property Public Property Get propFormHwnd() As Long propFormHwnd = lFormHwnd End Property Private Sub Userform_Initialize() Dim hwnd As Long hwnd = GetFormHwnd(Me.Caption) Me.propFormHwnd = hwnd End Sub This will give your form a property propFormHwnd (will show up with intelli-sense) and that can be useful for other purposes. If you don't want this then just use the function. RBS "Henry" wrote in message ... Hi I would like the window handle of a (user)form in my excel project, how do I get that? I need to use sendmessage to that form. -- Henry |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Duplicated code window and userform window problem | Excel Programming | |||
Finding window handle of data validation listbox | Excel Programming | |||
How to get the window handle of and excel instance using it's process ID | Excel Programming | |||
MSForms UserForm Window Handle - Win32 API Call from VBA | Excel Programming | |||
Window Handle | Excel Programming |