Solved

How to maximize the IE  window with ActiveX control created with VB?

Posted on 2001-08-28
33
3,643 Views
Last Modified: 2013-11-18
The target application is the ActiveX control created with VB and it is usded on IE5.0.
I would like to know:
How to maximize the IE window which has the Visual Basic created ActiveX control embeded in it (F11).
 - and -

How to determin from the ActiveX control if IE is currently maximized or not.
If I can manage to get the IE handle, I can do it but somehow it seems to be very difficult for me to implement.
If some one have a sample code for it.
Please give to me.
Thank in advance.
0
Comment
Question by:chhavigarg
  • 15
  • 13
  • 3
  • +2
33 Comments
 
LVL 8

Expert Comment

by:Dave_Greene
ID: 6435162
Give this a whirl...

Accessing the Internet Explorer Document Object Model from
Visual Basic
http://www.microsoft.com/mind/defaulttop.asp?page=/mind/0898/dom.htm&nav=/mind/0898/inthisissuecolumns0898.htm

UserControl.Parent.script.document.parentWindow.windowstate = vbMaximized  'set the windowstate

0
 

Author Comment

by:chhavigarg
ID: 6435451
Thanks Dave !
But I could not manage to do it.
If its possible for you can u send me the sample code at my email Id chhavia@excite.com
Thanks
Sanjeev
0
 

Author Comment

by:chhavigarg
ID: 6435452
Thanks Dave !
But I could not manage to do it.
If its possible for you can u send me the sample code at my email Id chhavia@excite.com
Thanks
Sanjeev
0
 
LVL 2

Expert Comment

by:JanusFury
ID: 6438583
you can always use the window.open() command and pass "fullscreen=yes" as a parameter...
0
 

Author Comment

by:chhavigarg
ID: 6439067
I tried window.open()  but its not working.
Please can u tell me the step to do it.
If you can send me sample code.
It would be great help to me.
Thanks
0
 

Expert Comment

by:Wendelldhays
ID: 6439250
Perhaps you could Use Screen.AvailWidth and compare it to window.width (The same with Height). This would not tell you really if it is maximized, but it will tel you if it is taking up the whole screen.
0
 

Author Comment

by:chhavigarg
ID: 6439306
Some how I can mange to get whether its taking a whole screen or not. But How do I maximized it?
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6447163
Dave is correct.  This is an excerpts from that page:

"Now that you have an ActiveX control embedded in an HTML file, you can access the HTML document containing your control by adding the following expression in your UserControl code:  


 UserControl.Parent.script.document

 

To access the top-level window, you can use this code:"  

' use this one:
 UserControl.Parent.script.document.parentWindow

 

"Since this expression is somewhat tedious to type, you can store a reference to the document in a variable. That is why I added MSHTML to the project references.  "
0
 
LVL 2

Expert Comment

by:JanusFury
ID: 6448326
I don't believe you can manipulate the IE browser window with scripts, you can only view the state of the window.
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6448820
Well, it that case, using api
' this code assumes that you have an object variable (used to automation) called IE that points to a valid IE Object.

Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_MAXIMIZE = 3

Sub MaximizeIE()
     ShowWindow IE.hwnd, SW_MAXIMIZE
end sub
0
 

Author Comment

by:chhavigarg
ID: 6449612
Thank you very much for your helps.
Actually, I have not specfied correctly what I want.
I want to do "F11" key with an activex control.
I tried with sendkey but its not working.
How can I implement "F11""Theatre Mode" with Activex Control.
Sorry to bother u.
Thanks.
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6450708
C'mon!, this is a diferent situation and there is nothing to do with primitive question!
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6451418
If you have an object variable that points to this running instance of IE (Where your control is runnig) called, in example, IE:

IE.TheaterMode = True
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6454730
Hi chhavigarg,
Any progress?, do you need more help?
Don't hesitate to ask.
Cheers.
0
 

Author Comment

by:chhavigarg
ID: 6454923
Hello Richie!
I am not able to get it work.
It seems to me that there is no way to do it with VB with Just Activex control. But I can't do it with ATL but I couldn't find it do it with Vb.
My team wants me to do it in Vb just with activex control.
IF u r sure that u cna do it with Vb.
Can you write me a step to do it with source code.
Thank you very much for your help
0
 

Author Comment

