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ć.
hook na myszke i badaj pozycje kursora myszki, oczywiscie po wczesniejszym pobraniu rozdzielczosci ekranu. wszystko znajdziesz na tej stronie. pozdr
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...
bardziej profesjonalnie to by było mniej więcej tak:
- 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