图解C# 调用Win32 API 示例程序
生活随笔
收集整理的這篇文章主要介紹了
图解C# 调用Win32 API 示例程序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一 彈出消息框和發聲
先上代碼;相關函數不解釋;網上比較容易查到;
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices;namespace win32demo1 {public partial class Form1 : Form{[DllImport("User32.dll")]public static extern int MessageBox(int h, string m, string c, int type);[DllImport("kernel32.dll")]public static extern bool Beep(int frequency, int duration);public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){MessageBox(0, "Hello Win32 API", "C#", comboBox1.SelectedIndex);}private void button2_Click(object sender, EventArgs e){Random random = new Random();for (int i = 0; i < 10000; i++){Beep(random.Next(10000), 100);}}private void Form1_Load(object sender, EventArgs e){comboBox1.Items.Add("確定按鈕");comboBox1.Items.Add("確定、取消按鈕");comboBox1.Items.Add("終止、重試、忽略按鈕");comboBox1.Items.Add("是、否、取消按鈕");comboBox1.Items.Add("是、否按鈕");comboBox1.Items.Add("重試取消鈕");comboBox1.Items.Add("終止、重試、繼續");}} }可以選擇彈出不同類別的消息框;如下圖;
另上面發聲的代碼,重復1萬,能響一段時間了;
當調用非托管API函數時,它將依次執行以下操作:?
1.查找包含該函數的 DLL。
2.將該 DLL 加載到內存中。
3.查找函數在內存中的地址并將其參數推到堆棧上,以封送所需的數據(注意:只在第一次調用函數時,才會查找和加載 DLL 并查找函數在內存中的地址。)。
4.將控制權轉移給非托管函數。
5.對非托管 DLL 函數的“平臺調用”調用
平臺調用會向托管調用方引發由非托管函數生成的異常。
二 系統電源狀態
總結
以上是生活随笔為你收集整理的图解C# 调用Win32 API 示例程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图解C# Console 输出和Cons
- 下一篇: 图解VC++开发ActiveX控件C#调