20160126.CCPP體系詳解(0005天)

尹成發表於2016-02-16

程式片段(01):eatmem.c
內容概要:語句和邏輯結構

#include <stdio.h>
#include <stdlib.h>
                                                                                          #include <Windows.h>

//01.雜亂知識點:
//  1.記憶體分配函式malloc();
//      (1).分配單位:位元組
//      (2).分配方式:
//          鯨吞+慢嚥
//  2.記憶體分配注意事項:
//      32位的單個程式一口氣對多開闢2G的記憶體
//  3.程式當中預設操作的資料最小單位
//      都是位元組
//  4.軟體儲存單位訪問特點:
//      硬訪問:最小單位位元組(byte)
//          訪問硬體
//      軟訪問:最小單位二進位制位(bit)
//          二進位制位運算
//  5.常說的順序分支迴圈結構
//      都是處於單執行緒的情況下
//  6.單執行緒與多執行緒的執行特點:
//      單執行緒,順序執行
//      多執行緒,亂序執行
int main01(void)
{
    //malloc(1024 * 1024 * 2000);
    int num = 1 + 2 + 4 * 4;
    num += 4;

    while (1)
    {
        malloc(1024*1024*50);//吃記憶體多少
        Sleep(2000);//執行緒休眠時間長短
    }

    system("pause");
}

//02.空語句與程式碼塊兒的含義:
//      空語句-->";"
//      程式碼塊兒-->"{}"
int main02(void)
{
    ;//空語句
    ;

    {//程式碼塊兒
    }

    system("pause");
}

//03.錯誤說法:
//  在同一個函式當中不允許出現名稱相同的變數
//  應該是在同一個程式碼塊兒當中不允許出現名稱相同的變數
//      同一個程式碼塊兒-->意味著所處程式碼塊兒層級一致-->平行特點
int main03(void)
{
    int a;//重定義,同一個語句

    {
        int a;
        {
            int a;
        }
    }

    system("pause");
}

程式片段(02):指令.c+QQ.c
內容概要:結構化程式設計

///指令.c
#include <stdio.h>
#include <stdlib.h>

void tasklist()
{
    system("tasklist");//顯示程式列表
}

void tasklistwritetofile()
{
    system("tasklist >> D:\\1.txt");//將程式列表資料追加到D:\\1.txt檔案當中
}

//01.程式列表查詢原理:
//  1.執行原理:exe <C:\\1.txt scanf("%s", str); if(strstr())
//  2.步驟分析:
//      (1).執行程式列表查詢命令,將查詢結果匯入到硬碟上的檔案中
//      (2).讀取硬碟上的檔案資料進記憶體
//      (3).遍歷檔案在記憶體中的二進位制資料,進行字串匹配
//02.程式資料與檔案操作:
//  重寫資料(">")
//  追加資料(">>")
//  讀取資料("<")
int main01(void)
{
    //記錄所有程式,寫到檔案write >> i.txt;-->以便於後期對資料進行操作
    //記錄所有程式,顯示出來-->無法對程式列表顯示出來的資料進行操作
    //判斷QQ存在與否,存在則關閉該程式,不存在則開啟該程式
    //日誌:隱含著對系統的任何操作,可以進行日誌篩選和刪除
    system("tasklist >> D:\\1.txt");
    system("ipconfig > D:\\1.txt");//>重寫,>>追加

    system("pause");
}
///QQ.c
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//01.scanf();函式資料掃描特點:
//  1.使用輸入字串格式控制符的時候需要注意:
//      %XXXs控制符中間的XXX代表使用掃描多少個字元
//  2.先將硬碟上的檔案資料匯入到記憶體中,並且使用字串
//      儲存該二進位制資料,然後再對記憶體中的字元資料進行
//      匹配檢索,檢索之後,判斷該字串是否存在於檔案當中
int main01(void)
{
    char str[4096];

    //獲取檔案大小
    scanf("%4096s", str);
    char *p = strstr(str, "QQ.exe");//判斷QQ.exe是否存在
    //strstr返回指向字串開始字元的地址,NULL
    if (p != NULL)
    {
        printf("存在! \n");
    }
    else
    {
        printf("不存在! \n");
    }

    system("pause");
}

程式片段(03):最小數.c
內容概要:輸出最小的數

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>

//原理:兩兩進行比較,完全比較
int main01(void)
{
    int x, y, z;

    scanf("%d%d%d", &x, &y, &z);
    if (x > y)
    {
        //x一定不是最小的
        if (y > z)
        {
            printf("最小數是z = %d \n", z);
        }
        else
        {
            printf("最小數是y = %d \n", y);
        }
    }
    else
    {
        //y一定不是最小的
        if (x > z)
        {
            printf("最小數是z = %d \n", z);
        }
        else
        {
            printf("最小數是x = %d \n", x);
        }
    }

    system("pause");
}

int main02(void)
{
    int x, y, z;
    scanf("%d%d%d", &x, &y, &z);
    (x > y) ? ( (y > z) ? printf("最小數是z = %d \n", z) : printf("最小數是y = %d \n", y)):((x > z) ? printf("最小數是z = %d \n", z) : printf("最小數是x = %d \n", x)) ;

    system("pause");
}

程式片段(04):go.c
內容概要:順序結構

#include <stdio.h>
#include <stdlib.h>

int main01(void)
{
    printf("%d \n", 1);//順序結構,從上往下執行,從main函式開始

    printf("%d \n", 11);

    printf("%d \n", 111);

    printf("%d \n", 1111);

    system("pause");
}

void p1()
{
    printf("%d \n", 1);
}

void p2()
{
    printf("%d \n", 11);
}

void p3()
{
    printf("%d \n", 111);
}

//01.所有函式的呼叫特點:
//  所有函式預設情況之下都是單執行緒呼叫的,
//  也就是說父函式的繼續執行,必須等待子函式的執行完畢才行
//  一層巢狀一層的特點
int main02()
{
    p1();//函式呼叫,必須等待這個函式執行完畢之後,才會執行下一步
    p2();
    p3();

    system("pause");
}

