Wysłanie tekstu do aplikacji

0

Witam. Piszę takiego małego hotkey's umożliwiającego ustawianie różnych opcji przez user'a. Wiem jak wyłapywać czy skrót zdefiniowany przez usera został użyty, ale nie wiem jak obsłużyć akcję "wklej". Chodzi o to że mamy np w jakimś lineEdit podany teks i np po wciśnięciu skrótu Alt + v tekst został wysłany do aktywnej aplikacji i obsłużony podobnie jak polecenie wklej. Pisze aplikację w C++ z wykorzystaniem WinAPI. Dokumentację czytać potrafię, a więc proszę tylko o hasła które pomogą rozwiązać mój problem.

1

Nie znam dobrze C++, praktycznie wcale, nie wiem też co to lineEdit, ale rozumiem że wysłanie komuniatu WM_PASTE do kontrolki nie pomaga? Bo o ile dobrze zrozumiałem, to chcesz zasymulowac wklejenie? A i na przyszłośc TAGUJ WĄTEK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Chyba tyle wykrzykników powinno wystarczyć, żeby może chociaż jedna osoba zapamiętała i się zastosowała.

0

WM_PASTE raczej nie pomoże, gdyż nie chodzi mi o wklejenie tekstu ze schowka... tylko o wklejanie teks który user poda w programie do aktywnego okna :( Ogólnie program ma wyglądać tak:

  • user podaje nowy skrót (np alt + v) - to mam
  • definiuje że skrót ten ma wklejać tekst podany przez usera - to mam
  • user podaje tekst który można zmienić w dowolnej chwili - to mam
  • program wyłapuje czy została naciśnięta kombinacja alt + v - to mam
  • jeśli tak wysyła do aktywnego okna podany wcześniej tekst - tego nie mam :(
0

Możesz najpierw wypełnić schowek danymi, a następnie wysłać komunikat WM_PASTE do danej kontrolki. Zainteresuj się funkcją SetClipboardData.
Innym wyjściem jest wysłanie kontrolce komunikatu WM_SETTEXT.

0

O ile się nie mylę WM_SETTEXT usuwa dany teks i zastępuje go nowym więc raczej nie odzwierciedla zwykłej akcji wklejenia. Pomyślę nad wysłaniem komunikatu WM_PASTE chociaż chciałem zachować nie zależność od schowka systemowego :(

0

No to najpierw pobierz tekst z kontrolki(WM_GETTEXT), sklej z docelowym i ustaw za pomocą WM_SETTEXT

0

Myślałem nad tym ale wydaje mi się że jeśli tekstu jest dużo to operacje takie mogą być czasochłonne, i zastanawiam się czy nie lepiej przechować tekst schowka w jakimś stringu, zmodyfikować schowek, wysłać WM_PASTE i ustawić schowek do wartości poprzedniej ? Która opcja jest "korzystniejsza" ?

0

Sprawdź to samemu ile co zajmie, przy pomocy GetTickCount albo innymi algorytmami do wygooglowania na mierzenie czasu wykonania danej operacji. Skoro chcesz modyfikowac zawartośc tekstu kontrolki scalając jej tekst z jakimś innym, to po co w ogóle zawracasz sobie głowe Schowkiem? Skoro i tak wklejanie do kontrolki przez WM_PASTE nic nie daje. No chyba, że ten tekst ma być później do dyzpozycji użytkownika w Schowku, ale o tym chyba nie wspomniałeś.

1 użytkowników online, w tym zalogowanych: 0, gości: 1