Ingerencja w menu obcej aplikacji...

0

Witam. Ponieważ niewiem od czego zacząć zacznę od początku. ;-)
Potrzebuje stworzyć prosty program który będzie symulował wybranie z menu, innej aplikacji, konkretnego Itemu. Załóżmy iż chce wywołać "Pomoc >> Notatnik - Informacje".
Pierwsze co: potraktowałem reshack'iem i wyciągłem z niego:

POPUP "Pomo&c"
{
	MENUITEM "&Tematy Pomocy",  64
	MENUITEM SEPARATOR
	MENUITEM "Notatnik - i&nformacje",  65
}

Okay... mam... Notatnik - Informacje = 65.
Teraz kod:

var NotepadHWND: HWND;
begin
NotepadHWND:=FindWindow('Notepad',nil);
 if NotepadHWND<>0 then
  SendMessage(NotepadHWND,WM_MENUCOMMAND, 65, 65);

Jak można się domyśleć, nie działa. Dopiero zaczynam zabawe z komunikatami więc zapewne w mym kodzie jest piec rozgrzebany ;-P

Druga sprawa:
Do menu notatniczka dołożyłem nowy klucz menu:
user image
a to za sprawą poniższego kodu ;-)

var NotepadHWND: HWND;
    NotepadMenu: HMENU;
begin
NotepadHWND:=FindWindow('Notepad',nil);
 if NotepadHWND<>0 then
  begin
   NotepadMenu:=GetMenu(NotepadHWND);
    AppendMenu(NotepadMenu,MF_STRING,0,'Item :)');
  end;

Jednocześnie nasuwa mi się pytanie ;-P
Jak sprawdzić czy dany "Item" został kliknięty.

Będe niezmiernie wdzięczny za wskazówki ;]
Z góry dziękuje.

0

Zdaje się że za obsługę kliknięcia tego itemu jest odpowiedzialna procedura obsługująca komunikaty danego okna. Więc musisz założyć hooka na komunikaty idące do danego okna i je obsługiwać jak ktoś kliknie odpowiedni item.

A co do pierwszego - wątpie aby lparam i wparam miały mieć wartość 65. Jeden na pewno. Drugi prawdopodobnie opisuje zdarzenie - który przycisk czy coś takiego. -> http://msdn2.microsoft.com/en-us/library/ms647603.aspx

0
nav napisał(a)

A co do pierwszego - wątpie aby lparam i wparam miały mieć wartość 65. Jeden na pewno. Drugi prawdopodobnie opisuje zdarzenie - który przycisk czy coś takiego. -> http://msdn2.microsoft.com/en-us/library/ms647603.aspx

Fakt, doczytałem że lParam w tym przypadku to uchwyt do menu...
Poprawiłem na:

SendMessage(NotepadHWND,WM_MENUCOMMAND, 65, GetMenu(NotepadHWND));

Jednak w dalszym ciągu nic ;-(

Jakieś wskazóweczki? ;-P

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