//02.異或的使用特點:
//  1.一個資料異或同一個數量兩次,得到的資料是原始資料
//  2.原始資料和0進行異或,將會保持資料不變
int main03(void)
{
    int num = 10;
    num += 10;

    num -= 2;
    num ^= 1;
    num ^= 1;
    num ^= 0;
    printf("%d \n", num);

    system("pause");
}

程式片段(05):run.c
內容概要:if單分支

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>

int main01(void)
{
    if (-2 + 2)//只分辨0與非0的情況
    {
        system("msconfig");
    }

}

int main02(void)
{
    if (0)
        system("msconfig");
    //if不加括號的情況下,預設的控制範圍為,其後的一條語句
    //一條語句:一個分號或者一個程式碼塊兒
    system("notepad");

    system("pause");
}

int main03(void)
{
    int a, b, c;

    scanf("%d%d%d", &a, &b, &c);
    if (a < b)//如果a<b,則互換資料實體,保證a是a和b中的資料實體較大變數
    {
        //int temp = a;
        //a = b;
        //b = temp;
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
    }

    if (a < c)
    {
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
    }

    /*if (b < c)
    {
        b = b ^ c;
        c = b ^ c;
        b = b ^ c;
    }*/
    //簡寫形式:
    if (b < c) b = b ^c, c = b ^ c, b = b ^c;

    //限定順序:a>b>c
    printf("a = %d, b = %d, c = %d \n", a, b, c);

    system("pause");
}

程式碼片段(06):雙分支.c
內容概要:if雙分支

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>

int main01(void)
{
    if (-1)//這裡只需要判定最終結果是0或者非0就行了
    {
        system("calc");
    }
    else
    {
        system("notepad");
    }

    system("pause");
}

int main02(void)
{
    //單條語句,{}塊兒語句識別符號可以省略
    //最近的分號";"作為語句的結束
    if (1 - 1)
        system("calc");
    else
        system("notepad");

    system("pause");
    return 1;
}

int main03(void)
{
    int a, b;
    int abs, bbs;

    scanf("%d,%d", &a, &b);
    if (a > 0)
    {
        abs = a;
    }
    else
    {
        //abs = -a;
        abs = a * (-1);
    }

    /*if (b > 0)
    {
        bbs = b;
    }
    else
    {
        bbs = b * (-1);
    }*/
    bbs = ((b > 0) ? b : (b * (-1)));
    printf("%d \n", abs > bbs ? abs : bbs);

    system("pause");
    return 1;
}

#define 程式設計能力 80
#define 周瑞富的程式設計能力 81

int main04(void)
{
    if (周瑞富的程式設計能力 > 程式設計能力)
    {
        printf("歡迎加入流氓集團! \n");
    }
    else
    {
        printf("回家等電話! \n");
    }

    system("pause");
    return 1;
}

程式片段(07):多分支.c
內容概要:if多分支

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

int main01(void)
{
    int num;

    scanf("%d", &num);
    if (0 == num)
    {
        MessageBoxA(0, "", "", 0);
        system("shutdown -r -t 5");//重啟命令
    }
    else if (1 == num)
    {
        MessageBoxA(0, "", "", 0);
        while (1)
        {
            system("你不愛上劉振全世界就會毀滅 >> C:\\1.exe");//匯出並追加的命令
        }
    }
    else
    {
        MessageBoxA(0, "", "", 0);
        while (1)
        {
            malloc(10 * 1024 * 1024);//記憶體分配函式
        }
    }

    system("pause");
}

#define 企業要求程式設計能力 80
#define 劉振全的程式設計能力 39

//01.if多分支語句的特點:
//  詳情請看後解
int main02(void)
{
    if (劉振全的程式設計能力 > 80)
    {
        printf("高薪! \n");
    }
    else if (劉振全的程式設計能力 < 80 && 劉振全的程式設計能力 > 60)
    {
        printf("低薪! \n");
    }
    else
    {
        printf("回家等電話! \n");
    }

    system("pause");
}

//02.如何判斷同時判斷:
//  數字,小寫字母,大寫字母
int main03(void)
{
    while (1)
    {
        char ch = getchar();
        getchar();//吸收回車符
        if (ch >= '0' && ch <= '9')
        {
            printf("數字! \n");
        }
        else if (ch >= 'a' && ch <= 'z')
        {
            printf("小寫字母1 \n");
        }
        else if (ch >= 'A' && ch <= 'Z')
        {
            printf("大寫字母! \n");
        }
        else
        {
            printf("其它字元! \n");
        }
    }

    system("pause");
}

程式片段(08):一元二次方程.c
內容概要:分支巢狀

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

//01.一元二次方程案例:
//  方程:a*x*x + b*x + c = 0;
//  解析:
//      a = 0;
//          bx + c = 0;
//              b = 0;
//                  c = 0
//                      x-->任意值
//                  c != 0
//                      x-->無解
//              b != 0;
//                  x-->-c/b;
//      a != 0;
//          b*b - 4*a*c = 0;
//          b*b - 4*a*c > 0;
//          b*b - 4*a*c < 0;
//02.對於實數型別的資料錄入:
//  必需採用%lf這種輸入格式控制符
//  不能使用%f這種輸入格式控制符
int main01(void)
{
    double a, b, c;

    scanf("%lf%lf%lf", &a, &b, &c);
    if (a == 0)
    {
        printf("一元一次方程! \n");
        if (b == 0)
        {
            if (c == 0)
            {
                printf("x可以為任意值! \n");
            }
            else
            {
                printf("x無解! \n");
            }
        }
        else
        {
            printf("x = %lf \n", (-1)*(c / b));
        }
    }
    else
    {
        printf("一元二次方程! \n");
        double db = b*b - 4 * a*c;
        if (db == 0)
        {
            printf("x1 = x2 = %lf \n", (-1) *(b / (2 * a)));
        }
        else if (db > 0)
        {
            //不能實根
            printf("x1 = %lf, x2 = %lf \n", (-b - sqrt(db)) / (2 * a), (-b + sqrt(db) / (2 * a)));
        }
        else
        {
            //虛根
            double p = (-b) / (2 * a);
            double q = sqrt(-db) / (2 * a);
            printf("x1 = %lf - %lf i, x2 = %lf + %lf i \n", p, q, p, q);
        }
    }

    system("pause");
    return 1;
}

