Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Работа с меню в чужом процессе Добавлено: 21.01.06 12:31  

Автор вопроса:  Alex
И так есть программа, не важно какая, она запущена, у нее есть меню выпадающее, мне очень хочется программно нажать на пункт меню "Выход" Как это сделать?

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 21.01.06 13:26
Гы гы.
Какой, всё-таки, упорный молодой человек...

Надо послать окну WM_COMMAND с нужным ID, я же тебе говорил уже...

Ответить

Номер ответа: 2
Автор ответа:
 Alex



Вопросов: 1
Ответов: 2
 Профиль | | #2 Добавлено: 21.01.06 13:46

Ну я это уже понял, а как это сделать то?
У меня нифига не получается :(
Я уже весь инет излазил, а нифига найти не могу, ну мож правдо я хреново смотрел.

Ну напиши ты пример в 2 строчки чтоб я понял как это делать!!!!

Ответить

Номер ответа: 3
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #3 Добавлено: 21.01.06 13:59
Блин, я же тебе давал ссылку на мануал про общую теорию сообщений и про SendMessage.
Там бы ты и прочитал, что
SendMessage hwnd, WM_COMMAND, ID, byval 0&

Ещё там бы ты прочитал про
SendMessage hwnd, WM_SYSCOMMAND, SC_CLOSE, byval 0&

Но тебе всё пофиг, и читать ты ничего не хочешь.

Ответить

Номер ответа: 4
Автор ответа:
 Alex



Вопросов: 1
Ответов: 2
 Профиль | | #4 Добавлено: 21.01.06 14:11

SendMessage hwnd, WM_COMMAND, ID, byval 0&

А чей hwnd ,и ID надо указывать?
и что byval 0& это такое?


у меня пока вот что есть:

'получение позиции команды меню
Public Function GetMenuPos(ByVal hMenu As Long, ByVal Caption As String) As Long
Dim i As Long
Dim max As Long
Dim lres As Long
Dim Result As Long
Dim sData As String
Dim sdLen As Long
Result = -1
max = GetMenuItemCount(hMenu)
If max = 0 Then GetMenuPos = -1: Exit Function
For i = 0 To max - 1
sData = String$(256, 32)
sdLen = Len(sData) + 1
lres = GetMenuString(hMenu, i, sData, sdLen, MF_BYPOSITION)
If LCase$(Left$(sData, lres)) = LCase$(Caption) Then Result = i: Exit For
Next i
GetMenuPos = Result
End Function


'Получение манипулятора меню
Public Function SearchMenu(ByVal hMenu As Long, ByVal Caption As String) As Long
Dim i As Long
Dim lres As Long
Dim max As Long
Dim Result As Long
lres = GetMenuPos(hMenu, Caption)
If lres <> -1 Then SearchMenu = hMenu: Exit Function
Debug.Print max
max = GetMenuItemCount(hMenu)
For i = 0 To max - 1
lres = GetMenuItemID(hMenu, i)
If lres = -1 Then Result = SearchMenu(GetSubMenu(hMenu, i), Caption)
Next i
SearchMenu = Result
End Function

Ответить

Номер ответа: 5
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #5
Добавлено: 21.01.06 14:17
2GSerg:
дайка еще раз ссылочку - он не хочет, а я почитаю!

Ответить

Номер ответа: 6
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #6 Добавлено: 21.01.06 15:23
Теория.
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/aboutmessagesandmessagequeues.asp

Практика.
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/usingmessagesandmessagequeues.asp

Ответить

Номер ответа: 7
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #7
Добавлено: 21.01.06 15:27
спасибо. - гуд

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам