Page 2 of 2

Re: Window Focus ?

Posted: Wed Jun 20, 2012 7:53 pm
by netmaestro
If you're on Windows, this should help. If not, not so much:

Code: Select all

Procedure OpenWin()
  
  If OpenWindow(0,0,0,320,240,"",#PB_Window_Minimize | #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
    WebGadget(1,0,0,320,240,"")
  EndIf
  
EndProcedure


Procedure max(a)
  Delay(2000) ; <------------------- Use this time to click the IDE window bar to set focus
  PostMessage_(WindowID(0),#WM_SYSCOMMAND, #SC_RESTORE, 0) 
  SetForegroundWindow_(WindowID(0))
EndProcedure

OpenWin()
CreateThread(@max(),0)

Repeat
  
Until WaitWindowEvent()=#WM_CLOSE

Re: Window Focus ?

Posted: Wed Jun 20, 2012 8:01 pm
by Nubcake
I tested your code and it still gives the same results as before but if you comment out the webgadget and set the focus in the IDE it works , what's the problem there? I'm on Windows

Re: Window Focus ?

Posted: Wed Jun 20, 2012 8:16 pm
by IdeasVacuum
...netmaestro's code is working fine on my machine - WinXP 32bit.

Is it a problem with, say specifically Win7? What Windows are you using Nubcake?

Re: Window Focus ?

Posted: Wed Jun 20, 2012 8:19 pm
by Nubcake
IdeasVacuum wrote:...netmaestro's code is working fine on my machine - WinXP 32bit.

Is it a problem with, say specifically Win7? What Windows are you using Nubcake?
Win 7 Ultimate 64bit - It works for you? Even with the webgadget ? did you set the focus in/on the pb window/ide

Re: Window Focus ?

Posted: Wed Jun 20, 2012 8:28 pm
by IdeasVacuum
It works for you?
yes
Even with the webgadget ?
yes
did you set the focus in/on the pb window/ide
yes

So, are you compiling a 32bit app on 64bit windows or a 64 bit app? That might be significant.

Re: Window Focus ?

Posted: Wed Jun 20, 2012 8:36 pm
by Nubcake
IdeasVacuum wrote:
It works for you?
yes
Even with the webgadget ?
yes
did you set the focus in/on the pb window/ide
yes

So, are you compiling a 32bit app on 64bit windows or a 64 bit app? That might be significant.
32 bit :|

Re: Window Focus ?

Posted: Wed Jun 20, 2012 8:50 pm
by netmaestro
Ok, another try then:

Code: Select all

Global tid

Procedure OpenWin()
  
  If OpenWindow(0,0,0,320,240,"",#PB_Window_Minimize | #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
    WebGadget(1,0,0,320,240,"")
  EndIf
  
EndProcedure


Procedure max(a)
  Delay(2000) ; <------------------- Use this time to click the IDE window bar to set focus

  AttachThreadInput_(GetCurrentThreadId_(), tid, #True)
  SendMessage_(WindowID(0),#WM_SYSCOMMAND, #SC_RESTORE, 0) 
  SetForegroundWindow_(WindowID(0))
  SetFocus_(WindowID(0))
 
EndProcedure

OpenWin()
tid = GetCurrentThreadId_()
CreateThread(@max(),0)

Repeat
  
Until WaitWindowEvent()=#WM_CLOSE

Re: Window Focus ?

Posted: Wed Jun 20, 2012 8:52 pm
by Nubcake
netmaestro wrote:Ok, another try then:

Code: Select all

Global tid

Procedure OpenWin()
  
  If OpenWindow(0,0,0,320,240,"",#PB_Window_Minimize | #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
    WebGadget(1,0,0,320,240,"")
  EndIf
  
EndProcedure


Procedure max(a)
  Delay(2000) ; <------------------- Use this time to click the IDE window bar to set focus

  AttachThreadInput_(GetCurrentThreadId_(), tid, #True)
  SendMessage_(WindowID(0),#WM_SYSCOMMAND, #SC_RESTORE, 0) 
  SetForegroundWindow_(WindowID(0))
  SetFocus_(WindowID(0))
 
EndProcedure

OpenWin()
tid = GetCurrentThreadId_()
CreateThread(@max(),0)

Repeat
  
Until WaitWindowEvent()=#WM_CLOSE
Doesn't work :x Anyone else have this problem ?

Re: Window Focus ?

Posted: Wed Jun 20, 2012 9:03 pm
by netmaestro
Let's go postal on it then:

Code: Select all

Global tid, r

Procedure OpenWin()
  
  If OpenWindow(0,0,0,320,240,"",#PB_Window_Minimize | #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
    WebGadget(1,0,0,320,240,"")
  EndIf
  
EndProcedure


Procedure max(a)
  Delay(2000) ; <------------------- Use this time to click the IDE window bar to set focus

  AttachThreadInput_(GetCurrentThreadId_(), tid, #True)
  SendMessage_(WindowID(0),#WM_SYSCOMMAND, #SC_RESTORE, 0) 
  SetForegroundWindow_(WindowID(0))
  SetFocus_(WindowID(0))
  ShowCursor_(0)
  GetCursorPos_(cp.POINT)
  SetCursorPos_(WindowX(0)+2, WindowY(0)+2)
  keybd_event_(#VK_LBUTTON,0,0,0)
  keybd_event_(#VK_LBUTTON,0,#KEYEVENTF_KEYUP,0)
  SetCursorPos_(cp\x, cp\y)
  ShowCursor_(1)
  r=1
EndProcedure

OpenWin()
tid = GetCurrentThreadId_()
CreateThread(@max(),0)


Repeat
  If r
    r=0
    If GetFocus_() = WindowID(0)
      Debug "Success"
    Else
      Debug "No success"
    EndIf
  EndIf
  
Until WaitWindowEvent()=#WM_CLOSE

Re: Window Focus ?

Posted: Wed Jun 20, 2012 9:06 pm
by Nubcake
netmaestro wrote:Let's go postal on it then:

Code: Select all

Global tid, r

Procedure OpenWin()
  
  If OpenWindow(0,0,0,320,240,"",#PB_Window_Minimize | #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
    WebGadget(1,0,0,320,240,"")
  EndIf
  
EndProcedure


Procedure max(a)
  Delay(2000) ; <------------------- Use this time to click the IDE window bar to set focus

  AttachThreadInput_(GetCurrentThreadId_(), tid, #True)
  SendMessage_(WindowID(0),#WM_SYSCOMMAND, #SC_RESTORE, 0) 
  SetForegroundWindow_(WindowID(0))
  SetFocus_(WindowID(0))
  ShowCursor_(0)
  GetCursorPos_(cp.POINT)
  SetCursorPos_(WindowX(0)+2, WindowY(0)+2)
  keybd_event_(#VK_LBUTTON,0,0,0)
  keybd_event_(#VK_LBUTTON,0,#KEYEVENTF_KEYUP,0)
  SetCursorPos_(cp\x, cp\y)
  ShowCursor_(1)
  r=1
EndProcedure

OpenWin()
tid = GetCurrentThreadId_()
CreateThread(@max(),0)


Repeat
  If r
    r=0
    If GetFocus_() = WindowID(0)
      Debug "Success"
    Else
      Debug "No success"
    EndIf
  EndIf
  
Until WaitWindowEvent()=#WM_CLOSE
Success for both (when not in ide and when in ide) however when in the ide only SetForeGroundWindow() works ; the window flashes in the taskbar but is not brought up over the other windows like before.

Re: Window Focus ?

Posted: Wed Jun 20, 2012 11:50 pm
by RASHAD
See if it works for you

Code: Select all

Procedure OpenWin()
  If OpenWindow(0,0,0,320,240,"",#PB_Window_Minimize | #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
    WebGadget(1,0,0,320,240,"")
  EndIf
EndProcedure

Procedure max(a)
  Delay(2000) ; <------------------- Use this time to click the IDE window bar to set focus
  SendMessage_(#HWND_BROADCAST, #WM_SYSCOMMAND, #SC_HOTKEY, WindowID(0))
EndProcedure

OpenWin()
CreateThread(@max(),0)

Repeat  
Until WaitWindowEvent()=#WM_CLOSE


Re: Window Focus ?

Posted: Wed Jun 20, 2012 11:52 pm
by Nubcake
RASHAD wrote:See if it works for you

Code: Select all

Procedure OpenWin()
  If OpenWindow(0,0,0,320,240,"",#PB_Window_Minimize | #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
    WebGadget(1,0,0,320,240,"")
  EndIf
EndProcedure

Procedure max(a)
  Delay(2000) ; <------------------- Use this time to click the IDE window bar to set focus
  SendMessage_(#HWND_BROADCAST, #WM_SYSCOMMAND, #SC_HOTKEY, WindowID(0))
EndProcedure

OpenWin()
CreateThread(@max(),0)

Repeat  
Until WaitWindowEvent()=#WM_CLOSE

Works! Thanks RASHAD! :mrgreen: :D :D

Re: Window Focus ?

Posted: Wed Jun 20, 2012 11:54 pm
by IdeasVacuum
Another Rescue by Rashad! 8)

(works on XP too)