#include "EXTERN.h"
#ifdef _MSC_VER
#pragma warning ( disable : 4005 )
#endif
#include "perl.h"
#include "XSUB.h"
#include "tlhelp32.h"
MODULE = Win32::CommandLine PACKAGE = Win32::CommandLine
PROTOTYPES: ENABLE
SV *
_wrap_GetCommandLine ()
CODE:
RETVAL = newSVpv(GetCommandLine(), 0);
OUTPUT:
RETVAL
HANDLE
_wrap_CreateToolhelp32Snapshot ( dwFlags, th32ProcessID )
DWORD
dwFlags
DWORD
th32ProcessID
CODE:
RETVAL = CreateToolhelp32Snapshot( dwFlags, th32ProcessID );
OUTPUT:
RETVAL
bool
_wrap_Process32First ( hSnapshot, lppe )
HANDLE
hSnapshot
PROCESSENTRY32 * lppe
CODE:
RETVAL = Process32First( hSnapshot, lppe );
OUTPUT:
RETVAL
bool
_wrap_Process32Next ( hSnapshot, lppe )
HANDLE
hSnapshot
PROCESSENTRY32 * lppe
CODE:
RETVAL = Process32Next( hSnapshot, lppe );
OUTPUT:
RETVAL
bool
_wrap_CloseHandle ( hObject )
HANDLE
hObject
CODE:
RETVAL = CloseHandle( hObject );
OUTPUT:
RETVAL
##// Pass useful CONSTANTS back to perl
int
_const_MAX_PATH ()
CODE:
RETVAL = MAX_PATH;
OUTPUT:
RETVAL
HANDLE
_const_INVALID_HANDLE_VALUE ()
CODE:
RETVAL = INVALID_HANDLE_VALUE;
OUTPUT:
RETVAL
DWORD
_const_TH32CS_SNAPPROCESS ()
CODE:
RETVAL = TH32CS_SNAPPROCESS;
OUTPUT:
RETVAL
##// Pass useful sizes back to Perl (for testing) */
unsigned
int
_info_SIZEOF_HANDLE ()
CODE:
RETVAL =
sizeof
(
HANDLE
);
OUTPUT:
RETVAL
unsigned
int
_info_SIZEOF_DWORD ()
CODE:
RETVAL =
sizeof
(
DWORD
);
OUTPUT:
RETVAL
#// Pass PROCESSENTRY32 structure info back to Perl
## [from "tlhelp32.h"]
## typedef struct tagXPROCESSENTRY32 {
## DWORD dwSize;
## DWORD cntUsage; # no longer used (always set to 0)
## DWORD th32ProcessID;
## ULONG_PTR th32DefaultHeapID; # no longer used (always set to 0)
## DWORD th32ModuleID; # no longer used (always set to 0)
## DWORD cntThreads;
## DWORD th32ParentProcessID;
## LONG pcPriClassBase;
## DWORD dwFlags; # no longer used (always set to 0)
## TCHAR szExeFile[MAX_PATH];
## } PROCESSENTRY32;
SV *
_info_PROCESSENTRY32 ()
INIT:
AV * results;
AV * row;
results = (AV *)sv_2mortal((SV *)newAV());
CODE:
row = (AV *)sv_2mortal((SV *)newAV());
av_push(row, newSVpvs(
"PROCESSENTRY32"
));
av_push(row, newSVnv(
sizeof
(PROCESSENTRY32) ));
av_push(results, newRV((SV *)row));
row = (AV *)sv_2mortal((SV *)newAV());
av_push(row, newSVpvs(
"dwSize"
));
av_push(row, newSVpvs(
"DWORD"
));
av_push(row, newSVnv( offsetof(PROCESSENTRY32, dwSize) ));
av_push(row, newSVpvs(
"L!"
));
av_push(results, newRV((SV *)row));
row = (AV *)sv_2mortal((SV *)newAV());
av_push(row, newSVpvs(
"cntUsage"
));
av_push(row, newSVpvs(
"DWORD"
));
av_push(row, newSVnv( offsetof(PROCESSENTRY32, cntUsage) ));
av_push(row, newSVpvs(
"L!"
));
av_push(results, newRV((SV *)row));
row = (AV *)sv_2mortal((SV *)newAV());
av_push(row, newSVpvs(
"th32ProcessID"
) );
av_push(row, newSVpvs(
"DWORD"
) );
av_push(row, newSVnv( offsetof(PROCESSENTRY32, th32ProcessID) ));
av_push(row, newSVpvs(
"L!"
) );
av_push(results, newRV((SV *)row));
row = (AV *)sv_2mortal((SV *)newAV());
av_push(row, newSVpvs(
"th32DefaultHeapID"
));
av_push(row, newSVpvs(
"ULONG_PTR"
));
av_push(row, newSVnv( offsetof(PROCESSENTRY32, th32DefaultHeapID) ));
av_push(row, newSVpvs(
"P"
));
av_push(results, newRV((SV *)row));
row = (AV *)sv_2mortal((SV *)newAV());
av_push(row, newSVpvs(
"th32ModuleID"
));
av_push(row, newSVpvs(
"DWORD"
));
av_push(row, newSVnv( offsetof(PROCESSENTRY32, th32ModuleID) ));
av_push(row, newSVpvs(
"L!"
));
av_push(results, newRV((SV *)row));
row = (AV *)sv_2mortal((SV *)newAV());
av_push(row, newSVpvs(
"cntThreads"
));
av_push(row, newSVpvs(
"DWORD"
));
av_push(row, newSVnv( offsetof(PROCESSENTRY32, cntThreads) ));
av_push(row, newSVpvs(
"L!"
));
av_push(results, newRV((SV *)row));
row = (AV *)sv_2mortal((SV *)newAV());
av_push(row, newSVpvs(
"th32ParentProcessID"
));
av_push(row, newSVpvs(
"DWORD"
));
av_push(row, newSVnv( offsetof(PROCESSENTRY32, th32ParentProcessID) ));
av_push(row, newSVpvs(
"L!"
));
av_push(results, newRV((SV *)row));
row = (AV *)sv_2mortal((SV *)newAV());
av_push(row, newSVpvs(
"pcPriClassBase"
));
av_push(row, newSVpvs(
"LONG"
));
av_push(row, newSVnv( offsetof(PROCESSENTRY32, pcPriClassBase) ));
av_push(row, newSVpvs(
"l!"
));
av_push(results, newRV((SV *)row));
row = (AV *)sv_2mortal((SV *)newAV());
av_push(row, newSVpvs(
"dwFlags"
));
av_push(row, newSVpvs(
"DWORD"
));
av_push(row, newSVnv( offsetof(PROCESSENTRY32, dwFlags) ));
av_push(row, newSVpvs(
"L!"
));
av_push(results, newRV((SV *)row));
row = (AV *)sv_2mortal((SV *)newAV());
av_push(row, newSVpvs(
"szExeFile"
));
av_push(row, newSVpvs(
"TCHAR[]"
));
av_push(row, newSVnv( offsetof(PROCESSENTRY32, szExeFile) ));
av_push(row, newSVpvs(
"Z"
));
av_push(row, newSVnv( MAX_PATH ));
av_push(results, newRV((SV *)row));
RETVAL = newRV((SV *)results);
OUTPUT:
RETVAL