Having trouble using CTypes with a custom function

2006-10-04 Thread tkondal
Hi all.

I just started looking at Python's ctypes lib and I am having trouble
using it for a function.

For starters, here's my Python code:


from ctypes import*;
myStringDLL= cdll.LoadLibrary("myStringDLL.dll");

GetMyString = getattr(myStringDLL,
"?GetMyString@@[EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL 
PROTECTED]@2@@std@@@Z")

strString =  create_string_buffer('\000' * 256);
GetMyString.restype = c_int;
GetMyString.argtypes = [c_char_p];

bResult = GetMyString (strSerialNumber);

print (bResult);
print (strSerialNumber);

#C++ Prototype of the function I want to call:
#bool GetMyString (string& stringParam) ;




I do not have access to the source code of this function so don't ask
me to try different things in C++.  This DLL is working fine.

The problem that I have is that print (strSerialNumber) does not seem
to print the correct string.  What I get is some garbage value of
unprintable characters.  Am I using this the correct way?

Thanks.

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


Re: Having trouble using CTypes with a custom function

2006-10-04 Thread tkondal
Would you have any example of a wrapper for such data types?

Thanks.

Chris Mellon wrote:
> On 4 Oct 2006 11:18:16 -0700, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> > Hi all.
> >
> > I just started looking at Python's ctypes lib and I am having trouble
> > using it for a function.
> >
> > For starters, here's my Python code:
> >
> >
> > from ctypes import*;
> > myStringDLL= cdll.LoadLibrary("myStringDLL.dll");
> >
> > GetMyString = getattr(myStringDLL,
> > "?GetMyString@@[EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL 
> > PROTECTED]@2@@std@@@Z")
> >
> > strString =  create_string_buffer('\000' * 256);
> > GetMyString.restype = c_int;
> > GetMyString.argtypes = [c_char_p];
> >
> > bResult = GetMyString (strSerialNumber);
> >
> > print (bResult);
> > print (strSerialNumber);
> >
> > #C++ Prototype of the function I want to call:
> > #bool GetMyString (string& stringParam) ;
> >
> >
> >
> >
> > I do not have access to the source code of this function so don't ask
> > me to try different things in C++.  This DLL is working fine.
> >
> > The problem that I have is that print (strSerialNumber) does not seem
> > to print the correct string.  What I get is some garbage value of
> > unprintable characters.  Am I using this the correct way?
> >
>
>
>
>
> This function is expecting a C++ std::string object, not a regular C
> style string. You'll need a wrapper function, and one which uses the
> same compiler and STL as the C++ source.
>
> > Thanks.
> >
> > --
> > http://mail.python.org/mailman/listinfo/python-list
> >

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


Re: Having trouble using CTypes with a custom function

2006-10-04 Thread tkondal
Hi Chris.

I know that it is easy to fix the problem using C++.  However, I do not
want to code a wrapper DLL.  I was wondering if there was a workaround
with Python. Everything has to be done in Python as we do not have the
tools for C++ (and we are not planning on getting any).

Thanks.

Chris Mellon wrote:
> 
>
> On 4 Oct 2006 11:35:11 -0700, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> > Would you have any example of a wrapper for such data types?
> >
> > Thanks.
> >
> > Chris Mellon wrote:
> > > On 4 Oct 2006 11:18:16 -0700, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> > > > Hi all.
> > > >
> > > > I just started looking at Python's ctypes lib and I am having trouble
> > > > using it for a function.
> > > >
> > > > For starters, here's my Python code:
> > > >
> > > >
> > > > from ctypes import*;
> > > > myStringDLL= cdll.LoadLibrary("myStringDLL.dll");
> > > >
> > > > GetMyString = getattr(myStringDLL,
> > > > "?GetMyString@@[EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL 
> > > > PROTECTED]@2@@std@@@Z")
> > > >
> > > > strString =  create_string_buffer('\000' * 256);
> > > > GetMyString.restype = c_int;
> > > > GetMyString.argtypes = [c_char_p];
> > > >
> > > > bResult = GetMyString (strSerialNumber);
> > > >
> > > > print (bResult);
> > > > print (strSerialNumber);
> > > >
> > > > #C++ Prototype of the function I want to call:
> > > > #bool GetMyString (string& stringParam) ;
> > > >
> > > >
> > > >
> > > >
> > > > I do not have access to the source code of this function so don't ask
> > > > me to try different things in C++.  This DLL is working fine.
> > > >
> > > > The problem that I have is that print (strSerialNumber) does not seem
> > > > to print the correct string.  What I get is some garbage value of
> > > > unprintable characters.  Am I using this the correct way?
> > > >
> > >
> > >
> > >
> > >
> > > This function is expecting a C++ std::string object, not a regular C
> > > style string. You'll need a wrapper function, and one which uses the
> > > same compiler and STL as the C++ source.
> > >
> > > > Thanks.
> > > >
> > > > --
> > > > http://mail.python.org/mailman/listinfo/python-list
> > > >
> >
>
> in this case it'd be very simple:
>
> bool WrapGetMyString(char * c) {
>   return GetMyString(c)
> }
>
>
> (Note: This isn't unicode safe).
>
> The C++ compiler will handle converting from the char * to the std::string.
>
>
>
> 
> 
> > --
> > http://mail.python.org/mailman/listinfo/python-list
> >

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


Deleting files and folders used by other processes on Windows

2007-07-17 Thread tkondal
Hi,

I have been looking into making my file cleaning script more
intelligent.  The goal of the script is to delete everything on a
drive except for a couple of folders which are skipped by the script.
Recently, I noticed that some files where not being deleted because a
process was using them.  Is there a recipe (needs to run on Windows XP/
2003) for doing the following (more specifically, I need a way to
determine which process is holding a lock on my file):


file=GetFilename();
bLock = IsThereAFileLockOnFile(file)
If (bLock)
{
 process = GetLockingProcess(file);
 TerminateProcess(process);
}
DeleteFile(file);



Thanks.

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


Deleting files and folders used by other processes on Windows

2007-07-18 Thread tkondal
 Hi,

I have been looking into making my file cleaning script more
intelligent. The goal of the script is to delete everything on a
drive except for a couple of folders which are skipped by the script.
Recently, I noticed that some files where not being deleted because a
process was using them. Is there a recipe (needs to run on Windows XP/
2003) for doing the following (more specifically, I need a way to
determine which process is holding a lock on my file):


file=GetFilename();
bLock = IsThereAFileLockOnFile(file)
If (bLock)
{
process = GetLockingProcess(file);
TerminateProcess(process);
}
DeleteFile(file);



Thanks.

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