by:chhavigarg
ID: 6455108
Hello Richie!
This is the only way I think we can do it. I want to do it in Visual Basic.
But I only know How to do it with ATL.
I think untill unless we can't get the IOleClientsite we can't do it.
Any suggestion?
Thanks.

This is the how I'm doing it with ATL.


LRESULT OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
     {
          IOleClientSite*   pClientSite = NULL;
          IServiceProvider* pSP = NULL;
          IWebBrowserApp*   pWB = NULL;
          IWebBrowser2*   pWB2 = NULL;

          HRESULT hr;

          hr = GetClientSite(&pClientSite) ;

          hr = pClientSite->QueryInterface(IID_IServiceProvider, (void**)&pSP);
          hr = pSP->QueryService(IID_IWebBrowserApp, IID_IWebBrowserApp, (void**)&pWB);

          hr = pWB->QueryInterface(IID_IWebBrowser2, (void**)&pWB2);

//          hr = pWB2->put_FullScreen(VARIANT_TRUE);
          hr = pWB2->put_TheaterMode(VARIANT_TRUE);

          pWB2->Release();
          pWB->Release();
          pSP->Release();

          return 0;
     }
0
What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6455127
Well, it is not so easy as i believed.
Just use this stupid code and let me what do yo think:

Private Sub UserControl_Initialize()
SendKeys "{f11}"
End Sub
0
 

Author Comment

by:chhavigarg
ID: 6455176
I already tried SENDKEY but then we don't know whether the IR is in theatre mode or not.
Its not working. I tried with using CreateObject(IE) I can able to do the other IC instance but not the same IE instance where ActiveX control in it.
Any other tip. According to my exp I don't think it si possible what do u think.
I tried with hooking but its not working.
0
 

Author Comment

by:chhavigarg
ID: 6456324
I already tried SENDKEY but then we don't know whether the IE is in theatre mode or not.
Its not working. I tried with using CreateObject(IE) I can able to do the other IE instance but not
the same IE instance where ActiveX control in it.
Any other tip. According to my exp I don't think it si possible what do u think.
I tried with hooking but its not working.
0
 
LVL 2

Expert Comment

by:JanusFury
ID: 6457518
UserControl.Parent.TheaterMode?
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6457925
well, from a strange reason, i can access the document itself but not the window of IE.
However, i cannot access it on Initialize event....

I put the code in click event only to see if it works and it does...
'Set a reference to Miscrosoft html object library

Option Explicit


Dim doc As HTMLDocument


Private Sub UserControl_Click()
Set doc = UserControl.Parent.Script.Document
doc.body.bgcolor = vbBlack
End Sub
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6465660
What about this:


Option Explicit

Dim WithEvents IEDoc As HTMLDocument

Private bolTheater As Boolean
Private Const REG_SZ As Long = 1
Private Const REG_DWORD As Long = 4

Private Const HKEY_CURRENT_USER = &H80000001


Private Const ERROR_NONE = 0
Private Const ERROR_BADDB = 1
Private Const ERROR_BADKEY = 2
Private Const ERROR_CANTOPEN = 3
Private Const ERROR_CANTREAD = 4
Private Const ERROR_CANTWRITE = 5
Private Const ERROR_OUTOFMEMORY = 6
Private Const ERROR_INVALID_PARAMETER = 7
Private Const ERROR_ACCESS_DENIED = 8
Private Const ERROR_INVALID_PARAMETERS = 87
Private Const ERROR_NO_MORE_ITEMS = 259

Private Const KEY_ALL_ACCESS = &H3F

Private Const REG_OPTION_NON_VOLATILE = 0

   Private Declare Function RegCloseKey Lib "advapi32.dll" _
   (ByVal hKey As Long) As Long
   Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias _
   "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
   ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions _
   As Long, ByVal samDesired As Long, ByVal lpSecurityAttributes _
   As Long, phkResult As Long, lpdwDisposition As Long) As Long
   Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias _
   "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
   ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As _
   Long) As Long
   Private Declare Function RegQueryValueExString Lib "advapi32.dll" Alias _
   "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As _
   String, ByVal lpReserved As Long, lpType As Long, ByVal lpData _
   As String, lpcbData As Long) As Long
   Private Declare Function RegQueryValueExLong Lib "advapi32.dll" Alias _
   "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As _
   String, ByVal lpReserved As Long, lpType As Long, lpData As _
   Long, lpcbData As Long) As Long
   Private Declare Function RegQueryValueExNULL Lib "advapi32.dll" Alias _
   "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As _
   String, ByVal lpReserved As Long, lpType As Long, ByVal lpData _
   As Long, lpcbData As Long) As Long
   Private Declare Function RegSetValueExString Lib "advapi32.dll" Alias _
   "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
   ByVal Reserved As Long, ByVal dwType As Long, ByVal lpValue As _
   String, ByVal cbData As Long) As Long
   Private Declare Function RegSetValueExLong Lib "advapi32.dll" Alias _
   "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
   ByVal Reserved As Long, ByVal dwType As Long, lpValue As Long, _
   ByVal cbData As Long) As Long



