Mam problem z wklejaniem do konsoli. Napisałem sobie programik ale żeby użytkownik się nie męczył z wpisywaniem długich łańcuchów chciałbym mu umożliwić wklejenie do konsoli. Crtl+v nie działa shift+insert tez. Co zrobić?
0
0
wklejanie działa z menu pod PPM
//unsigned int index - indeks polecenia w menu, które chcesz wybrać, dla wklej masz bodajże indeks 2 (czyli 3 pozycja - liczone od góry)
bool Console_PasteText(unsigned int index)
{
HWND hMenu, hConsole = GetConsoleWindow();
if(!hConsole) return false;
SetForegroundWindow(hConsole);
RECT rc, clrc;
if(!GetWindowRect(hConsole, &rc) || !GetClientRect(hConsole, &clrc) ||
!AdjustWindowRectEx(&clrc,GetWindowLongPtr(hConsole, GWL_STYLE), GetMenu(hConsole), GetWindowLongPtr(GWL_EXSTYLE))
) return false;
int x = rc.left - clrc.left + 1, y = rc.top - clrc.top + 1;
if(!SetCursorPos(x, y)) return false;
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_RIGHTDOWN, x, y, 0, GetMessageExtraInfo());
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_RIGHTUP, x, y, 0, GetMessageExtraInfo());
Sleep(50);
hMenu = FindWindow(TEXT("#32768"), NULL);
if(!hMenu) return;
if(!GetWindowRect(hMenu, &rc)) return false;
x = rc.left + ((rc.right - rc.left) >> 1);
int h = (rc.bottom - rc.top) / items.size(); //calc item height
y = rc.top + index * h + (h >> 1);
if(!SetCursorPos(x, y)) return false;
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN, x, y, 0, GetMessageExtraInfo());
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTUP, x, y, 0, GetMessageExtraInfo());
}
Kod wklepany bez sprawdzania czy się kompiluje :P
chociaż lepiej sprawdzić jaki ID w WM_COMMAND ma polecenia wklejenia z tego menu i wysłać bezpośrednio, byłoby bez otwierania menu
oczywiście powyższy kod zakłada, że chodzi o konsolę w tym programie
inną opcją jest po prostu pobranie tego co jest w clipboardzie i dopisanie
możliwości jest naprawdę dużo...
0
może ctrl+shift+v ? ja tak mam