SendMessage - Wysłanie kombinacji klawiszy Ctrl+S

0

Pragnę komunikować się z pewnym programem przy pomocy uchwytów. Moim Celem jest wysłanie do określonego programu kombinacji klawiszy CTRL+S. Robię to w następujący sposób:

uchwyt := FindWindow(nil, 'nazwa_okreslonego_programu'); // ta linia jest OK!

PostMessage(uchwyt, WM_SYSKEYDOWN, VK_CONTROL, ord('s'));
PostMessage(uchwyt, WM_SYSKEYUP, VK_CONTROL, ord('s'));

// lub druga wersja
PostMessage(uchwyt, WM_KEYDOWN, VK_CONTROL, ord('s'));
PostMessage(uchwyt, WM_KEYUP, VK_CONTROL, ord('s'));

Jak wiec moge wyslac kombinacje klawiszy CTRL+S do programu, zakladajac ze uchwyt jest prawidlowy na 100%, czego jestem pewien gdyz sprawdzilem.

0

Zaraz, zaraz. A skąd wywnioskowałeś Ord('s')? Przecież powinna być raczej wielka litera, o ile kojarze kody klawiszy i swoje inne programy, które wysyłały klawisze. Innym sposobem na to - jeśli to nie pomoże = to raczej aktywowanie okna o tym uchwycie przez funkcje SetForegroundwindow(UchwytOkna) i symulowanie naciśnięc oraz puszczeń klawiszy, ale przez funkcję SendInput.

0
Ord('s')

Wynika z tego iz tym parametrem musi być typ liczbowy. Tak wiec jesli dam samo 's' kompilator wyswietla bląd

Sproboje jak wroce Twojej metody i zobacze czy zadziala.

0

i co? wysłałeś te rzeczy do programu i nic?
WM_SYSKEYDOWN dla jednego klawisz
WM_SYSKEYDOWN dla drugiego klawisza
i dopiero wtedy puszczanie obu klawiszy przez 2x WM_SYSKEYUP

działa, nie działa?

0

btw.
http://pl.wikipedia.org/wiki/ASCII
masz tu klawisze i ich kody (DEC, dla A to 65)

0

Do poprzednika: właśnie o tym pisałem. Nie kwestionowałem tego, że ma być kod liczbowy. Wiem, jestem lamerem, ale nie takim żeby nie wiedzieć do czego służy funkcja Ord. Pisałem jednak, że musimy dać WIELKĄ literę, bo takie są kody dla klawiszy. na których - o ile się nam nie starły ;) widnieją litery.

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