use Win32::API;
my $GetWindowThreadProcessId = Win32::API->new('user32', 'GetWindowThr
+eadProcessId', ['N', 'P'], 'N');
my $process_id = pack 'V', 0; # buffer of 4 bytes
my $thread_id = $GetWindowThreadProcessId->Call($hwnd, $process_id);
$process_id = unpack 'V', $process_id;
If you don't need $process_id, you can just drop the lines for it and use undef in the API call, which Win32::API will translate into a null pointer.
Apparently these two API calls return a completely different value for $hinstance and for $process_id. |