2010-01-18 3 views
2

Je voulais juste savoir, s'il y a moyen de rendre un programme (ou une partie d'un programme) intangible avec C#. Je veux faire en sorte que les gens puissent voir que le programme est là, mais s'ils cliquaient dessus, ils cliqueraient sur ce qui est en dessous. Je voudrais aussi savoir si vous pouvez faire ce backwords. Y at-il moyen de rendre un élément invisible, cliquable?Comment faire un programme intangible avec C#?

Nous vous remercions de votre aide!

+7

Vous question, bien que pas du tout intangible est proche d'incompréhensible. Pourriez-vous le reformuler? – leepowers

+2

En outre, cela ressemble beaucoup à ce que vous essayez de tromper l'utilisateur. Pouvez-vous expliquer pourquoi vous devez le faire? –

+0

Je n'essaie pas de tromper l'utilisateur, je n'ai pas d'utilisation spécifique à l'esprit en ce moment, je suis plus jsut se demandant si cela peut être fait. Un exemple de quand je pourrais l'utiliser pourrait être si je voulais montrer quelque chose sur l'écran sans que cela ne gêne. Peut-être un programme qui montre des frappes sur l'écran. Vous voudriez que cela soit vu, mais vous voudrez peut-être pouvoir cliquer dessus, parce que cela pourrait gêner parfois. – Sean

Répondre

1

Pour votre question vague, je vous offre une réponse vague:

Sons comme votre première option est possible. Vous devez envoyer l'événement de clic (message) que vous recevez à la fenêtre appropriée (celle en dessous de la vôtre). Je suspecte que vous deviez DllImport des choses pour faire ceci de C#.

Votre option deux, bien que plus difficile, est probablement aussi possible car vous pouvez injecter du code dans d'autres exécutables en cours d'exécution. Ce sera une opération privilégiée, et vous aurez probablement encore besoin d'utiliser des trucs provenant de DLL non .NET pour le faire depuis C#. Voir Three Ways to Inject Your Code into Another Process sur CodeProject.

0

Si vous voulez afficher quelque chose à un utilisateur sans que cela ne l'empêche de faire quoi que ce soit à ce moment-là, vous pourriez peut-être faire apparaître vos messages dans la bulle de la barre des tâches?

La réponse à la question this couvre ce sujet. Ou si vous êtes paresseux here's le lien du projet de code.

0

Ok, donc parfois peut être nécessaire de montrer quelque chose à l'écran et ne pas laisser cliquable (comme à l'écran-affichage pour la lecture vidéo pour montrer augmentation de volume, etc ..)

Voici un exemple de à ceci en C# - de codeproject: http://www.codeproject.com/KB/cs/OSDwindow.aspx

Ceci utilise l'API Win32 ShowWindow(hWnd, SW_SHOWNOACTIVATE) pour présenter la fenêtre sans perdre le focus (ne peut pas être sélectionné).

Et voici la page MSDN pour cet appel ShowWindow

Pour afficher une fenêtre qui est invisible, mais cliquable vous pouvez utiliser une fenêtre sans bordure (FormBorderStyle = None) et définir la transparence à 1%.

Espérons que ça aide!

Questions connexes