程式片段(09):enum.c
內容概要:列舉型別

#include <stdio.h>
#include <stdlib.h>

//01.C語言當中的列舉型別使用特點解析:
//  1.列舉型別的預置成員只能被賦予整數(char->int->long)
//      絕對不可以被賦予其它值
//  2.列舉型別的預置成員預設從0開始進行標號
//  3.列舉成員當中的任意一個預置成員被賦予了自定義的整數值
//      那麼其後的預置成員整型數值依次遞增1(從預置整數值開始)
//  4.列舉型別的變數用於有效的限定賦予有意義的值
//      能夠限定賦值的範圍,只能使用預置成員名稱進行賦值
int main01(void)
{
    //0, 1, 2, 3, 4, 5, 6
    enum week { 星期1, 星期2, 星期3, 星期4, 星期5, 星期6, 星期7 };//從左往右逐漸遞增1,預設從零開始進行遞增
    enum week week1 = 星期5;//enum week-->表示自定義列舉型別 week1-->表示列舉變數
    if (星期5 == week1)
    {
        printf("是%d \n", week1);
    }                                           
    printf("%d \n", 星期2);

    //enum只能被賦予整數,其他任意型別都不可以
    enum jun
    {
        司令 = 10,
        軍長 = 9
    };
    enum jun j = 司令;
    printf("%d \n", 司令 > 軍長);

    system("pause");
    return 1;
}

程式片段(10):switch.c
內容概要:switch多分支

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>

//01.if-else if-else內容總結:
//  1.用於多分支判斷情況:
//      多個入口,單個出口
//  2.用於區間範圍判斷
//      判斷情況模糊
//  3.作為區間判斷的時候需要
//      注意區間範圍必須有序
//  4.沒有任何返回值
int main01(void)
{                 
    int num = 9;
    //if-else if-else-->很容易混淆,不匹配情況
    //switch-->不容易混淆,絕對匹配情況
    if (num == 1)
    {
        if (1 > 0) {}else {}
    }
    else if (num == 2)
    {
        if (2 > 0) {}else {}
    }
    else if (num == 3)
    {
    }
    else if (num == 4)
    {
    }
    else if (num == 5)
    {
    }
    else if (num == 6)
    {
    }
    else
    {
        //處理上述之外的情況
    }

    system("pause");
    return 1;
}

//02.switch內容總結:
//  1.用於多分支判斷情況:
//      多個入口,單個出口
//  2.用於等值判斷
//      待判斷變數必須和常量
//      等值才能匹配成功
//  3.特殊情況分析:
//      (1).每種情形完成之後需要新增break語句
//          如果沒有break語句,會發生穿透現象
//      (2).穿透現象可以用於離散區間模擬
//          類似於區間形式的判斷(前提有序)
//      (3).無論default語句放在哪個位置
//          它都是最後才進行判斷的,只有排除了
//          所有情況之後才會到default語句
//      (4).switch語句只有一個出口
//      (5).只要沒有break關鍵字,但是存在default
//          語句,那麼最後執行的一定是default語句
//          如果最後執行的default語句後面沒有break
//          而且該default語句執行之後會發生穿透現象
//          直到遇到break才會終止switch語句
//  4.switch語句只支援整數型別的等值判斷
//      不支援其它型別的等值判斷
//  5.case關鍵字後面的常量匹配值不能是表示式
//      只能是整型常量或者本質為整型常量的字元型資料
int main02(void)
{
    int num = 1;
    scanf("%d", &num);

    char fl = 'A';
    enum week { X, Y, Z };
    enum week week1 = X;

    int data = 2;
    switch (num)
    {//要處理的變數 error C2050:switch 表示式不是整型
    //case 10://不可以出現相同的case後置常量
    case 10:
        printf("一個士兵! \n");
        break;
    case 1:
        printf("一個班12個人! \n");
        break;
    case 2:
        printf("一個排36個人! \n");
    case 3:
        printf("一個連108個人! \n");
        break;
    case 4:
        printf("一個營324個人! \n");
        break;
    case 5:
        printf("一個團972個人! \n");
        break;
    default:
        printf("我只能處理到團級編制! \n");
        break;
    }

    system("pause");
    return 1;
}

程式片段(11):go.c+周瑞富的報仇計劃.c
內容概要:周瑞富的報仇計劃

///go.c
#include <Windows.h>

//01.模擬一個自動化的過程:
//  1.開啟瀏覽器
//  2.跳轉到網址
//  3.輸入+搜尋
//  4.回車進入到
//  5.關閉瀏覽器
//02.按鍵程式自動化模擬:
//  1.鍵盤事件函式:keybd_event(按鍵虛擬對映值|按鍵字元, 0, 鍵盤操作, 0);
//      keybd_event(0x5B, 0, 0, 0);//按下
//      keybd_event(0x5B, 0, 2, 0);//鬆開
int main01(void)
{
    //keybd_event(0x5B, 0, 0, 0);//按下
    //keybd_event(0x5B, 0, 2, 0);//鬆開

    keybd_event(0x5B, 0, 0, 0);
    keybd_event('M', 0, 0, 0);
    keybd_event('M', 0, 2, 0);
    keybd_event(0x5B, 0, 2, 0);

    //system("pause");
    return 1;
}

//02.滑鼠程式自動化模擬:
//  1.滑鼠事件函式:mouse_event(待執行的滑鼠操作, 滑鼠移動到x位置, 滑鼠移動到y位置, 0, 0);
//      mouse_event(MOUSEEVENT_ABSOLUTE | MOUSEEVENTF_MOVE, 座標x, 座標y, 0, 0);
//  2.整數在進行乘除法的時候:
//      與運算順序密切相關
int main02(void)
{
    main01();//全螢幕最小化,回到桌面

    //移動滑鼠到40,40這個位置
    Sleep(2000);

    //移動到某個指定位置
    //mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 100 / 1366 * 65535, 100 / 768 * 65535, 0, 0);//錯誤寫法-->資料丟失
    //mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 30, 30, 0, 0);//錯誤寫法-->螢幕分點為65535(寬和高都分佈為這麼多個點)
    mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 25 * 65535 / 1366, 25 * 65535 / 768, 0 , 0);

    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

    system("pause");
    return 1;
}
///周瑞富的報仇計劃.c
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

