Pergunta

O aplicativo de destino está escrito em Delphi (Win32 não .NET) e é de código fechado.

A ação que eu quero para invocar é chamado de cópia, mas não há nenhum atalho de teclado óbvio. (Ctrl + Insert faz a coisa errada e Ctrl + C não faz nada)

posso encontrar meu HWND alvo e convencê-lo a abrir o menu de contexto (ele responde a WM_RBUTTONDOWN/UP não WM_CONTEXTMENU). Do HWND menu I ainda pode obter o identificador do menu via MN_GETHMENU e encontrar o item de menu que eu quero. Eu só não sei os detalhes de como a "escolher" o item. Não ajuda que o menu é "modal", ie. sua HWND não é propriedade, então eu não sei qual das muitas janelas TPUtilWindow escondidos é o verdadeiro proprietário - caso contrário eu provavelmente poderia simplesmente enviar-lhe um WM_COMMAND e nem sequer aparecer o menu, que seria preferível

.

Embora eu tenho certeza que facilita a todos os tipos de hacks, eu preferiria não código de injetar no processo de destino.

Respostas aceito em qualquer idioma.

Foi útil?

Solução

Aparentemente, você é capaz de enviá-lo WM_RBUTTONDOWN/UP mensagens e responde. Se assim for, você pode também enviar mensagens WM_KEYDOWN/UP? Contanto que você conhece a estrutura do menu e isso não muda, tente dizer o aplicativo que alguém de pressionar a seta para baixo X número de vezes e, em seguida, pressionar Enter. Que parece ser a solução mais simples para mim ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top