Init: Migrate SimpleRemoter (Since v1.3.1) to Gitea
This commit is contained in:
60
client/ConPTYManager.h
Normal file
60
client/ConPTYManager.h
Normal file
@@ -0,0 +1,60 @@
|
||||
// ConPTYManager.h: Windows ConPTY terminal manager for xterm.js support
|
||||
// Requires Windows 10 1809+ for ConPTY API
|
||||
|
||||
#ifndef CONPTYMANAGER_H
|
||||
#define CONPTYMANAGER_H
|
||||
|
||||
#include "Manager.h"
|
||||
#include "IOCPClient.h"
|
||||
|
||||
// ConPTY API types (dynamically loaded)
|
||||
typedef VOID* HPCON;
|
||||
typedef HRESULT (WINAPI *PFN_CreatePseudoConsole)(COORD size, HANDLE hInput, HANDLE hOutput, DWORD dwFlags, HPCON* phPC);
|
||||
typedef HRESULT (WINAPI *PFN_ResizePseudoConsole)(HPCON hPC, COORD size);
|
||||
typedef void (WINAPI *PFN_ClosePseudoConsole)(HPCON hPC);
|
||||
|
||||
class CConPTYManager : public CManager
|
||||
{
|
||||
public:
|
||||
CConPTYManager(IOCPClient* ClientObject, int n, void* user = nullptr);
|
||||
virtual ~CConPTYManager();
|
||||
|
||||
VOID OnReceive(PBYTE szBuffer, ULONG ulLength);
|
||||
|
||||
// Check if ConPTY is supported on this system
|
||||
static bool IsConPTYSupported();
|
||||
|
||||
private:
|
||||
// ConPTY handles
|
||||
HPCON m_hPC;
|
||||
HANDLE m_hPipeIn; // Read from cmd output
|
||||
HANDLE m_hPipeOut; // Write to cmd input
|
||||
HANDLE m_hShellProcess;
|
||||
HANDLE m_hShellThread;
|
||||
HANDLE m_hReadThread;
|
||||
|
||||
// State
|
||||
BOOL m_bRunning;
|
||||
int m_cols;
|
||||
int m_rows;
|
||||
|
||||
// ConPTY API function pointers
|
||||
static PFN_CreatePseudoConsole s_pfnCreatePseudoConsole;
|
||||
static PFN_ResizePseudoConsole s_pfnResizePseudoConsole;
|
||||
static PFN_ClosePseudoConsole s_pfnClosePseudoConsole;
|
||||
static bool s_bApiLoaded;
|
||||
|
||||
// Load ConPTY API
|
||||
static bool LoadConPTYApi();
|
||||
|
||||
// Initialize ConPTY and start cmd.exe
|
||||
bool InitializeConPTY(int cols, int rows);
|
||||
|
||||
// Resize terminal
|
||||
void ResizeTerminal(int cols, int rows);
|
||||
|
||||
// Thread to read from PTY
|
||||
static DWORD WINAPI ReadThread(LPVOID lParam);
|
||||
};
|
||||
|
||||
#endif // CONPTYMANAGER_H
|
||||
Reference in New Issue
Block a user