Function QueryValueEx(ByVal lhKey As Long, ByVal szValueName As _
   String, vValue As Variant) As Long
       Dim cch As Long
       Dim lrc As Long
       Dim lType As Long
       Dim lValue As Long
       Dim sValue As String

       On Error GoTo QueryValueExError

       ' Determine the size and type of data to be read
       lrc = RegQueryValueExNULL(lhKey, szValueName, 0&, lType, 0&, cch)
       If lrc <> ERROR_NONE Then Error 5

       Select Case lType
           ' For strings
           Case REG_SZ:
               sValue = String(cch, 0)
   lrc = RegQueryValueExString(lhKey, szValueName, 0&, lType, _
   sValue, cch)
               If lrc = ERROR_NONE Then
                   vValue = Left$(sValue, cch - 1)
               Else
                   vValue = Empty
               End If
           ' For DWORDS
           Case REG_DWORD:
   lrc = RegQueryValueExLong(lhKey, szValueName, 0&, lType, _
   lValue, cch)
               If lrc = ERROR_NONE Then vValue = lValue
           Case Else
               'all other data types not supported
               lrc = -1
       End Select

QueryValueExExit:
       QueryValueEx = lrc
       Exit Function
QueryValueExError:
       Resume QueryValueExExit
End Function

Private Sub Theater()
Dim lRetVal As Long         'result of the API functions
Dim hKey As Long         'handle of opened key
Dim vValue As Variant      'setting of queried value

lRetVal = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Microsoft\Internet Explorer\Main", 0, KEY_ALL_ACCESS, hKey)
lRetVal = QueryValueEx(hKey, "Fullscreen", vValue)
If UCase$(Trim$(vValue)) = "NO" Then
    SendKeys "{F11}"
    bolTheater = False
Else
    bolTheater = True
End If
RegCloseKey (hKey)

End Sub


Private Function IEDoc_onclick() As Boolean
On Error Resume Next
If bolTheater = False Then
    SendKeys "{F11}"
End If

End Function

Private Sub Label1_Click()
On Error Resume Next
If bolTheater Then
    SendKeys "{F11}"
End If
End Sub

Private Sub UserControl_Initialize()
Call Theater
End Sub


Private Sub UserControl_Show()
Set IEDoc = UserControl.Parent.Script.document
IEDoc.body.bgColor = "black"

End Sub
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6466179
This is a better one (it returns Theatermode to previous state!):


Private WithEvents WB As MSHTML.HTMLWindow2

Private bolTheater As Boolean
Private Const REG_SZ As Long = 1
Private Const REG_DWORD As Long = 4

Private Const HKEY_CURRENT_USER = &H80000001


Private Const ERROR_NONE = 0
Private Const ERROR_BADDB = 1
Private Const ERROR_BADKEY = 2
Private Const ERROR_CANTOPEN = 3
Private Const ERROR_CANTREAD = 4
Private Const ERROR_CANTWRITE = 5
Private Const ERROR_OUTOFMEMORY = 6
Private Const ERROR_INVALID_PARAMETER = 7
Private Const ERROR_ACCESS_DENIED = 8
Private Const ERROR_INVALID_PARAMETERS = 87
Private Const ERROR_NO_MORE_ITEMS = 259

Private Const KEY_ALL_ACCESS = &H3F

