41 votes

Les parties les plus cool de Windows API

J'ai remarqué qu'il y a assez peu de la communauté des wikis sur les "trucs et Astuces" ou "Cachés" dans les langages de programmation et les Api ici à Débordement de Pile. Mais je ne pouvais pas trouver tout à propos de mes propres favoris personnels: Win32 API et Delphi. Donc je commence mon "propre" CW sur l'API Win32.

Il y a (au moins) deux sortes de Gagner les utilisateurs de l'API: ceux qui ont été mis en place à l'aide de l'API Windows en C/C++, et ceux qui ont été mis en place en utilisant un certain niveau d'abstraction au-dessus de l'API Windows. J'appartiens à la seconde catégorie, qui sont élevés à l'aide de Delphi VCL. Mais au cours des cinq dernières années, je suis devenu de plus en plus intéressés dans la sous-jacente de l'API du système d'exploitation Windows, et aujourd'hui, je travaille beaucoup avec elle.

En fonction de la catégorie à laquelle un programmeur appartient, il (ou elle) pense que les différentes choses sont "cool" dans l'API Windows. Par exemple, alors qu'un VCL-mis développeur pourriez penser qu'il est très cool d'

var
  errIcon: HICON;
begin
  errIcon := LoadIcon(0, IDI_ERROR);
  DrawIcon(Canvas.Handle, 10, 10, errIcon),

un programmeur apporté de l'aide de l'API Windows dans C ne sera pas aussi impressionné.

Mais peu importe comment vous êtes "porté": ce sont les plus cool de "trucs" dans l'API Windows?

Je commence par faire la liste de quelques-uns de mes favoris, certaines sont plus "cool" que "utiles", mais:

  • LoadIcon et MessageBeep pouvez charger/système de jeu par défaut des icônes et sons.
  • Ouvrir le tiroir du CD: mciSendString('Set cdaudio door open wait', nil, 0, 0);
  • La fermeture de l'écran (Windows Vista et versions ultérieures) et éteindre le moniteur: SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
  • GetWindowDC(GetDesktopWindow) retourne le dd de l'ordinateur de bureau.
  • À l'aide de GetSystemMenu on peut ajouter/modifier/supprimer des éléments de menu dans le menu système de la fenêtre. Parfois très agréable.
  • DrawThemeBackground et le thème des fonctions de service, qui vous permet de dessiner des détails du thème actuel où vous le souhaitez. Bonbons: les Parties et les États

27voto

Ben Zotto Points 32105

15voto

Dinah Points 15711

Le fait qu'il y est une API de Windows.

Nous venons de prendre pour acquis qu'il y a ce système API qui permet effectivement à nous de faire quelque chose dans l'environnement Windows. Ce que tout cela a permis à l'être et le fait qu'il est si bien documenté (esp. grâce à Charles Petzold) n'est rien de miraculeux.

Je fais mon personnel de la journée-à-jour de codage dans le .NET framework et j'aime la façon dont il est facile. Mais je sais aussi que si je ne peux penser à quelque chose de Windows qui n'est pas possible à gérer .NET code, je peux creuser par le biais de la WinAPI et toujours trouver un moyen de faire de mon esprit-enfant possible.

14voto

Ben Zotto Points 32105
 SendMessage(HWND_BROADCAST, WM_CLOSE, 0, 0);
 

Presque toutes les applications en cours d’exécution sont fermées. C'est amusant de voir des soldats en action, mais déployez-vous avec prudence ... Peut-être que ce n'est pas une ruse. Sauf sur vos amis (bientôt futurs).

7voto

Alex K. Points 67805

Vous pouvez trouver des informations très utiles et vous faire gagner du temps si vous fouillez dans l' API Shell Lightweight Utility , en particulier les fonctions de chemin d'accès, de chaîne et de flux.

6voto

Ben Voigt Points 151460

WSAAsyncSelect, de sorte que vous pouvez optimiser les applications interactives que faire d'autres choses réseau en arrière-plan, sans perdre de réactivité ou de mettre en place avec le multithreading, des maux de tête.

Et MsgWaitForMultipleObjectsEx. En utilisant autre chose (GetMessage, PeekMessage) pour la base de la boucle principale est fou. Et la construction d'un cadre en utilisant autre chose devrait être illégal.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X