From: Thomas E. <th...@es...> - 2009-11-04 10:08:52
|
I made a py script that takes a user definable .ini file to name a path where the script will create directories. If the ini file contains a drive letter, that is not present in the system, the py-script does an appropriate error handling to "warn" the user and to fallback to a directory that exists. Works perfect in the script without any errors. Using the "compilation" of py2exe the resulting exe pops up with en error message before the error handling will work: "exception processing message 0xc0000013" If I hit "continue" the exe proceeds. How can I get rid of this message? Thanks, Thomas |
From: Mark H. <ski...@gm...> - 2009-11-04 10:13:33
|
On 4/11/2009 8:55 PM, Thomas Eschenburg wrote: > I made a py script that takes a user definable .ini file to name a path > where the script will create directories. > > If the ini file contains a drive letter, that is not present in the system, > the py-script does an appropriate error handling to "warn" the user and to > fallback to a directory that exists. Works perfect in the script without any > errors. > > Using the "compilation" of py2exe the resulting exe pops up with en error > message before the error handling will work: > > "exception processing message 0xc0000013" > > If I hit "continue" the exe proceeds. How can I get rid of this message? Looking into the SetErrorMode function (available via win32api) might be worthwhile... HTH, Mark |
From: Thomas E. <th...@es...> - 2009-11-04 11:25:46
|
Thanks Mark, this helped a lot, pointing me to the right solution :-) Found a good function on http://stackoverflow.com/questions/851010/how-do-i-check-if-a-disk-is-in-a-d rive-using-python import win32api def testDrive( currentLetter ): """ Tests a given drive letter to see if the drive is question is ready for access. This is to handle things like floppy drives and USB card readers which have to have physical media inserted in order to be accessed. Returns true if the drive is ready, false if not. """ returnValue = False #This prevents Windows from showing an error to the user, and allows python #to handle the exception on its own. oldError = win32api.SetErrorMode( 1 ) #note that SEM_FAILCRITICALERRORS = 1 try: freeSpace = win32file.GetDiskFreeSpaceEx( letter ) except: returnValue = False else: returnValue = True #restore the Windows error handling state to whatever it was before we #started messing with it: win32api.SetErrorMode( oldError ) return returnValue Regards, Thomas |