From the command line, I can list tasks on a remote machine like this:
c:\>tasklist /s some_machine /u admin_user /p admin_user_password
Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
System Idle Process              0                            0         16 K
System                           4                            0        236 K
svchost.exe                    632                            0      3,328 K
svchost.exe                    700                            0      4,660 K
svchost.exe                    776                            0     38,664 K
And I can kill them like this:
c:\>taskkill /s some_machine /im notepad.exe /f /u admin_user /p admin_password
SUCCESS: The process "notepad.exe" with PID 1828 has been terminated.
How can I do this using Win32 API calls? I'm trying to implement this in Delphi, but I am happy to translate an example from another language.
I've been looking at EnumProcesses, which works great for a local machine, but does not seem to support remote connections.