my $handle; my $thispid = Win32::Process::GetCurrentProcessID(); # differs from $$ under cygwin Win32::Process::Open($handle, $thispid, 1); #### my $readmem = Win32::API->new( kernel32 => q| BOOL ReadProcessMemory( HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T* lpNumberOfBytesRead )|); #### my $buf = " " x 40; my $read = " " x 10; my $addr = "0"; my $len = length $buf; if( $readmem->Call($handle, $addr, $buf, $len, $read) ) { print "The read worked I guess($read): $!\n\t", unpack("H*", $buf), "\n"; } else { print "The read failed I guess($read): $!\n\t", unpack("H*", $buf), "\n"; } #### my $openpid = Win32::API->new( kernel32 => q|HANDLE OpenProcess(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId)| );