Ingerencja w menu obcej aplikacji...

Ingerencja w menu obcej aplikacji...
MacMarian
  • Rejestracja:prawie 18 lat
  • Ostatnio:ponad 11 lat
  • Postów:21
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:

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

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

Kopiuj
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 ;-)

Kopiuj
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.

nav
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Warszawa
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


utf-8 rlz! ٩(ಥ_ಥ)۶
MacMarian
  • Rejestracja:prawie 18 lat
  • Ostatnio:ponad 11 lat
  • Postów:21
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:

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

Jednak w dalszym ciągu nic ;-(

Jakieś wskazóweczki? ;-P

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.