Podi wrote in news:[EMAIL PROTECTED] in 
comp.lang.python:

> Rob Williscroft wrote:
>>
>> Google will usually find the documentation of anything in the
>> Windows API however sometimes it also helps to add "msdn" to
>> your search as in:

> Yes, thank you.
> 
> I found the function SetLocalTime or SetSystemTime to set the time from
> MSDN http://msdn2.microsoft.com/en-us/library/ms724942.aspx. I am
> having trouble passing parameter to the functions in Python.
> 

Ok I see, you will probably need these 2 bits of the ctypes
documentation:

  http://docs.python.org/lib/ctypes-structures-unions.html
  http://docs.python.org/lib/ctypes-pointers.html

>From there on geting to this is farly straight forward:
 
from ctypes import *
from ctypes.wintypes import WORD

class SYSTEMTIME(Structure):
  _fields_ = [
      ( 'wYear', WORD ),
      ( 'wMonth', WORD ),
      ( 'wDayOfWeek', WORD ),
      ( 'wDay', WORD ),
      ( 'wHour', WORD ),
      ( 'wMinute', WORD ),
      ( 'wSecond', WORD ),
      ( 'wMilliseconds', WORD ),
    ]

GetSystemTime = windll.kernel32.GetSystemTime

st = SYSTEMTIME()

GetSystemTime( pointer( st ) )

print st.wYear, st.wMonth, st.wDayOfWeek

A bit more digging into the docs will get to this:

prototype = WINFUNCTYPE( None, POINTER( SYSTEMTIME ) )
paramflags = (1, "lpSystemTime" ),
GetSystemTime = prototype(("GetSystemTime", windll.kernel32), paramflags )

st = SYSTEMTIME()
GetSystemTime( st )
print st.wYear, st.wMonth, st.wDayOfWeek

Which will give a much better error message if you try to
pass something other than a SYSTEMTIME, as well as wrapping
the argument in pointer for you.

Rob.
-- 
http://www.victim-prime.dsl.pipex.com/
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to