You might want to try using win32gui.GetOpenFileNameW. It uses keyword arguments and doesn't require that you build a struct yourself:
win32gui.GetOpenFileNameW(File='myfile.txt', Filter='Texts and scripts\0*.txt;*.py\0Py stuff\0*.py\0') Roger "sri2097" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Hi all, > I have got this far till now - > > import win32gui, struct, array, string > > OFN_ALLOWMULTISELECT=0x00000200 > OFN_EXPLORER=0x00080000 > > def arrayToStrings(resultArray): > """return list-of-strings corresponding to a char array, > where each string is terminated by \000, and the whole > list by two adjacent \000 bytes > """ > astr=resultArray.tostring() > manyStrings=[] > # perhaps a loop of string.split would be faster... > while len(astr) and astr[0]!='\000': > i=astr.index('\000') > manyStrings.append(astr[:i]) > astr=astr[i+1:] > return manyStrings > > def szFrom(anarray): > """return the string-pointer (sz) corresponding to a char > array, 0 (null pointer) if no array > """ > if anarray: return anarray.buffer_info()[0] > else: return 0 > > def arrayFrom(astring,additional=0): > """return a char array built from a string, plus 0 > or more \000 bytes as filler > """ > if not astring: astring='' > return array.array('c',astring+additional*'\000') > > def arrayMulti(stringlist): > """return a char array built from many strings, each > separated by a \000 byte, and two \000's at the end > """ > return arrayFrom(string.join(stringlist,'\000'),2) > > def buildOfn(resultarray,filters=None,initdir=None,title=None, > multisel=1,oldlook=0): > """build an OPENFILENAME struct as a string, with several > options and a given result-array for the string[s] that > will result from the GetOpenFileName call > """ > flags=OFN_EXPLORER > if multisel: flags=flags|OFN_ALLOWMULTISELECT > if oldlook: flags=flags&~OFN_EXPLORER > szfile,maxfile=resultarray.buffer_info() > szfilter=szFrom(filters) > szinitdir=szFrom(initdir) > sztitle=szFrom(title) > return struct.pack( > "3i2P2iPiPi2PI2hPi2P", > 76, 0, 0, # size, owner-hwnd, hinstance > szfilter, 0, 0, 0, # filter, custom-filter, > max-cust-filter,filter-index > szfile, maxfile, # file, max-file > 0, 0, # file-title, max-file-title > szinitdir, sztitle, # initial-dir, dialog-title > flags, 0, 0, # flags, file-offset, file-extension > 0, # def-ext > 0, 0, 0) # cust-data, func-hook, template-name > > def openNames(forsave=0,filters=None,initdir=None,title=None, > initfile=None,multisel=1,oldlook=0): > """return a list of filenames for open or save, given > interactively by the user through a common-dialog; if > more than 1 string is returned, the first is the directory, > followed by the filenames. > """ > resultBuffer=arrayFrom(initfile,8192) > title=arrayFrom(title) > initdir=arrayFrom(initdir) > filters=arrayMulti(filters) > ofn=buildOfn(resultBuffer,filters,initdir,title,multisel,oldlook) > if forsave: isok=win32gui.GetSaveFileName(ofn) > else: isok=win32gui.GetOpenFileName(ofn) > if not isok: return [] > return arrayToStrings(resultBuffer) > > def _test(): > return openNames( > filters=('Texts and scripts','*.txt;*.py','Py stuff','*.py*') > ) > > if __name__=='__main__': > print _test() > > But hear the Dialogue_box stops and waits for the user to select a > file. But Since I have the entire path of the file, How do I pass it to > the file name to populate the box automatically instead of the user > manually selecting a file. > > Any further help will be appreciated. > ----== Posted via Newsfeeds.Com - Unlimited-Unrestricted-Secure Usenet News==---- http://www.newsfeeds.com The #1 Newsgroup Service in the World! 120,000+ Newsgroups ----= East and West-Coast Server Farms - Total Privacy via Encryption =---- -- http://mail.python.org/mailman/listinfo/python-list