//01.模擬一個自動化流程:
//  1.進入到桌面
//  2.移動滑鼠點
//  3.開啟瀏覽器
//  4.跳轉到網址
//  5.輸入+搜尋
//  6.點選進入到
//  7.關閉瀏覽器
//02.ShellExecuteA(0, "open", str, 0, 0, 3);
//  該函式可以實現定製化的開啟各種視窗
void openBrowser(char *str)
{
    ShellExecuteA(0, "open", str, 0, 0, 3);
}

//03.system("taskkill /f /im 360chrome.exe");
//  1.該函式用於關閉某種程式名稱的所有程式
//  2.只要程式名稱是指定名稱,就會被全部關閉掉
void closeBrowser()
{
    system("taskkill /f /im 360chrome.exe");
}

//04.鍵盤模擬方式:
//  1.模擬JINGDONG英文字母的輸入
//  2.模擬Enter鍵按下
void searchKeyword()
{
    keybd_event('J', 0, 0, 0);//按下
    keybd_event('J', 0, 2, 0);//鬆開
    keybd_event('I', 0, 0, 0);
    keybd_event('I', 0, 2, 0);
    keybd_event('N', 0, 0, 0);
    keybd_event('N', 0, 2, 0);
    keybd_event('D', 0, 0, 0);
    keybd_event('D', 0, 2, 0);
    keybd_event('O', 0, 0, 0);
    keybd_event('O', 0, 2, 0);
    keybd_event('N', 0, 0, 0);
    keybd_event('N', 0, 2, 0);
    keybd_event('G', 0, 0, 0);
    keybd_event('G', 0, 2, 0);
    Sleep(100);

    keybd_event('1', 0, 0, 0);
    keybd_event('1', 0, 2, 0);
    Sleep(100);

    keybd_event(0x0D, 0, 0, 0);//按下
    keybd_event(0x0D, 0, 2, 0);//鬆開
}

//05.模擬組合鍵的按下
//  最大化當前視窗
void maxbaidu()
{
    //組合快捷鍵模擬
    keybd_event(VK_LMENU, 0, 0, 0);//按下
    keybd_event(VK_SPACE, 0, 0, 0);//按下
    keybd_event(VK_SPACE, 0, 2, 0);//鬆開
    keybd_event('X', 0, 0, 0);//按下
    keybd_event('X', 0, 2, 0);//鬆開
    keybd_event(VK_LMENU, 0, 0, 0);//鬆開
}

//06.滑鼠操作模擬:
//  1.模擬滑鼠移動
//  2.模擬滑鼠雙擊
//  注意:整數的書寫方式
void click()
{
    mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 335 * 65535 / 1366, 225 * 65535 / 768, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 2, 0);
}

int main01(void)
{
    //01.採用預設瀏覽器開啟指定連結:
    openBrowser("http://www.baidu.com");
    Sleep(3000);

    //02.搜尋指定關鍵字
    searchKeyword();
    Sleep(3000);

    //03.最大化瀏覽器視窗
    maxbaidu();

    //04.模擬滑鼠移動並開啟
    click();
    Sleep(5000);

    //05.關閉瀏覽器
    closeBrowser();

    system("pause");
    return 1;
}

程式片段(12):go.c
內容概要:if-switch

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

//01.switch多分支語句內容總結:
//  1.switch能夠操作的引數說明:
//      (1).switch();括號引數最終只能有一個值
//      (2).case後的校對常數使用特點:
//          必須是:整型資料或者常量表示式(本質常量)
//          不能是:實數,變數
//          如果使用逗號表示式:常量結果
//              必須使用括號括上,否則無效
//      (3).default後面沒有指定匹配常量
//          default語句的位置可以任意指定,
//          如果其他case專案不匹配,始終最後執行該項
//          如果沒有放在末尾,切記注意穿透現象,直達break
//          語句才會結束switch選擇結構
//          default語句可有可無
//      (4).break語句的使用特殊:
//          用於跳出選擇結構,如果沒有,將會貫穿執行
//          貫穿執行可以利用,也可以避免
//  2.switch多分支語句與if-else if-esle使用特點:
//      switch:等值判斷,離散區間判斷
//          結構清晰
//      if-else if-else:區間判斷
//          結構混亂
//      注意:區間判斷要求資料必須有序
int main01(void)
{
    int num;
    scanf("%d", &num);//隨機數

    switch (num)
    {
    case 1+21:
        keybd_event('J', 0, 0, 0);//按下
        keybd_event('J', 0, 2, 0);//鬆開
        keybd_event('I', 0, 0, 0);//按下
        keybd_event('I', 0, 2, 0);//鬆開
        keybd_event('N', 0, 0, 0);//按下
        keybd_event('N', 0, 2, 0);//鬆開
        keybd_event('G', 0, 0, 0);//按下
        keybd_event('G', 0, 2, 0);//鬆開
        keybd_event('D', 0, 0, 0);//按下
        keybd_event('D', 0, 2, 0);//鬆開
        keybd_event('O', 0, 0, 0);//按下
        keybd_event('O', 0, 2, 0);//鬆開
        keybd_event('N', 0, 0, 0);//按下
        keybd_event('N', 0, 2, 0);//鬆開
        keybd_event('G', 0, 0, 0);//按下
        keybd_event('G', 0, 2, 0);//鬆開
        Sleep(50);

        keybd_event('1', 0, 0, 0);//按下
        keybd_event('1', 0, 2, 0);//鬆開
        break;
    default :
        break;
    }

    system("pause");
    return 1;
}

//02.如何判斷小寫字母?大寫字母?數字
//  char x;
//  x >= 'a' && x <= 'z'
//  x >= 'A' && x <= 'Z'
//  x >= '1' && x <= '1'

