Rotina para Abrir MainMenu

Delphi

23/04/2007

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.


Armindo

Armindo

Curtidas 0

Respostas

Carlosib

Carlosib

23/04/2007

Amigo, veja se vc consegue fazer isso em Delphi:

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:


GOSTEI 0
POSTAR