Private Const REG_OPTION_NON_VOLATILE = 0

  Private Declare Function RegCloseKey Lib "advapi32.dll" _
  (ByVal hKey As Long) As Long
  Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias _
  "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
  ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions _
  As Long, ByVal samDesired As Long, ByVal lpSecurityAttributes _
  As Long, phkResult As Long, lpdwDisposition As Long) As Long
  Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias _
  "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
  ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As _
  Long) As Long
  Private Declare Function RegQueryValueExString Lib "advapi32.dll" Alias _
  "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As _
  String, ByVal lpReserved As Long, lpType As Long, ByVal lpData _
  As String, lpcbData As Long) As Long
  Private Declare Function RegQueryValueExLong Lib "advapi32.dll" Alias _
  "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As _
  String, ByVal lpReserved As Long, lpType As Long, lpData As _
  Long, lpcbData As Long) As Long
  Private Declare Function RegQueryValueExNULL Lib "advapi32.dll" Alias _
  "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As _
  String, ByVal lpReserved As Long, lpType As Long, ByVal lpData _
  As Long, lpcbData As Long) As Long
  Private Declare Function RegSetValueExString Lib "advapi32.dll" Alias _
  "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
  ByVal Reserved As Long, ByVal dwType As Long, ByVal lpValue As _
  String, ByVal cbData As Long) As Long
  Private Declare Function RegSetValueExLong Lib "advapi32.dll" Alias _
  "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
  ByVal Reserved As Long, ByVal dwType As Long, lpValue As Long, _
  ByVal cbData As Long) As Long



Function QueryValueEx(ByVal lhKey As Long, ByVal szValueName As _
  String, vValue As Variant) As Long
      Dim cch As Long
      Dim lrc As Long
      Dim lType As Long
      Dim lValue As Long
      Dim sValue As String

      On Error GoTo QueryValueExError

      ' Determine the size and type of data to be read
      lrc = RegQueryValueExNULL(lhKey, szValueName, 0&, lType, 0&, cch)
      If lrc <> ERROR_NONE Then Error 5

      Select Case lType
          ' For strings
          Case REG_SZ:
              sValue = String(cch, 0)
  lrc = RegQueryValueExString(lhKey, szValueName, 0&, lType, _
  sValue, cch)
              If lrc = ERROR_NONE Then
                  vValue = Left$(sValue, cch - 1)
              Else
                  vValue = Empty
              End If
          ' For DWORDS
          Case REG_DWORD:
  lrc = RegQueryValueExLong(lhKey, szValueName, 0&, lType, _
  lValue, cch)
              If lrc = ERROR_NONE Then vValue = lValue
          Case Else
              'all other data types not supported
              lrc = -1
      End Select

QueryValueExExit:
      QueryValueEx = lrc
      Exit Function
QueryValueExError:
      Resume QueryValueExExit
End Function

Private Sub Theater()
Dim lRetVal As Long         'result of the API functions
Dim hKey As Long         'handle of opened key
Dim vValue As Variant      'setting of queried value

lRetVal = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Microsoft\Internet Explorer\Main", 0, KEY_ALL_ACCESS, hKey)
lRetVal = QueryValueEx(hKey, "Fullscreen", vValue)
If UCase$(Trim$(vValue)) = "NO" Then
   SendKeys "{F11}"
   bolTheater = False
Else
   bolTheater = True
End If
RegCloseKey (hKey)

End Sub

Private Sub UserControl_Initialize()
Call Theater
End Sub

Private Sub UserControl_Show()
Set IEDoc = UserControl.Parent.Script.document
Set WB = IEDoc.parentWindow
End Sub

Private Sub WB_onbeforeunload()
If bolTheater = False Then
    SendKeys "{F11}"
End If
End Sub
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6467583
I think this would like you. It's OOP.
This code was tested on hard-disk environment, so minor changes
would be done to works on Internet.
'Thanks to AzraSound to provide part of this code:

' Set Refrences in your project to:
' Microsoft HTML Object library     (mshtml.dll)
' Microsoft Internet controls     (shdocwv.dll)

' code:

Private IE As InternetExplorer
Private bolTheater As Boolean
Private Sub GrabWindow(URL As String)
On Error Resume Next
Dim i As Integer
Dim shWin As SHDocVw.ShellWindows

Set shWin = New SHDocVw.ShellWindows
For i = 1 To shWin.Count
    Dim LocUrl As String
    LocUrl = UCase$(Replace(shWin.Item(i).LocationURL, "%20", " "))
    If LocUrl = UCase$("file:///" & URL) Then
        Set IE = shWin.Item(i)
        bolTheater = IE.TheaterMode
        IE.TheaterMode = True
        Exit For
    End If
Next i
End Sub


Private Sub UserControl_Initialize()
'Call Theater
End Sub