//double db = 1.9;
//double data;
//if (num == db)
//{}
//else if (num == 1.1 && num > data && data > 10)
//{}
//else if (num == 1.1 )
//{}
//else
//{}

程式片段(13):while.c
內容概要:while迴圈

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

int main01(void)
{
    while (0)//0和非0
    {
        malloc(1024 * 1024 * 10);
    }

    system("pause");
    return 1;
}

int main02(void)
{
    int i = 0;
    while (i < 500)
    {
        system("notepad");
        i++;
    }

    system("pause");
    return 1;
}

int main03(void)
{
    int i = 0;
    int j = 0;

    //0 
    //1
    //2
    //3
    //4-->5次
    //while (i++ < 5)//++ <
    //{
    //  //i++;
    //  system("notepad");
    //}

    //i++ < 5 <==> ++j <6-->依然5次
    while (i++ < 5 && ++j < 6)
    {
        system("notepad");
    }

    system("pause");
    return 1;
}

//01.如何識別一條語句:
//  1.空語句(";")
//  2.只要以分號(";")結尾就算一條語句
//  3.語句塊兒
//  4.任意一個結構:
//      順序-->迴圈-->分支
int main04(void)
{
    while (1)
    {//while()之後不要新增空語句(;),如果是塊兒語句,則整個塊兒語句被當做一個語句,否則就是最近的一條語句(例如:空語句;)
        system("notepad");
    }

    system("pause");
    return 1;
}

//02.如何判斷一個迴圈結構到底執行執行多少次?
//  判斷多少對對映關係成立就行了
int main05(void)
{
    int i = 1;
    int res = 0;

    while (i <= 100)
    {//100組對映關係成立-->執行100次
        res += i;
        i++;
    }
    printf("%d \n", res);

    system("pause");
    return 1;
}

int main06(void)
{
    int n = 0;
    scanf("%d", &n);

    int i = 0;
    int res = 1;
    while (i < n)//迴圈條件
    {
        res *= 2;//迴圈執行體
        i++;
    }
    printf("%d \n", res);

    system("pause");
    return 1;
}

void shellOpenQQ()
{
    ShellExecuteA(0, "open", "D:\\ProgramFiles\\Tencent\\QQ\\Bin\\QQScLauncher.exe", 0, 0, 1);
}

int main01(void)
{
    shellOpenQQ();
    Sleep(3000);

    HWND win = FindWindowA("TXGuiFoundation", "QQ");
    if (win != NULL)//找到
    {
        //控制窗體顯示和隱藏
        /*printf("窗體顯示和隱藏! \n");
        while (1)
        {
            ShowWindow(win, SW_SHOW);
            Sleep(30);
            ShowWindow(win, SW_HIDE);
            Sleep(30);
        }*/

        //控制窗體從左向右移動
        printf("窗體從左往右移動! \n");
        //while (1)
        //{
        //  int i = 0;
        //  while (i < 1000)
        //  {
        //      SetWindowPos(win, NULL, i, 0, 500, 400, 1);
        //      //Sleep(30);
        //      i++;
        //      //i=0;i-->1000(從左往右進行移動)
        //      //500,400-->指定窗體的寬高
        //  }
        //}

        //控制窗體從上往下移動
        printf("窗體從上往下移動! \n");
        /*while (1)
        {
            int i = 0;
            while (i < 500)
            {
                SetWindowPos(win, NULL, 1000, i, 500, 400, 1);
                Sleep(30);
                i++;
            }
        }*/

        //控制窗體從右往左
        printf("控制窗體從右往左! \n");
        /*while (1)
        {
            int i = 1000;
            while (i > 0)
            {
                SetWindowPos(win, NULL, i, 500, 500, 400, 1);
                Sleep(30);
                i--;
            }
        }*/

        //控制窗體從下往上
        printf("控制窗體從下往上! \n");
        int i = 500;
        while (i > 0)
        {
            SetWindowPos(win, NULL, 0, i, 500, 400, 1);
            Sleep(30);
            i--;
        }
    }

    system("pause");
    return 1;
}

程式片段(14):dowhile.c
內容概要:do-while迴圈

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

int main01(void)
{
    do
    {
        system("notepad");
    } while (-1);//do-while至少執行迴圈體一次,非0將會永遠迴圈執行下去

    system("pause");
    return 1;
}

//01.通過對映對數判斷執行次數的方式:
//  執行-->4
//  執行-->3
//  執行-->2
//  執行-->1
//  執行-->0-->不再執行
int main02(void)
{
    int i = 5;

    do
    {//相當於直接將5對映的哪一次給執行了5-->1:執行5次
        system("notepad");
        i--;
    } while (i);//5次

    system("pause");
    return 1;
}

//02.通過對映對數判斷執行次數的方式:
//  執行-->5
//  執行-->4
//  執行-->3
//  執行-->2
//  執行-->1
//  執行-->0-->不再執行
//  注意:後面的整數是根據while();後面的整個表示式結果進行判斷的
//03.迴圈結構轉換特點:
//  1.while迴圈結構一定能夠轉換成為do-while迴圈結構;
//  2.do-while迴圈結構卻不一定能夠轉換成為while迴圈結構
//  注意:while<--->do-while迴圈結構之間的轉換規律
int main03(void)
{
    int i = 5;

    do
    {
        printf("notepad \n");
    } while (i--);//6次-->整個表示式的對映多加了一個0對映

    system("pause");
    return 1;
}

int main04(void)
{
    do
    {
        printf("notepad \n");
        malloc(1024 * 1024 * 500);
    } while (0);

    system("pause");
    return 1;
}

int main05(void)
{
    int i = 5;
    int j = 4;

    //執行規律特點分析:
    //  0.確定邏輯與的前後判斷關係
    //  1.針對j的規律分析:
    //      執行-->4
    //      執行-->3
    //      執行-->2
    //      執行-->1
    //      執行-->0-->對映對數5-->執行5次
    //  2.針對i的規律分析:
    //      執行-->4
    //      執行-->3
    //      執行-->2
    //      執行-->1
    //      執行-->0-->對映對數5-->執行5次
    do
    {
        printf("notepad \n");
        printf("i = %d, j = %d \n", i, j);
    } while (j-- && --i);//與,有一個為0就終止迴圈結構

    system("pause");
    return 1;
}

