


Exemple de partage de code C# pour simuler PrintScreen et Alt PrintScreen pour capturer des images d'écran (image)
Mar 13, 2017 pm 05:49 PMC# Simulez PrintScreen et Alt PrintScreen pour capturer des images d'écran
keybd_event API
Fonction Fonction : Cette fonction synthétise un événement de frappe. Le système peut utiliser cet événement de frappe synthétisé pour générer un message WM_KEYUP ou WM_KEYDOWN, et le gestionnaire d'interruption du programme pilote du clavier appelle la fonction keybd_event. Sous Windows NT, cette fonction a été remplacée par SendInput.
Prototype de fonction?; VOID keybd_event (BYTE bVk, BYTE bScan, DWORD dwFlags, DWORD dwExtralnfo
Paramètres?:
bVk?: définir un Code clé virtuelle. La valeur du code clé doit être comprise entre 1 et 254.
bScan?: Définit le code de scan matériel de cette clé.
dwFlags?:Un ensemble de drapeaux qui définissent divers aspects du fonctionnement de la fonction . Les applications peuvent définir des bits d'indicateur en utilisant une combinaison de certaines constantes prédéfinies comme suit.
KEYEVENTF_EXTENDEDKEY?: Si cette valeur est spécifiée, la valeur précédente du scan code est l'octet de préfixe d'OXEO (224).
KEYEVENTF_KEYUP?: Si cette valeur est spécifiée, la touche sera relachée?; si cette valeur n'est pas spécifiée, la touche sera enfoncée.
dwExtralnfo?: définit des valeurs 32 bits supplémentaires liées aux frappes au clavier.
Valeur de retour?: Cette fonction n'a pas de valeur de retour.
Code complet?:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace PrintScreen { public partial class Form1 : Form { [DllImport("user32.dll")] static extern void keybd_event ( byte bVk,// 虛擬鍵值 byte bScan,// 硬件掃描碼 uint dwFlags,// 動(dòng)作標(biāo)識(shí) IntPtr dwExtraInfo// 與鍵盤動(dòng)作關(guān)聯(lián)的輔加信息 ); /// <summary> /// 模擬Print Screen鍵盤消息,截取全屏圖片。 /// </summary> public void PrintScreen() { keybd_event((byte)0x2c, 0, 0x0, IntPtr.Zero);//down Application.DoEvents(); keybd_event((byte)0x2c, 0, 0x2, IntPtr.Zero);//up Application.DoEvents(); } /// <summary> /// 模擬Alt Print Screen鍵盤消息,截取當(dāng)前窗口圖片。 /// </summary> public void AltPrintScreen() { keybd_event((byte)Keys.Menu, 0, 0x0, IntPtr.Zero); keybd_event((byte)0x2c, 0, 0x0, IntPtr.Zero);//down Application.DoEvents(); Application.DoEvents(); keybd_event((byte)0x2c, 0, 0x2, IntPtr.Zero);//up keybd_event((byte)Keys.Menu, 0, 0x2, IntPtr.Zero); Application.DoEvents(); Application.DoEvents(); } public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } /// <summary> /// 從剪貼板獲取圖片 /// </summary> /// <returns></returns> private Bitmap GetScreenImage() { IDataObject newobject = null; Bitmap NewBitmap = null; try { Application.DoEvents(); newobject = Clipboard.GetDataObject(); if (Clipboard.ContainsImage()) { NewBitmap = (Bitmap)(Clipboard.GetImage().Clone()); } return NewBitmap; } catch(Exception ex) { Console.WriteLine(ex.Message); return null; } } private void button1_Click(object sender, EventArgs e) { button1.Enabled = false; pictureBox1.Image = null; PrintScreen(); pictureBox1.Image = GetScreenImage(); button1.Enabled = true; Application.DoEvents(); } private void button2_Click(object sender, EventArgs e) { button2.Enabled = false; pictureBox1.Image = null; AltPrintScreen(); pictureBox1.Image = GetScreenImage(); button2.Enabled = true; Application.DoEvents(); } } }
Effet de course?:
Problèmes hérités?:
PrintScreen n'a aucun problème de tache, mais lors de l'utilisation d'AltPrintScreen Je n'arrive toujours pas à obtenir la bonne image, je ne sais pas pourquoi?! J'espère qu'un expert pourra passer par là et me donner quelques conseils, je lui serais très reconnaissant !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La différence entre le multithreading et l'asynchrone est que le multithreading exécute plusieurs threads en même temps, tandis que les opérations effectuent de manière asynchrone sans bloquer le thread actuel. Le multithreading est utilisé pour les taches à forte intensité de calcul, tandis que de manière asynchrone est utilisée pour l'interaction utilisateur. L'avantage du multi-threading est d'améliorer les performances informatiques, tandis que l'avantage des asynchrones est de ne pas bloquer les threads d'interface utilisateur. Le choix du multithreading ou asynchrone dépend de la nature de la tache: les taches à forte intensité de calcul utilisent le multithreading, les taches qui interagissent avec les ressources externes et doivent maintenir la réactivité de l'interface utilisateur à utiliser asynchrone.

L'histoire et l'évolution de C # et C sont uniques, et les perspectives d'avenir sont également différentes. 1.C a été inventé par Bjarnestrousstrup en 1983 pour introduire une programmation orientée objet dans le langage C. Son processus d'évolution comprend plusieurs normalisations, telles que C 11, introduisant des mots clés automobiles et des expressions de lambda, C 20 introduisant les concepts et les coroutines, et se concentrera sur les performances et la programmation au niveau du système à l'avenir. 2.C # a été publié par Microsoft en 2000. Combinant les avantages de C et Java, son évolution se concentre sur la simplicité et la productivité. Par exemple, C # 2.0 a introduit les génériques et C # 5.0 a introduit la programmation asynchrone, qui se concentrera sur la productivité et le cloud computing des développeurs à l'avenir.

C # La programmation multi-thread est une technologie qui permet aux programmes d'effectuer plusieurs taches simultanément. Il peut améliorer l'efficacité du programme en améliorant les performances, en améliorant la réactivité et en mettant en ?uvre un traitement parallèle. Bien que la classe de threads fournit un moyen de créer directement des threads, des outils avancés tels que la tache et l'async / attendre peuvent fournir des opérations asynchrones plus s?res et une structure de code plus propre. Les défis courants dans la programmation multithread incluent des impasses, des conditions de course et des fuites de ressources, qui nécessitent une conception minutieuse des modèles de filetage et l'utilisation de mécanismes de synchronisation appropriés pour éviter ces problèmes.

Comment créer des applications en utilisant .NET? La création d'applications à l'aide de .NET peut être réalisée via les étapes suivantes: 1) Comprendre les bases de .NET, y compris le langage C # et le support de développement multiplateforme; 2) Apprenez des concepts de base tels que les composants et les principes de travail de l'écosystème .NET; 3) Master Utilisation de base et avancée, des applications de console simples aux opérations de webapis et de base de données complexes; 4) familiariser avec les erreurs courantes et les techniques de débogage, telles que les problèmes de configuration et de connexion de la base de données; 5) L'optimisation des performances de l'application et les meilleures pratiques, telles que la programmation et la mise en cache asynchrones.

C # .NETtisversatileforbothwebandDeskTopDevelopment.1) forweb, useasp.netfordynamicapplications.2) fordesktop, employwindowsformSorwpfforrichInterfaces.3) usexamarinforcross-plateformDevelopment, permanant les codéescosswindows, macos, linux, etmobiledevices.

L'avantage du multithreading est qu'il peut améliorer les performances et l'utilisation des ressources, en particulier pour traiter de grandes quantités de données ou effectuer des opérations longues. Il permet d'effectuer plusieurs taches simultanément, améliorant l'efficacité. Cependant, trop de threads peuvent conduire à une dégradation des performances, vous devez donc sélectionner soigneusement le nombre de threads en fonction du nombre de c?urs CPU et de caractéristiques de tache. De plus, la programmation multi-thread implique des défis tels que les conditions de blocage et de race, qui doivent être résolues à l'aide de mécanismes de synchronisation, et nécessite une connaissance solide de la programmation simultanée, pesant les avantages et les inconvénients et les utilisant avec prudence.

.NetFramework est un cadre logiciel et C # est un langage de programmation. 1..NetFramework fournit des bibliothèques et des services, prenant en charge le développement d'applications de bureau, Web et mobile. 2.C # est con?u pour .NetFramework et prend en charge les fonctions de programmation modernes. 3..NetFramework gère l'exécution du code via CLR, et le code C # est compilé en IL et exécuté par CLR. 4. Utilisez .NetFramework pour développer rapidement des applications, et C # fournit des fonctions avancées telles que LINQ. 5. Les erreurs courantes incluent la conversion de type et les blocages de programmation asynchrones. Des outils VisualStudio sont nécessaires pour le débogage.

C # est un langage de programmation moderne et orienté objet développé par Microsoft et dans le cadre du .NET Framework. 1.C # prend en charge la programmation orientée objet (POO), y compris l'encapsulation, l'héritage et le polymorphisme. 2. La programmation asynchrone en C # est implémentée via Async et attend des mots clés pour améliorer la réactivité des applications. 3. Utilisez LINQ pour traiter les collections de données concisement. 4. Les erreurs courantes incluent les exceptions de référence NULL et les exceptions indexes hors gamme. Les compétences de débogage comprennent l'utilisation d'un débogueur et une gestion des exceptions. 5. L'optimisation des performances comprend l'utilisation de StringBuilder et d'éviter l'emballage et le déballage inutiles.
