use Win32::API; my $GetWindowThreadProcessId = Win32::API->new('user32', 'GetWindowThreadProcessId', ['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;