int main06(void)
{
    char ch;

    do
    {
        ch = getchar();
        if (ch >= 'A' && ch <= 'Z')
        {
            ch = ch + 32;//大寫轉小寫
        }
        getchar();//緩衝回車
        putchar(ch);
        putchar('\n');
    } while (ch != '\t');//等於tab退出do-while迴圈結構

    system("pause");
    return 1;
}

//03.Window操作API與do-while函式的結合使用
int main07(void)
{
    //非同步啟動一個記事本
    system("start notepad");
    Sleep(2000);
    //獲取窗體編號
    HWND win = FindWindowA("Notepad", "無標題 - 記事本");
    if (win != NULL)
    {
        system("echo find notepad! \n");
        int i = 0;
        do
        {
            //設定窗體資訊:
            //win00000000-->窗體控制程式碼號
            //i---------------->窗體x座標
            //i * 768 /1366--->窗體y座標
            //400------------->窗體寬度
            //400------------->窗體高度
            SetWindowPos(win, NULL, i, i * 768 / 1366, 400, 400, 1);//設定座標,尺寸
            i++;
        } while (i < 1000);
    }

    //窗體描述資訊
    //  窗體左上角的座標表示(IpRect.left, IpRect.top);
    //  窗體右下角的座標表示(IpRect.right, IpRect.bottom);
    RECT IpRect;
    GetWindowRect(win, &IpRect);
    printf("%d, %d, %d, %d \n", IpRect.top, IpRect.bottom, IpRect.left, IpRect.right);

    if (win != NULL)
    {
        printf("find! \n");
        //SWP_SHOWWINDOW-->表示顯示視窗
        SetWindowPos(win, NULL, 0, 0, 300, 300, SWP_SHOWWINDOW);//設定座標尺寸
        //SetWindowPos();
        int i = 400;
        Sleep(1000);
        do
        {
            SetWindowPos(win, NULL, 0, 0, i, i, SWP_SHOWWINDOW);
            //MoveWindow();
            printf("%d \n", i);
            Sleep(100);
            i += 20;
        } while (i <= 700);
    }
    else
    {
        printf("not find! \n");
    }

    system("pause");
    return 1;
}

程式片段(15):for.c
內容概要:for迴圈

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

//01.for迴圈的死迴圈結構:
//  空語句:for(;;);
//  含語句:for(;-1;);中間只要!0就行
int main01()
{
    for (;;)//中間的語句起到判斷的作用,為空為真,不為空的情況下非0即真,0則假
    {
        MessageBoxA(0, "china", "hello", 0);
    }

    for (;;);
    for (; -1;);

    system("pause");
}

//02.還是通過對映對數判斷在迴圈的執行次數
//  先判斷,在執行
//03.某種執行結構的末尾空語句和塊兒語句特點:
//  所有結構後面都可以出現空語句和塊兒語句
//  無論是順序->分支-->迴圈結構都是一樣的
//  只要是空語句也就當做一條語句進行處理
//  只要是塊兒語句也當做一條語句進行處理
//  所有的空語句;都可以通過塊兒語句進行替換
//  所有的塊兒語句都可以通過空語句進行替換
//  前提條件是一一對應(一個塊兒語句對應於一條空語句)
int main02(void)
{
    //for的作用範圍,要麼是最近的分號,要麼是塊兒語句
    for (int i = 0; i < 5; i++)//i作為初始化條件,i < 5作為迴圈判斷條件,i++作為趨於迴圈終止的語句
    {
        system("calc");
    }

    system("pause");
}

//04.區域性變數作用域分析:
//  迴圈變數的作用域類似於函式形參這個區域性變數一樣
//  只在其後面的首個塊兒語句當中使用才會有效果
int main02(void)
{
    int res = 0;

    for (int i = 1; i <= 100; i++)
    {//迴圈變數不容易被外部給修改
        res += i;
    }
    printf("res = %d \n", res);

    int i = 1;
    while (i <= 100)
    {
        res += i;
    }
    //i = 190;

    system("pause");
}

//05.fox迴圈特殊點分析:
//  for迴圈的迴圈初始化條件,迴圈判斷條件,迴圈趨向於結束的條件
//  都只會支援一條語句,但是卻可以通過逗號運算子或者其他運算子支援多個邏輯執行
//  一個逗號表示式最終只會當做一條語句進行處理
int main03(void)
{
    for (int i = 0; i < 100; i += 3) {}

    for (int i = 0, j = 0; i < 100 && j < 100; i += 3, j += 4) {}//for迴圈通過,逗號運算子支援符合語句

    system("pause");
}

//06.通過for迴圈實現邏輯: 
//  1*2 + 3*4 + 5*6 + ... + 99*100
//  (2n-1)*(2n)-->n從1到50-->由一個資料生成兩個資料
int main04(void)
{
    int res = 0;

    for (int i = 1; i <= 50; i++)
    {
        res += i*(i + 1);//C語言當中的乘號不能像數學中的一樣進行省略
    }
    printf("res = %d \n", res);

    system("pause");
}

int main05(void)
{
    int res = 0;

    for (int i = 2; i <= 100; i += 2)
    {
        res = (i - 1)*i;//推理公式
    }
    printf("res = %d \n", res);

    system("pause");
}

int main06(void)
{
    //讓視窗從右上角網左下角移動
    HWND win = FindWindowA("gdkwindowToplevel", "Cocos");
    if (win == NULL)
    {
        printf("Cocos玩兒失蹤! \n");
    }
    else
    {
        for (int i = 0; i < 1000; i++)
        {
            SetWindowPos(win, NULL, 1366 - i, i * 768 / 1366, 400, 400, 1);
        }
    }

    system("pause");
}

程式片段(16):break.c+break習題.c+google.c
內容概要:break關鍵字

///break.c
#include <stdio.h>
#include <stdlib.h>

