[python-win32] WMI troubles!

Alex Hall mehgcap at gmail.com
Fri Jan 15 19:49:30 CET 2010


Regarding question 2, about only receiving one number for two cores, I have 
a counter in the loop which gets incremented each time the loop runs. This 
counter always ends up at 1, not 2, so it is only incremented once. When I 
first started this last week I did put any returns into a list, but the list 
was always just one element long. This seems to tell me that I am only 
getting one number, but I should be getting two. Is there a syntax thing 
that I am missing or confused about, or is wmi refusing me the information 
about my other core? Is there a different class I should be using to get the 
load per core?

As far as pyHook, it sounds like it is not going to work too well. Are you 
saying it could be the cause of the wmi troubles? If so, is there another 
library I should use instead? I want this to be a global thing, so no matter 
where in Windows you are, you need only press a hotkey to hear the status of 
your hardware, like a sighted person need only glance at their resource 
monitor gadget/sidebar app. For that reason I avoided pyGame and wx since, 
as I understand it, they only monitor keypresses in their windows, not 
through the entire system.

Finally, when you say "calling pythoncom.CoInitialize() in every callback", 
what do you mean by 'callback'?


Have a great day,
Alex
Email: mehgcap at gmail.com
----- Original Message ----- 
From: "Tim Roberts" <timr at probo.com>
To: "Python-Win32 List" <python-win32 at python.org>
Sent: Friday, January 15, 2010 13:33
Subject: Re: [python-win32] WMI troubles!


> Alex Hall wrote:
>>
>> Anyway, onto the problem. I am working on a simple resource monitor (I
>> have never found one that works well with screen readers, so I am
>> writing one). I am using python2.6 with all the win32 libs installed.
>> My monitor will use wmi to get all of its information, and it was
>> going pretty well until a few hours ago, when I started receiving
>> seemingly random errors. I can call my functions, such as getFreeRam
>> or getLoad, with no problem as long as the call is hard-coded into the
>> script. However, when I try to call said functions from a function
>> monitoring keyboard input (using pyHooks), I get an error and the
>> program crashes (at least it did until I put a try/except in there,
>> but hitting the hotkey over and over always gives me an error).
>
> Windows hooks run in a unique environment.  When you install a Windows
> hook, you are actually injecting a DLL into every process in the
> system.  (It's not a low overhead operation!)  The code in the keyboard
> hook runs as part of another processs.
>
> Now, I have not looked into the pyHooks code to see if they are managing
> that, by using some kind of inter-process communication.  If they are
> not, then you are very limited in what you can do in your callback.
> "print" wouldn't work, because that process has a different standard
> output.  You would need to send a signal back to your own process.
> Further, COM will not have been initialized in that other thread, so you
> wouldn't be able to use a COM object, like "Say.Tools".  You can try
> calling pythoncom.CoInitialize() in every callback, I suppose.
>
>
>> I will paste the entire file below. It is not very commented yet, so
>> if something does not make sense, please let me know. My questions are:
>>
>> 1. Why am I getting these errors?
>
> What errors do you get?  I don't think you told us that.
>
>
>> 2. The getLoad function only returns one number (the counter is there
>> to double check that the loop really only runs once). I have a dual
>> core AMD, so I expected two numbers, a LoadPercentage for each core,
>> not just one number. How do I get the load per core, not per physical
>> processor?
>
> Well, it only returns one value because you overwrite the value of
> "load" every time through the loop.  If you want to return multiple
> values, you should add each new value to a list, and return the list.
>
>
>> 3. Regarding pyHook: I press my win-` hotkey on the desktop and get
>> something to happen in my script, which is good. However, I also get a
>> Windows error sound. Is there a way to grab that keystroke before
>> Windows can get it to avoid what seems to be passing the keystroke to
>> the active app before my script can get it? I tried returning False in
>> my keyUp function but that made no difference.
>
> This shouldn't be an issue.  The hotkeys are handled by Explorer, which
> sucks up the key after it launches your program.  I don't understand who
> would trigger the sound.
>
> -- 
> Tim Roberts, timr at probo.com
> Providenza & Boekelheide, Inc.
>
> _______________________________________________
> python-win32 mailing list
> python-win32 at python.org
> http://mail.python.org/mailman/listinfo/python-win32 



More information about the python-win32 mailing list