http://www.perlmonks.org?node_id=1048173


in reply to Calls to win32 hanging in cgi not in command line

"Win32::API" with a file called "API.pm" being used? If so, I might be able to help if you describe more, but you said your not a programmer. I am a maintainer of the Win32::API module.
  • Comment on Re: Calls to win32 hanging in cgi not in command line

Replies are listed 'Best First'.
Re^2: Calls to win32 hanging in cgi not in command line
by cappabi (Initiate) on Aug 06, 2013 at 20:54 UTC
    Oh my - I feel honored to have your response! Here is a sample of a subroutine that calls the api.pm and is not coming back (the database name is a passed through as a "topic", and to reiterate, this works in the command line):
    my $OpenTopic = new Win32::API ("pmdbf32", "OpenTopic", [P, P], N); sub open { my $self = shift; my $topic = shift || "-NA-"; # Topic Name provided? my ($lpTopic, $Topic, $return, $handle); # Already Open? return (-1) if $self->opened(@_); # If no topic is passed, but one was defined previously # then assign $topic that value $topic = $self->{TOPIC} if ($topic eq "-NA-") and (defined($self-> +{TOPIC})); # Return if empty Topic name return (-1) if ($topic eq "-NA-") and (! defined($self->{TOPIC})); # Allocate/Format the data $lpTopic = pack("L", 0); $Topic = pack("a16",$topic); #This is the line that is failing ***** $return = $OpenTopic->Call($Topic, $lpTopic); # Opened Topic OK? if ($return == 0) { ($self->{HANDLE}) = unpack("L", $lpTopic); $self->{TOPIC} = $topic; } else { return (-1); } return $return; }
    Does this provide any insight? Thank you so much!
      Sorry I'm replying so late,
      my $OpenTopic = new Win32::API ("pmdbf32", "OpenTopic", [P, P], N);
      That is wrong, bare letters aren't letters but subs to run. Put single quotes around the parameter letter codes. And add a ".dll" to dll file name. You dont have to, it makes code easier to read.

      are you running on 64 bit or 32 bit windows? What the the C prototype of that OpenTopic function?