Fórum Rotina para Abrir MainMenu #340779
23/04/2007
0
Gostaria de abrir um mainMenu sem que o usuario clique neles, ou seja, preciso de um comando que imite o clique no primeiro item do menu.
Obrigado.
Obrigado.
Armindo
Curtir tópico
+ 0
Responder
Posts
24/04/2007
Carlosib
Amigo, veja se vc consegue fazer isso em Delphi:
O texto completo está aqui:
[url]http://www.microsoft.com/brasil/msdn/Tecnologias/arquitetura/TestRun.mspx[/url]
Quem conseguir favor postar o código aqui!!! :oops: :oops:
Caixas de mensagens e menus
Lidar com caixas de mensagens e menus requer truques um pouco diferentes das janelas/controles normais. Lembre-se de que meu aplicativo fictício em teste exibirá uma caixa de mensagem de erro se o usuário não fornecer duas cores antes de clicar no controle de botão (consulte a Figura 3). Meu cenário de teste exercita essa funcionalidade; portanto, preciso saber como clicar na caixa de mensagem de erro para fechá-la. Isso será fácil se você souber que uma janela de caixa de mensagem não é uma janela filho de sua janela de chamada. Portanto, para clicar no botão OK em uma caixa de mensagem, você precisa obter uma referência à caixa de mensagem, exatamente como faz com qualquer outra janela de nível superior e, em seguida, obter o controle do botão OK filho. O código na Figura 6 mostra como fiz isso em meu código de cenário de teste.
Lidar com itens de menu requer um tratamento especial, porque os menus do Windows não são controles filho nem janelas de nível superior, mas objetos separados. O truque para trabalhar com menus é usar as funções da API do Windows GetMenu, GetSubMenu e GetMenuID com a mensagem WM_COMMAND:
[DllImport("user32.dll")]
static extern IntPtr GetMenu(IntPtr hWnd);
[DllImport("user32.dll")]
static extern IntPtr GetSubMenu(IntPtr hMenu, int nPos);
[DllImport("user32.dll")]
static extern int GetMenuItemID(IntPtr hMenu, int nPos);
Codifiquei um método FormExitApp em minha biblioteca que simula um usuário clicando em um item especificado de um submenu especificado:
public void FormExitApp(int subMenu, int exitItem)
{
IntPtr pMenu = GetMenu(this.ptrToWindow); // get main Menu
IntPtr pSubMenu = GetSubMenu(pMenu, subMenu); // get "File" submenu
int menuID = GetMenuItemID(pSubMenu, exitItem); // get "Exit"
uint WM_COMMAND = 0x0111;
SendMessage4(this.ptrToWindow, WM_COMMAND, menuID, null);
}
O código é bastante auto-explicativo. GetMenu obtém uma referência ao menu principal associado a uma janela/um formulário. Em seguida, essa referência pode ser usada com GetSubMenu para obter uma referência a um submenu específico (como "Arquivo", "Editar", "Exibir"). Em seguida, a referência pode ser usada para obter uma identificação do menu (como "Copiar", "Colar"). A mensagem WM_COMMAND é enviada quando o usuário seleciona um item de comando de um menu, quando um controle envia uma mensagem de notificação à sua janela pai ou quando um pressionamento de tecla de aceleração é traduzido. Portanto, o envio de WM_COMMAND simula um clique em um item de menu.
O texto completo está aqui:
[url]http://www.microsoft.com/brasil/msdn/Tecnologias/arquitetura/TestRun.mspx[/url]
Quem conseguir favor postar o código aqui!!! :oops: :oops:
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)