Private Sub UserControl_Show()
Dim IEDoc As Object
Set IEDoc = UserControl.Parent.Script.document
Set WB = IEDoc.parentWindow

' mid and replace functions are used because is a
' local reference.
' We need to use WB.Location.href in internet.
GrabWindow Replace(Mid$(WB.location.pathname, 2), "\", "/")
End Sub

Private Sub WB_onbeforeunload()
IE.TheaterMode = bolTheater
End Sub
0
 

Author Comment

by:chhavigarg
ID: 6469842
HI Richei!
Thank you very very much for your help.
I could not able to work in local neither on internet.
Please can u tell me some steps.
If this code working. Where I'm doing wrong.
I just placed a two button on usercontrol and calling a GrabWindow  window replace with one buttong with theatre mode and with another button is theatre mode off.
But its not working..
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6470933
It works!!!
Just tell me the code you use when your are local and when you are on internet.
I tried it on local only since i haven't a site to deploy active x controls.
Due to that, we need to change some values of my code since they are a bit different depending where is executed.
0
 

Author Comment

by:chhavigarg
ID: 6471001
i JUST COPY AND PASTE THE CODE INTO ACTIVEX CONTROL AND RUN IT AND VIEW IN THE BROWSWER. I also tried with using an CLSID.
Please can u write me points to do in just local as I am very new to VB.
Thank u very very much.
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6472364
Try this:
Create a new project active x control, go to menu Project, references and add Microsoft HTML object library and Microsoft internet controls to your new project.
Paste the last code i provided and run the project.
Accept default settings and the active x would work inside a html page of internet explorer, seconds lather, it will change IE to Theatermode.
I did try in this way and works!!!
Do a F8 trace to see variables values.
0
 
LVL 16

Accepted Solution

by:
Richie_Simonetti earned 50 total points
ID: 6472469
Ups! it appears that i posted less code that i thought!
Sorry:

Option Explicit
Private WithEvents WB As MSHTML.HTMLWindow2
Private IE As InternetExplorer
Private bolTheater As Boolean

Private Sub GrabWindow(URL As String)
On Error Resume Next
Dim i As Integer
Dim shWin As SHDocVw.ShellWindows

Set shWin = New SHDocVw.ShellWindows
For i = 1 To shWin.Count
    Dim LocUrl As String
    LocUrl = UCase$(Replace(shWin.Item(i).LocationURL, "%20", " "))
    If LocUrl = UCase$("file:///" & URL) Then
        Set IE = shWin.Item(i)
        bolTheater = IE.TheaterMode
        IE.TheaterMode = True
        Exit For
    End If
Next i
End Sub

Private Sub UserControl_Show()
Dim IEDoc As Object
Set IEDoc = UserControl.Parent.Script.document
Set WB = IEDoc.parentWindow

' mid and replace functions are used because is a
' local reference.
' We need to use WB.Location.href in internet.
GrabWindow Replace(Mid$(WB.location.pathname, 2), "\", "/")
End Sub

Private Sub WB_onbeforeunload()
IE.TheaterMode = bolTheater
End Sub

I tested it again and again and it works, for sure!
Let me know.
0
 

Author Comment

by:chhavigarg
ID: 6473740
Hi Richie!
Thank again.
But I tried it and debug it its not working.
Please check once again. Let me know I think u must have forgot some point to do specfy it.
After debug its neve get into if LOCIrl so I comment that if part. but code is reading neither gives me an error.
Can u send me an attached zip file. with vb code.
on this email ID chhavia@excite.com
I testing this code on WIN2k with IE 6.
Thanks



0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6474264
i will sent you but take care thtat, in body's  question you were talking about IE5 (i haven't it and i cannot test it with it).
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 6476449
Cool!
It works, then?
0
 

Author Comment

by:chhavigarg
ID: 6476641
Yea! IT works.. damn me...!! I was trying with IE 6.0.
Thanks once again..!
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Most everyone who has done any programming in VB6 knows that you can do something in code like Debug.Print MyVar and that when the program runs from the IDE, the value of MyVar will be displayed in the Immediate Window. Less well known is Debug.Asse…
You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
The purpose of this video is to demonstrate how to set up the WordPress backend so that each page automatically generates a Mailchimp signup form in the sidebar. This will be demonstrated using a Windows 8 PC. Tools Used are Photoshop, Awesome…

705 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

22 Experts available now in Live!

Get 1:1 Help Now