//01.不安全函式和安全函式:
//  不安全函式會在安全函式的名稱後面新增一個"_s"以作為安全函式的標識
//02.case語句特點:
//  1.swtich當中如果沒有使用break關鍵字,那麼switch會貫穿執行
//  2.case語句塊兒當中雖然沒有使用塊兒語句,但是仍然可以編寫多條語句
int main01(void)
{
    int num;

    scanf_s("%d", &num);//安全的scanf_();函式使用
    switch (num)
    {
    case 1://case就像一個開關一樣,有一個符合條件,就由開關處從上往下進行執行case後面的語句塊兒,一直執行到break關鍵字為止
        //如果沒有break,就全部進行執行
        system("tasklist");//程式列表
        //printf("test \n");//case語句塊兒後的語句塊兒可以寫多條語句
        break;
    case 2:
        system("calc");//計算器
        break;
    case 3:
        system("mspaint");//畫圖板
        break;
    case 4:
        system("記事本");
        break;
    }

    system("pause");
}

//03.break關鍵字使用總結:
//  1.使用環境:
//      只能用於switch多分支結構和迴圈結構
//  2.使用特點:
//      用於switch多分支結構:
//          表明終止switch多分支結構(包含break關鍵字的最內部switch結構)
//      用於迴圈結構
//          表明終止迴圈結構(包含break關鍵字的最內部迴圈結構)
int main02(void)
{
    for (int i = 0; ; i++)
    {//for迴圈第二個語句為空,照樣表示的是死迴圈,除非第二個語句為0,否則都是死迴圈
        if (900 == i)
        {
            break;//退出迴圈,break一旦執行,表明退出迴圈結構執行體,也就是說迴圈結構執行體後面的語句都將得不到執行
        }
        printf("%d \n", i);//列印資料
    }

    system("pause");
}
///break習題.c
#include <stdio.h>
#include <stdlib.h>

//01.求解二元一次方程的兩個解
//  二元一次方程
//      316=13*x+11*y
//      316=13*i+11*j
//  窮舉法-->列舉法-->暴力破解法
//      (316-13*i) % 11 == 0;//沒有餘數-->說明整除成功,得到實際的解
int main03(void)
{
    for (int i = 0;; i++)
    {
        printf("%d \n", i);
        if ((316 - 13 * i) % 11 == 0)//判定能否完成整除
        {//沒有餘數,說明整除成功-->有結果
            printf("316 = %d*13 + %d*11 \n", i, (316 - 13 * i) / 11);//整除成功之後的結果就是相應的解
            break;
        }
    }

    system("pause");
}
///google.c
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>//ShellExecuteA

//開啟Google瀏覽器
void openGoogle()
{
    ShellExecuteA(0, "open", "C:\\Users\\ZHEN\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe", 0, 0, 1);//預設視窗開啟
}

//控制Google瀏覽器
void moveGoogle()
{
    //尋找一個視窗,獲取以後,將視窗編號賦值給變數win
    HWND win = FindWindowA("Chrome_WidgetWin_1", "開啟新的標籤頁 - Google Chrome");
    if (win == NULL)
    {
        printf("谷歌玩兒失蹤! \n");
        return;
    }

    //0,10,20,30,40,50
    //0,1,2,3,4,5
    for (int i = 0;; i = i + 10)
    {
        if (i > 1500)
        {
            break;
        }
        SetWindowPos(win, NULL, i, 0, 200, 200, 0);//設定視窗位置,大小
        if (i / 10 % 2 == 1)
        {
            ShowWindow(win, SW_HIDE);//隱藏
        }
        else
        {
            ShowWindow(win, SW_SHOW);//顯示
        }
        Sleep(30);
    }

    int x = 1600;
    while (1)
    {
        if (x == 0)
        {
            break;//跳出迴圈
        }
        SetWindowPos(win, NULL, x, 0, 200, 200, 0);//設定視窗座標,尺寸
        Sleep(50);
        x = x - 10;
    }
    SetWindowPos(win, NULL, 0, 0, 100, 100, 0);//初始位置
    //do-while實現放大和縮小

    int y = 100;//y長度從100~768,寬度從100*16/9~1366
    do
    {
        if (y == 768)
        {
            break;//跳出死迴圈
        }
        SetWindowPos(win, NULL, 0, 0, y * 16 / 9, y, 0);//放大,對應於螢幕的解析度
        Sleep(50);
        y += 10;
    } while (1);

    y = 768;
    do
    {
        if (y == 100)
        {
            break;//跳出死迴圈
        }
        SetWindowPos(win, NULL, 0, 0, y * 16 / 9, y, 0);//通過設定長度,寬度實現縮小
        Sleep(50);
        y -= 10;
    } while (1);

    system("pause");
}

//關閉Google瀏覽器
void closeGoogle()
{
    system("taskkill /f /im chrome.exe");
}

int main04(void)
{
    closeGoogle();//關閉以前的Google瀏覽器
    Sleep(2000);
    openGoogle();//開啟最新的Google瀏覽器
    Sleep(5000);
    moveGoogle();

    system("pause");
}

程式片段(17):continue.c+遊戲迅雷.c
內容概要:continue關鍵字

///continue.c
#include <stdio.h>
#include <stdlib.h>

//01.continue關鍵字使用總結:
//  1.使用場景:
//      conti`這裡寫程式碼片`nue關鍵字只能用於迴圈語句當中
//  2.使用特點:
//      用於結束包含continue關鍵字的最內層迴圈結構
//      的執行體當中的本次剩餘語句
int main01(void)
{
    for (int i = 100; i < 201; i++)
    {
        if (i % 3 == 0)
        {//不會列印能夠整除3的數字
            //break;//結束迴圈結構
            continue;//結束本次迴圈,執行下一次迴圈,在關鍵字continue之後的本次迴圈語句就不被執行了
        }
        printf("%d \n", i);
    }

    system("pause");
}
///調戲迅雷.c
#define _CRT_SECURE_NO_WARNINGS//關閉安全檢查
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

//能夠被3整除的秒,我們就進行隱藏,否則我們進行顯示
//開啟迅雷
void openThunder()
{
    ShellExecuteA(0, "open", "D:\\ProgramFiles\\ThunderNetwork\\Thunder\\Program\\Thunder.exe", 0, 0, 1);
}

