Skip to content

Instantly share code, notes, and snippets.

@m417z

m417z/TTLib.h Secret

Last active June 7, 2022 15:26
Show Gist options
  • Save m417z/847458fcc75de83b36ed to your computer and use it in GitHub Desktop.
Save m417z/847458fcc75de83b36ed to your computer and use it in GitHub Desktop.
#ifndef _TTLIB_H_
#define _TTLIB_H_
#pragma once
#include <windows.h>
#ifdef __cplusplus
extern "C" {
#endif
#define TTLIBCALL __stdcall
//////////////////////////////////////////////////////////////////////////
// Initialization
#define TTLIB_OK 0
// Errors returned by TTLib_Init
enum
{
TTLIB_ERR_INIT_ALREADY_INITIALIZED = 1,
TTLIB_ERR_INIT_REGISTER_MESSAGE,
TTLIB_ERR_INIT_FILE_MAPPING,
TTLIB_ERR_INIT_VIEW_MAPPING,
};
// Errors returned by TTLib_LoadIntoExplorer
enum
{
TTLIB_ERR_EXE_NOT_INITIALIZED = 1,
TTLIB_ERR_EXE_ALREADY_LOADED,
TTLIB_ERR_EXE_FIND_TASKBAR,
TTLIB_ERR_EXE_OPEN_PROCESS,
TTLIB_ERR_EXE_VIRTUAL_ALLOC,
TTLIB_ERR_EXE_WRITE_PROC_MEM,
TTLIB_ERR_EXE_CREATE_REMOTE_THREAD,
TTLIB_ERR_EXE_READ_PROC_MEM,
TTLIB_ERR_INJ_BEFORE_RUN = 101,
TTLIB_ERR_INJ_BEFORE_GETMODULEHANDLE,
TTLIB_ERR_INJ_BEFORE_LOADLIBRARY,
TTLIB_ERR_INJ_BEFORE_GETPROCADDR,
TTLIB_ERR_INJ_BEFORE_LIBINIT,
TTLIB_ERR_INJ_GETMODULEHANDLE,
TTLIB_ERR_INJ_LOADLIBRARY,
TTLIB_ERR_INJ_GETPROCADDR,
TTLIB_ERR_LIB_INIT_ALREADY_CALLED = 201,
TTLIB_ERR_LIB_LIB_VER_MISMATCH,
TTLIB_ERR_LIB_WIN_VER_MISMATCH,
TTLIB_ERR_LIB_VIEW_MAPPING,
TTLIB_ERR_LIB_FIND_IMPORT,
TTLIB_ERR_LIB_WND_TASKBAR,
TTLIB_ERR_LIB_WND_TASKSW,
TTLIB_ERR_LIB_WND_TASKLIST,
TTLIB_ERR_LIB_WND_THUMB,
TTLIB_ERR_LIB_MSG_DLL_INIT,
TTLIB_ERR_LIB_WAITTHREAD,
TTLIB_ERR_LIB_EXTHREAD_MINHOOK = 301,
TTLIB_ERR_LIB_EXTHREAD_COMFUNCHOOK,
TTLIB_ERR_LIB_EXTHREAD_REFRESHTASKBAR,
TTLIB_ERR_LIB_EXTHREAD_MINHOOK_APPLY,
};
DWORD TTLIBCALL TTLib_Init();
BOOL TTLIBCALL TTLib_Uninit();
DWORD TTLIBCALL TTLib_LoadIntoExplorer();
BOOL TTLIBCALL TTLib_IsLoadedIntoExplorer();
BOOL TTLIBCALL TTLib_UnloadFromExplorer();
//////////////////////////////////////////////////////////////////////////
// Manipulation
typedef enum
{
TTLIB_GROUPTYPE_UNKNOWN = 0,
TTLIB_GROUPTYPE_NORMAL,
TTLIB_GROUPTYPE_PINNED,
TTLIB_GROUPTYPE_COMBINED,
TTLIB_GROUPTYPE_TEMPORARY,
} TTLIB_GROUPTYPE;
BOOL TTLIBCALL TTLib_ManipulationStart();
BOOL TTLIBCALL TTLib_ManipulationEnd();
HANDLE TTLIBCALL TTLib_GetMainTaskbar();
BOOL TTLIBCALL TTLib_GetSecondaryTaskbarCount(int *pnCount);
HANDLE TTLIBCALL TTLib_GetSecondaryTaskbar(int nIndex);
HWND TTLIBCALL TTLib_GetTaskListWindow(HANDLE hTaskbar);
HWND TTLIBCALL TTLib_GetTaskbarWindow(HANDLE hTaskbar);
HMONITOR TTLIBCALL TTLib_GetTaskbarMonitor(HANDLE hTaskbar);
BOOL TTLIBCALL TTLib_GetButtonGroupCount(HANDLE hTaskbar, int *pnCount);
HANDLE TTLIBCALL TTLib_GetButtonGroup(HANDLE hTaskbar, int nIndex);
HANDLE TTLIBCALL TTLib_GetActiveButtonGroup(HANDLE hTaskbar);
HANDLE TTLIBCALL TTLib_GetTrackedButtonGroup(HANDLE hTaskbar);
BOOL TTLIBCALL TTLib_ButtonGroupMove(HANDLE hTaskbar, int nIndexFrom, int nIndexTo);
BOOL TTLIBCALL TTLib_GetButtonGroupTaskbar(HANDLE hButtonGroup, HANDLE *phTaskbar);
BOOL TTLIBCALL TTLib_GetButtonGroupRect(HANDLE hButtonGroup, RECT *pRect);
BOOL TTLIBCALL TTLib_GetButtonGroupType(HANDLE hButtonGroup, TTLIB_GROUPTYPE *pnType);
SIZE_T TTLIBCALL TTLib_GetButtonGroupAppId(HANDLE hButtonGroup, WCHAR *pszAppId, SIZE_T nMaxSize);
BOOL TTLIBCALL TTLib_GetButtonCount(HANDLE hButtonGroup, int *pnCount);
HANDLE TTLIBCALL TTLib_GetButton(HANDLE hButtonGroup, int nIndex);
HANDLE TTLIBCALL TTLib_GetActiveButton(HANDLE hTaskbar);
HANDLE TTLIBCALL TTLib_GetTrackedButton(HANDLE hTaskbar);
BOOL TTLIBCALL TTLib_ButtonMoveInButtonGroup(HANDLE hButtonGroup, int nIndexFrom, int nIndexTo);
HWND TTLIBCALL TTLib_GetButtonWindow(HANDLE hButton);
//////////////////////////////////////////////////////////////////////////
// Lists
typedef enum
{
TTLIB_LIST_LABEL = 0,
TTLIB_LIST_GROUP,
TTLIB_LIST_GROUPPINNED,
TTLIB_LIST_COMBINE,
} TTLIB_LIST;
typedef enum
{
TTLIB_LIST_LABEL_NEVER = 0,
TTLIB_LIST_LABEL_ALWAYS,
TTLIB_LIST_GROUP_NEVER = 0,
TTLIB_LIST_GROUP_ALWAYS,
TTLIB_LIST_GROUPPINNED_NEVER = 0,
TTLIB_LIST_GROUPPINNED_ALWAYS,
TTLIB_LIST_COMBINE_NEVER = 0,
TTLIB_LIST_COMBINE_ALWAYS,
} TTLIB_LIST_VALUE;
BOOL TTLIBCALL TTLib_AddAppIdToList(TTLIB_LIST nList, const WCHAR *pszAppId, TTLIB_LIST_VALUE nListValue);
BOOL TTLIBCALL TTLib_RemoveAppIdFromList(TTLIB_LIST nList, const WCHAR *pszAppId);
BOOL TTLIBCALL TTLib_GetAppIdListValue(TTLIB_LIST nList, const WCHAR *pszAppId, TTLIB_LIST_VALUE *pnListValue);
//////////////////////////////////////////////////////////////////////////
// Other
#define MAX_APPID_LENGTH MAX_PATH
#ifdef __cplusplus
}
#endif
#endif // _TTLIB_H_
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment