Thank you very much, that fixed it! Do you know if this change is safe on
other platforms like NT or 95?
Tony
----- Original Message -----
From: "Eloy A. Gonzales" <[EMAIL PROTECTED]>
To: "Perl-Win32-Users Mailing List" <[EMAIL PROTECTED]>
Sent: Friday, May 12, 2000 9:01 AM
Subject: Re: BrowseForFolder trouble
> On Thu, 11 May 2000, Tony Auerbach wrote:
>
> > Subject: BrowseForFolder trouble
> >
> > I'm trying to use the use the BrowseForFolder fucntion in the
> > Tk::Win32::FileOp package and perl is crashing. It's the usual Windows
> > "illegal operation" message and the details begin with "PERL caused an
> > invalid page fault in module SHELL32.DLL at 016f:7fd07775."
> >
> > The OpenDialog fuction works fine. Is anyone successfully using
> > BrowseForFolder? Is it my code or a bug in the module? Here is a
sample
> > of code that will always crash.
>
> Same problem showed up on my win98 machines when upgraded them to 2nd
Edition.
> I finally found this in the mail archives ( Hope the next rev comes out
> sometime soon and the fix makes it into it ) and it fixed it:
>
> >From [EMAIL PROTECTED] Fri May 05 10:13:25 2000
> Date: Sun, 16 Apr 2000 17:55:43 +0400
> From: Mike Blazer <[EMAIL PROTECTED]>
> To: Perl-Win32-Users Mailing List
<[EMAIL PROTECTED]>
> Cc: Perl-Win32-Users Mailing List
<[EMAIL PROTECTED]>
> Subject: Re: FileOp::GetWindowHandle bug
>
> Guys, I'm sorry - first of all, yes, SleepEx is correct, please change
it - I don't understand how this could work in previous Perl versions.
>
> But this is not enough. As a quick fix please find replace in your version
of FileOp this subroutine:
>
> sub BrowseForFolder {
> #=======================
> my ($hwndOwner, $pidlRoot, $pszDisplayName,
> $lpszTitle, $nFolder, $ulFlags,
> $lpfn, $lParam, $iImage, $pszPath)
> =
> (GetWindowHandle(), "\0"x260, "\0"x260,
> shift() || "\0", shift(), shift() | 0x0000,
> 0, 0, 0, "\0"x260);
>
> $nFolder = CSIDL_DRIVES() unless defined $nFolder;
>
> $Win32::FileOp::SHGetSpecialFolderLocation->Call($hwndOwner, $nFolder,
$pidlRoot)
> and return undef;
> $pidlRoot = hex unpack 'H*',(join'', reverse split//, $pidlRoot);
>
> my $browseinfo = pack 'LLppILLI',
> ($hwndOwner, $pidlRoot, $pszDisplayName, $lpszTitle,
> $ulFlags, $lpfn, $lParam, $iImage);
>
> my $bool = $Win32::FileOp::SHGetPathFromIDList->Call(
> $Win32::FileOp::SHBrowseForFolder->Call($browseinfo),
> $pszPath
> );
>
> $pszPath =~ s/\0.*$//s;
> $bool ? $pszPath : undef;
> }
>
>
> This works with older builds or 5.6 either.
>
> This a quick fix. This would be fixed in the upcoming Win32::FileOp
release.
>
> Thanks, Steve, for pointing it out!
>
> Steve Sherman wrote:
> >
> > I found a bug in Win32::FileOp::GetWindowHandle which caused my perl
script
> > to crash. After calling GetWindowHandle(), the Win95 "illegal
operation"
> > box popped up. The details said "PERL caused an invalid page fault in
> > module PERL56.DLL at 0137:2804f87b."
> >
> > I found that changing the line:
> >
> > my $SleepEx = new Win32::API("kernel32", "Sleep", ['N','I'],'V');
> >
> > to:
> >
> > my $SleepEx = new Win32::API("kernel32", "SleepEx", ['N','I'],'V');
> >
> > fixed my problem. I am using version 0.11 of FileOp, which I downloaded
a
> > few days ago with ppm from http://jenda.mccann.cz/perl. I am using
> > ActivePerl 5.6. BTW, GetWindowHandle is used by
FileOp::BrowseForFolder.
> >
> > -- Steve Sherman
>
> --
> ==================================
> Mike Blazer
> [EMAIL PROTECTED]
> http://base.dux.ru/guest/fno/perl/
> ==================================
>
> ~=====================================================================~
> ~[ Eloy A. Gonzales Voice: (505) 844-1063 ]~
> ~[ Sandia National Laboratories Fax: (505) 844-7059 ]~
> ~[ Org 05743 MS 0965 email: [EMAIL PROTECTED] ]~
> ~[ Albuquerque, New Mexico 87185-0965 ]~
> ~=====================================================================~
>
>
>
>
> ---
> You are currently subscribed to perl-win32-users as: [EMAIL PROTECTED]
> To unsubscribe, forward this message to
> [EMAIL PROTECTED]
> For non-automated Mailing List support, send email to
> [EMAIL PROTECTED]
>
>
---
You are currently subscribed to perl-win32-users as: [[email protected]]
To unsubscribe, forward this message to
[EMAIL PROTECTED]
For non-automated Mailing List support, send email to
[EMAIL PROTECTED]