Przyscisk Start

0

Mam bardzo głupie pytanie, ale może ktoś udzieli mi odpowiedzi :) Był bym wdzieczny. Problem jeste prosty chce by mój program wykonywał jakąś funkcje jak ktoś wciśnie przycisk "START" na pasku zadań windowsie (xp). Mam nadziej, że coś takiego w ogóle da się zrobić.

0

hook na myszke i badaj pozycje kursora myszki, oczywiscie po wczesniejszym pobraniu rozdzielczosci ekranu. wszystko znajdziesz na tej stronie. pozdr

0

No właśnie coś w tym stylu próbowałem ale nie bardzo mi wyszło :) i myślałem, że może jakos łatwiej to sie da...

0

bardziej profesjonalnie to by było mniej więcej tak:

  1. Założyć hook (typu WH_CALLWNDPROC) na menu start funkcją SetWindowsHookEx (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/hooks/hookreference/hookfunctions/setwindowshookex.asp)

parametry:

idHook - WH_CALLWNDPROC

lpfn - Adres naszej funkcji wywoływanej podczas zajścia zdarzenia na przycisku start. Funkcja ta niestety nie może sie znajdować w naszym bierzącym wątku, zatem musi ja stworzyć w jakimś dll'u lub w osobno utworzonym wczesniej wątku. Powinna wyglądać mniej więcej tak:

function CallbackFunction(nCode: integer; wParam, lParam: LongInt); stdcall;
var
   pcws: PCWPSTRUCT;
begin
   pcws := Ptr(a);
   case (pcws^).message of:
      WM_JAKIS_KOMUNIKAT: //tu trzeba wpisac nazwe zdarzenia jakie zachodzi w menu start, ktore mamy zamiar monitorowac(np. rozwiniecie menu start moze byc WM_ACTIVATE okna menu, trzeba to spawdzic, moze w MSDN'ie bedzie cos wiecej)

      begin
         // tu w końcu nasz kod, wykonywany zaraz przed interesującym nas zajsciem
      end;
   end;
   
end;               

hMod - tutaj uchwyt do dll'a w ktorym znajduje sie nasza CallbackFunction

dwThreadId - Id wątku menu start, można szukac np po tytule i nazwie klasy okna menu start</delphi></b>

to tak z grubsza ;p

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