Solved

How to maximize a window

Posted on 2009-04-13
1
876 Views
Last Modified: 2012-08-13
I have an application that runs in the background. I need to call it, maximize it. Then capture it and finally minimize it.

I have tried several methods.......
like
SetWindowPos(mHandel, 0, 0, 0, 0, 0, SWP_NOSIZE)
and
BringWindowToTop(mHandel)
and
For Each p As Process In Process.GetProcessesByName("FXTSpp")
            ShowWindow(p.MainWindowHandle, SHOW_WINDOW.SW_MAXIMIZE)
Next p


BUT non of them is reliable, that is if I click on any other window and start interacting with it
the desired window will not get maximized.

Help is greatly appreciated, thank you for your time.
Private Sub Details_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 

        mHandel = FindWindow(vbNullString, "Marketscope 2.0")

        Dim dt1 As DateTime

        dt1 = DateTime.UtcNow

        mCurrentDateTime = CDate(DateTime.UtcNow.ToString("MM/dd/yyyy HH:mm:ss"))

        Timer3.Enabled = True

        'Call UpdateDataBaseWithPicture()

    End Sub  
 

Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick

        'MaximizeFXCMGraph()

        SetWindowPos(mHandel, 0, 0, 0, 0, 0, SWP_NOSIZE)

        'MoveWindow(mHandel, 0, 0, 1200, 768, False)

        'BringWindowToTop(mHandel)

        Application.DoEvents()

        Application.DoEvents()

        'Application.DoEvents()

        'Dim MyRect As Rectangle = New Rectangle(0, Screen.PrimaryScreen.Bounds.Top - 0, 1000, 700)

        'Dim MyPic As Bitmap = BlitterChip.ScreenGrab(MyRect)

        'SendKeys.Send("%{PRTSC}")          '<alt + printscreen>

        'PictureBox2.Image = MyPic 'Clipboard.GetImage

        'Clipboard.SetDataObject(0)      'save memory by removing the image from the clipboard

        'MoveWindow(mHandel, -10000, -10000, 1000, 600, True)

        'BringWindowToTop(Me.Handle)

    End Sub
 
 

 <Flags()> _

    Private Enum SHOW_WINDOW As Integer

        SW_HIDE = 0

        SW_SHOWNORMAL = 1

        SW_NORMAL = 1

        SW_SHOWMINIMIZED = 2

        SW_SHOWMAXIMIZED = 3

        SW_MAXIMIZE = 3

        SW_SHOWNOACTIVATE = 4

        SW_SHOW = 5

        SW_MINIMIZE = 6

        SW_SHOWMINNOACTIVE = 7

        SW_SHOWNA = 8

        SW_RESTORE = 9

        SW_SHOWDEFAULT = 10

        SW_FORCEMINIMIZE = 11

        SW_MAX = 11

    End Enum
 

    Private Sub MaximizeFXCMGraph()

        For Each p As Process In Process.GetProcessesByName("FXTSpp")

            ShowWindow(p.MainWindowHandle, SHOW_WINDOW.SW_MAXIMIZE)

        Next p

    End Sub
 

    Private Sub MinimizeFXCMGraph()

        For Each p As Process In Process.GetProcessesByName("FXTSpp")

            ShowWindow(p.MainWindowHandle, SHOW_WINDOW.SW_MINIMIZE)

        Next p

    End Sub

Open in new window

0
Comment
Question by:tamu111981
1 Comment
 
LVL 15

Accepted Solution

by:
oobayly earned 500 total points
ID: 24130062
Try this code, it's modified from what I use for a singleton application instance.
Private Sub GetScreenShot(ByVal ps As Process)

    Dim hWnd As IntPtr = ps.MainWindowHandle

    

    ' Restores a minimized (iconic) window to its previous size and position; it then activates the window. 

    ' http://msdn.microsoft.com/en-us/library/ms633535(VS.85).aspx

    OpenIcon(hWnd)

    

    ' Puts the thread that created the specified window into the foreground and activates the window.

    ' http://msdn.microsoft.com/en-us/library/ms633539(VS.85).aspx

    SetForegroundWindow(hWnd)

    

    ' Sets the specified window's show state. 

    ' http://msdn.microsoft.com/en-us/library/ms633548(VS.85).aspx

    ShowWindow(hWnd, ShowWindowCommand.SW_SHOWMAXIMIZED)

    

    ' Wait 2 seconds to allow for the window to redraw

    System.Threading.Thread.Sleep(2000)

    

    ' PrintScreen & grab the image

    SendKeys.Send("{PRTSC}")

    Dim img As Image = Clipboard.GetImage()

    

    ' Close the app's window

    ShowWindow(hWnd, ShowWindowCommand.SW_MINIMIZE)

End Sub
 

<DllImport("user32.dll")> _

Public Shared Function OpenIcon(ByVal hWnd As IntPtr) As Boolean

End Function
 

<DllImport("user32.dll")> _

Public Shared Function SetForegroundWindow(ByVal hWnd As IntPtr) As Boolean

End Function
 

<DllImport("user32.dll")> _

Public Shared Function ShowWindow(ByVal hWnd As IntPtr, ByVal cmd As ShowWindowCommand) As Boolean

End Function
 

Public Enum ShowWindowCommand As Integer

    SW_HIDE = 0

    SW_SHOWNORMAL = 1

    SW_NORMAL = 1

    SW_SHOWMINIMIZED = 2

    SW_SHOWMAXIMIZED = 3

    SW_MAXIMIZE = 3

    SW_SHOWNOACTIVATE = 4

    SW_SHOW = 5

    SW_MINIMIZE = 6

    SW_SHOWMINNOACTIVE = 7

    SW_SHOWNA = 8

    SW_RESTORE = 9

    SW_SHOWDEFAULT = 10

    SW_FORCEMINIMIZE = 11

    SW_MAX = 11

End Enum

Open in new window

0

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Welcome my friends to the second instalment and follow-up to our Minify and Concatenate Your Scripts and Stylesheets (http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/A_4334-Minify-and-Concatenate-Your-Scripts-and-Stylesheets.html)…
In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, just open a new email message. In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
As a trusted technology advisor to your customers you are likely getting the daily question of, ‘should I put this in the cloud?’ As customer demands for cloud services increases, companies will see a shift from traditional buying patterns to new…

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now