Windows+Python: Why is the first opened window not shown active?

2013-12-17 Thread asmwarrior
Hello, Python community.

I have found a very strange problem about using the python scripts under Python 
Windows command line prompt, to reproduce this issue, you can simply do those 
steps:

 1. start a Python command line prompt(this is usually to hit the Start 
Menu->Python 2.7->Python(command line).
 2.

type the following text, and hit Enter key.

|import ctypes|

 3.

type the following text, and hit Enter key.

|ctypes.windll.user32.MessageBoxA(0, "Your text", "Your title", 1)|

 4. You will see a message box opened, but this message box window is not 
activated.
 5. Use the mouse to click on the icon of the message box in task bar to 
activate the message box
 6. Close the message box
 7.

type the text again in the Python prompt shell

|ctypes.windll.user32.MessageBoxA(0, "Your text", "Your title", 1)|

 8. Now, the message box is showed activated (the expected behavior) 

So, my question is, why the first message box(window) is not shown active? I 
originally find this issue when I run a Python pretty printer under GDB command 
line, because I want to use some python pretty printer to visual the data, like 
this GDB cv::Mat python object issue when debugging a c++ program 
,
 I need to show the OpenCV Image window immediately after I type the plot 
command.

But later I found that this is an issue related to Python itself.


Thanks.

Yuanhui Zhang

BTW: I post the same question in StackOverflow: 
http://stackoverflow.com/questions/20614249/windowspython-why-is-the-first-opened-window-not-shown-active


-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Windows+Python: Why is the first opened window not shown active?

2013-12-18 Thread asmwarrior
On 2013-12-18 14:35, asmwarrior wrote:
> Hello, Python community.
>
> I have found a very strange problem about using the python scripts under 
> Python Windows command line prompt, to reproduce this issue, you can simply 
> do those steps:
>
>  1. start a Python command line prompt(this is usually to hit the Start 
> Menu->Python 2.7->Python(command line).
> 2.
>
> type the following text, and hit Enter key.
>
> |import ctypes|
> 3.
>
> type the following text, and hit Enter key.
>
> |ctypes.windll.user32.MessageBoxA(0, "Your text", "Your title", 1)|
>  4. You will see a message box opened, but this message box window is not 
> activated.
>  5. Use the mouse to click on the icon of the message box in task bar to 
> activate the message box
>  6. Close the message box
> 7.
>
> type the text again in the Python prompt shell
>
> |ctypes.windll.user32.MessageBoxA(0, "Your text", "Your title", 1)|
>  8. Now, the message box is showed activated (the expected behavior) 
>
> So, my question is, why the first message box(window) is not shown active? I 
> originally find this issue when I run a Python pretty printer under GDB 
> command line, because I want to use some python pretty printer to visual the 
> data, like this GDB cv::Mat python object issue when debugging a c++ program 
> <http://stackoverflow.com/questions/16227166/gdb-cvmat-python-object-issue-when-debugging-a-c-program>,
>  I need to show the OpenCV Image window immediately after I type the plot 
> command.
>
> But later I found that this is an issue related to Python itself.
>
>
> Thanks.
>
> Yuanhui Zhang
>
> BTW: I post the same question in StackOverflow: 
> http://stackoverflow.com/questions/20614249/windowspython-why-is-the-first-opened-window-not-shown-active
>
>
FYI:

I get the an answer in stackoverflow in the above link which solve my problem. 
(http://stackoverflow.com/a/20651708/154911)

It looks like the Windows OS system block a console window to create/pop-up a 
window, so I need some opitons like:

MB_SETFOREGROUNDWINDOW 
<http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505%28v=vs.85%29.aspx>

Thanks.

Yuanhui Zhang
-- 
https://mail.python.org/mailman/listinfo/python-list


Re: Windows+Python: Why is the first opened window not shown active?

2013-12-18 Thread asmwarrior
On 2013-12-18 17:05, Tim Golden wrote:
> This isn't related to Python specifically: ctypes is just handing the
> values you pass straight on to the underlying DLL (here: user32.dll).
> 
> If you check the MSDN page for the MessageBox function:
> 
> http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx
> 
> you can see there's a MB_SETFOREGROUND flag with value 0x0001L which
> seems to do what you want.
> 
> Why the Message box is activated the second time when it isn't the
> first, I have no idea. But it's Windows which is deciding what to do
> there, not Python.
> 
> TJG
Thanks Tim for the reply, indeed this is not an issue in Python, it is related 
to Windows OS.

Yuanhui Zhang
-- 
https://mail.python.org/mailman/listinfo/python-list