[delphi] win+D problem- dla ciekawskich

0

elo- jak w delphi uzyskac efekt jaki w systemie XP daje wcisniecie klawiszy windows+D czyli minimalizacja wszystkich okien (widzimy pulpit wtedy)...niechodzi mi o jakeis procedury tylu minimize.all w petelce tylko konkretnei jak zasymulowac win+D ...pozdro..kto sie odwazy pomóc :D?

0

SendInput, wyszukiwarka.

0

no elo :) sendinput troche dziwne dla mnie uzylem funkcji keyb_events

keybd_event(VK_LWIN, 0, 0, 0);
  keybd_event(Ord('D'), 0, 0, 0);
  keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);

to tak dla potomnych :) pozdro

0

SendInput jest analogiczne, tyle, że za jednym razem wysyłasz kilka inputów (i to nie tylko z klawiatury ale i na przykład myszy). W dodatku keybd_event jest makrem, które wewnętrznie i tak używa SendInput.

0

oo szawik problem rozwiazalem keybd-events ale podaj jakis prosty przyklad na Twoje sendinput.plis

0
var Inputs:array[0..3] of tagInput;
begin
ZeroMemory(@Inputs, sizeof(Inputs));

Inputs[0].Itype:=INPUT_KEYBOARD;
Inputs[0].ki.wVK:=VK_LWIN;

Inputs[1].Itype:=INPUT_KEYBOARD;
Inputs[1].ki.wVK:=ord('D');

Inputs[2].Itype:=INPUT_KEYBOARD;
Inputs[2].ki.wVK:=ord('D');
Inputs[2].ki.dwFlags:=KEYEVENTF_KEYUP;

Inputs[3].Itype:=INPUT_KEYBOARD;
Inputs[3].ki.wVK:=VK_LWIN;
Inputs[3].ki.dwFlags:=KEYEVENTF_KEYUP;

SendInput(4, Inputs[0], sizeof(Inputs[0]));
end;

Niby więcej kodu, ale zauważ, że wszystko, co tu ustawiasz, odpowiada temu co podajesz do makra keybd_event, z tym, że tu:

1. Możesz wszystko wysłać na raz

Jeśli w tym samym czasie wystąpi inne zdarzenie, to zostanie dopisane za wybranymi, a nie gdzieś między; gdy symulujesz ALT+CTRL+E, a użytkownik naciśnie DEL, to nie wyjdzie ALT+CTRL+DEL; z użyciem kilku osobnych makr może wyjść.

2. Możesz w jednym dodaniu podać różne operacje

.. dla myszy, klawiatury i sprzętowe (ale to już inna historia) - ich kolejność wciąż będzie zachowana. Makra nie dają tej gwarancji.

0

ok przyjalem do wiadomosci, dzieki szczawik [browar]

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