Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: Win32::API (finally)

by dada (Chaplain)
on Mar 07, 2003 at 14:17 UTC ( #241138=note: print w/ replies, xml ) Need Help??


in reply to Re: Win32::API
in thread Win32::API

as promised (and after a mere 6 months or so :-), I've released version 0.40 of Win32::API.

it may not be on CPAN at the time I write, but here's the link to download it from my site:
Win32-API-0.40.tar.gz

the synopsis I gave in my previous message still applies :-)

there is even support for callbacks, but it is very experimental: feedback is appreciated as always.

cheers,
Aldo

King of Laziness, Wizard of Impatience, Lord of Hubris


Comment on Re: Win32::API (finally)
Replies are listed 'Best First'.
Re: Re: Win32::API (finally)
by SyN/AcK (Scribe) on Jul 16, 2003 at 04:13 UTC
    Wow man, you must not really be the King of Laziness, cause this is awesome! I really appreciate your work.
Re: Re: Win32::API (finally)
by neauva (Initiate) on Aug 19, 2003 at 22:01 UTC
    Very nice and Very handy package.
    I'm having a problem, however... :-)

    In short, I'm trying to use Win32::API to call CreateProcess.

    All is well except for the LPSTARTUPINFO and LPPROCESS_INFORMATION parms I pass into the call. If I create these using pack(...) for the correct number of bytes, it works fine and I can get the PID back out of the PROCESS_INFORMATION object (my ultimate goal).

    If, however, I create these parms using the Win32::API::Struct->new( 'STARTUPINFO' ) approach, the call fails. I'm even setting the .cb field to the size of the structure. The error I get back (using Win32::GetLastError()) is "Invalid access to memory location". Here's the function call I'm making (same in both cases):

    <-----------snip------------> # version 1 - succeeds my $si = pack( "L17", ((0) x 17) ); $si = pack( "LL16", length( $si ), ((0) x 16 ) ); my $pi = pack( "L4", ((0) x 4 ) ); # version 2 - fails my $si = Win32::API::Struct->new( "STARTUPINFO" ); $si->{cb} = $si->sizeof(); my $pi = Win32::API::Struct->new( "PROCESS_INFORMATION" ); my $retval = CreateProcess( "c:\\winnt\\notepad.exe", 0, # unused - cmdline ptr, unused 0, # unused - proc attributes ptr 0, # unused - thread attributes ptr 0, # unused - inherit handles 0, # unused - creation flags 0, # unused - env pointer 0, # unused - current dir ptr $si, $pi ); <-----------snip------------>
    Should CreateProcess be called the same way in both cases? When a ->new('STARTUPINFO') is called, is the memory zeroed-out upon creation? Any idea why the pack version succeeds and the Struct verion fails?

    TIA!
    D. Smith

      At least part of the problem is that Win32::API::Struct (or rather, Win32::API::Type) does have support for the STARTUPINFO structure, or at least not as of version 0.41 which is the latest version I can find.

      The fact that you aren't receiving the warnings I get:

      Unknown Win32::API::Struct 'STARTUPINFO' at - line 7 Can't call method "sizeof" on an undefined value at - line 8, <DATA> l +ine 164.

      means that either

      • you don't have warnings enabled.

        If so, turn them on, it'll save you much grief:)

      • You have a later version of the package than I have been able to find.

        If so, which version is it and where can I get a copy:)

      • You have a (locally?) modified copy of the package.

        If so, consult the people that made the modifications.


      Examine what is said, not who speaks.
      "Efficiency is intelligent laziness." -David Dunham
      "When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller
      If I understand your problem, I can solve it! Of course, the same can be said for you.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://241138]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (17)
As of 2015-07-07 17:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (93 votes), past polls