# VBForums CodeBank > CodeBank - C++ >  Cross-Platform Process Information Library (UTF-8 Support)

## Samuel Venable

Too much code to fit the character limit, so I'll just be linking to the repository on GitHub:

https://github.com/time-killer-games...sions/ProcInfo

Features included are documented below:

*data types*



```
typedef DWORD process_t; // Win32-specific process identifier
typedef pid_t process_t; // POSIX-specific process identifier
typedef unsigned long long window_t; // cast from window handle
typedef string wid_t; // window identifier - to_string from window_t
```


*functions*



```
// Execute process, returns process id
process_t process_execute(string command);

// Execute process outside main thread
void process_execute_async(string command);

// Return previous executed process id
process_t process_previous();

// Evaluate last process output string
string process_evaluate();

// Clears previous process id executed
void process_clear_pid();

// Clears previous process output text
void process_clear_out();

// Get process id from current process
process_t pid_from_self();

// Parent process id from this process
process_t ppid_from_self();

// Get executable path from process id
string path_from_pid(process_t pid);

// Get exe parent path from process id
string dir_from_pid(process_t pid);

// Get executable name from process id
string name_from_pid(process_t pid);

// Check for existence from process id
bool pid_exists(process_t pid);

// Check existence for given window id
bool wid_exists(wid_t wid);

// Kill an application from process id
bool pid_kill(process_t pid);

// Return window handle from window id
window_t window_from_wid(wid_t wid);

// Return window id from window handle
wid_t wid_from_window(window_t window);

// Get owner process id from window id
process_t pid_from_wid(wid_t wid);

// Return strings for every process id
string pids_enum(bool trim_dir, bool trim_empty);

// Get parent process id of process id
process_t ppid_from_pid(process_t pid);

// Get list of process ids from parent
string pids_from_ppid(process_t ppid);

// Get window id from frontmost window
wid_t wid_from_top();

// Get process id from topmost process
process_t pid_from_top();

// Bring window id to frontmost window
void wid_to_top(wid_t wid);

// Add a parent window id to window id
void wid_set_pwid(wid_t wid, wid_t pwid);
```


It's hosted in the same repository as my C++17 std::filesystem library, for those who might be interested in checking that out as well. No credit needed. Removing the credits header, if you want, and also, re-licensing the code to suit your needs are both permitted.

Samuel

----------

