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 |
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 |
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 |
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 |
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 |
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 |
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 |
All times are GMT +1. The time now is 10:48 AM. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com