void showThunder(int i)
{//i為非0的時候隱藏,i為0的時候顯示
    //尋找描述迅雷的窗體
    HWND win = FindWindowA("XLUEFrameHostWnd", "迅雷");
    if (i)
    {
        ShowWindow(win, SW_HIDE);//隱藏
    }
    else
    {
        ShowWindow(win, SW_SHOW);//顯示
    }
}

void closeThunder()
{
    system("taskkill /f /im Thunder.exe");
}

int main02(void)
{
    closeThunder();
    Sleep(2000);

    openThunder();
    Sleep(3000);

    HWND win = FindWindowA("XLUEFrameHostWnd", "迅雷7");

    //計數器的使用:
    //  計數器構建:
    //      int i = 0;
    //  計數器使用:
    //      1, 3, 5, 7, 9, 11:隱藏
    //      2, 4, 6, 8, 10, 0 :顯示
    int i = 0;
    while (1)
    {
        char str[20];//字元陣列,作為字串的緩衝區模擬,最大長度為20
        sprintf(str, "title 第%3d秒 \n", i);
        //跟printf();函式一樣,sprintf();函式也是用於列印字串的:
        //  printf();函式用於將字串列印到螢幕
        //  sprintf();函式用於將字串列印到字串
        system(str);//當前命令列中執行的命令,標題就是當前命令列視窗的標題
        Sleep(1000);

        if (i % 3 == 0)
        {
            ShowWindow(win, SW_HIDE);//隱藏
            continue;//提前結束本次迴圈的的餘後迴圈執行體-->節省時間,提升效率
        }
        ShowWindow(win, SW_SHOW);//顯示

        i++;//計數器自增-->事情完成之後才增加,沒有完成就不用增加(完成為1,未完成不為1)
    }

    system("pause");
}

程式片段(18):googleearth.c
內容概要:遞迴調戲GoogleEarth

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

//01.HWND型別的變數介紹:
//  1.窗體的唯一標識號
//  2.全域性變數,誰都可以進行訪問,遞迴函式同樣可以呼叫
HWND win;

//開啟GoogleEarth
void openGoogleEarth()
{
    ShellExecuteA(0, "open", "\"C:\\Program Files (x86)\\Google\\Google Earth\\client\\googleearth.exe\"", 0, 0, 1);
}

//GoogleEarth窗體的隱藏和顯示切換
void HSGoogleEarth()
{//死迴圈-->反覆呼叫-->遞迴的形式-->遞迴函式
    ShowWindow(win, SW_HIDE);//隱藏
    Sleep(1000);
    ShowWindow(win, SW_SHOW);//顯示
    Sleep(1000);//實現完美間隔形式需要這行程式碼

    HSGoogleEarth();
}

//Google瀏覽器窗體的從左往右移動
void moveGoogleEarth(int n)
{//遞迴函式
    if (1600 == n)//當n == 1600的時候,結束遞迴迴圈
    {
        return;//跳出遞迴迴圈,進行遞迴函式的彈棧操作
    }
    else
    {
        SetWindowPos(win, NULL, n, 0, 500, 500, 0);//設定窗體座標,尺寸
        Sleep(50);//休眠當前處理本函式的執行緒
        n += 10;//讓遞迴迴圈函式趨於終止的條件
    }

    moveGoogleEarth(n);//遞迴呼叫
}

//0~1600,長度,寬度都會改變,放大
void googleEarthSmallToBig(int n)
{
    if (1600 == n)
    {
        return;//跳出遞迴迴圈結構
    }
    else
    {
        //實現從小到大,GoogleEarth有一個最小的視窗比例,最小不能小於這個視窗比例
        SetWindowPos(win, NULL, 0, 0, n, n * 768 / 1366, 0);//設定窗體座標,尺寸
        Sleep(50);//休眠
        n += 10;
    }

    googleEarthSmallToBig(n);
}

//關閉GoogleEarth
void closeGoogleEarth()
{
    system("taskkill /f /im googleearth.exe");
}

//玩兒弄GoogleEarth
void playGoogleEarth()
{
    //尋找GoogleEarth窗體本身
    win = FindWindowA("QWidget", "Google Earth");
    if (NULL == win)
    {
        printf("GoogleEarth正在玩失蹤! \n");
        return;
    }
    Sleep(2000);

    SetWindowTextA(win, "拉里佩奇!你的產品好垃圾! \n");
    Sleep(2000);

    moveGoogleEarth(0);//移動
    googleEarthSmallToBig(0);//放大
    HSGoogleEarth();//顯示隱藏切換
}

int main01(void)
{
    closeGoogleEarth();
    Sleep(2000);
    openGoogleEarth();
    Sleep(5000);
    playGoogleEarth();

    system("pause");
}

程式片段(19):playjobs.c
內容概要:goto調戲apple

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

void openApple()
{
    ShellExecuteA(0, "open", "\"C:\\Program Files (x86)\\iTunes\\iTunes.exe\"", 0, 0, 1);//啟動iTunes
}

void moveApple()
{
    //建立一個視窗編號變數,尋找iTunes的窗體
    HWND win = FindWindowA("iTunes", "iTunes");//類名,標題
    if (NULL == win)
    {
        printf("apple iTunes正在玩兒失蹤! \n");
    }

    int i = 0;
A: if (i < 1600)//等價於迴圈結構趨於終止的條件
    {
        SetWindowPos(win, NULL, i, i * 768 / 1366, 700, 400, 0);//設定窗體座標以及尺寸
        Sleep(10);//便於我們觀察,不要太快
        i++;
        goto A;//跳轉到A
    }

   SetWindowPos(win, NULL, 0, 0, 700, 400, 0);//恢復原始位置
B:Sleep(100);//休眠100毫秒
   ShowWindow(win, SW_HIDE);//隱藏
   Sleep(100);
   ShowWindow(win, SW_SHOW);//顯示
   goto B;
}

void closeApple()
{
    system("taskkill /f /im iTunes.exe");
}

int main01(void)
{
    closeApple();
    Sleep(2000);

    openApple();
    Sleep(5000);

    moveApple();

    system("pause");
}

相關文章