初识API函数 – PoorLitt1eThin9

初识API函数 – PoorLitt1eThin9

    我一回是任一只写数字计算的OER。,但我极不乐意地这么做。,总归我写信法给我的第任一运用API函数的C++挨次,形成平台是VS2012。:

有任一黑客培养示例写在顾西从前。,上弦有引见API函数,他的书上用的是hDesk=OpenDesktop(lpszDesktop,0,FALSE,DESKTOP_ENUMERATE);在这从前我连健康状况如何下令API函数都不变卖,尝试包罗<等等乱七八糟的东西,后果都不灵.后头百度了一下,才看见怪人是要加#include<

    完全地健康状况如何才干可以下令API函数后头地,尝试运用本书中引见的OpenDead桌面功用。,鉴于我什么都不变卖。,因而我写了这么地挨次。

  制造在附近的lpszDesktop发生了一种我确信没完没了的有毛病.总归再次百度API函数勤勉要求,我找到了第任一挨次。

它或者最初的就被汇编的。,汇编器立刻的有毛病。

我不变卖LPCWSTR是。什么,只是看一眼在线上的FiffWindows函数的引见。函数的规定:HWND WINAPI FindWindow(LPCSTR lpClassName ,LPCSTR lpWindowName);这有效地是LPCSTR。,因而我尝试了任一酷似的函数。,看见FunWistWOA函数为LPCWSTR。,因而FindWindowA总归被汇编了。,该函数是使靠近称为秘诀备忘录的窗口。

我老是想找出任一可以正当的运转的范本。,那时的找出成绩地方。,这次两个都不无规律.在附近的这么地挨次我首要有这专若干面不太完全地:1.句柄是个啥玩意;和LPCWSTR又是什么东西;函数剧照啥安宁下令办法.

率先,弄清楚这么地句柄是什么。,自然,这宁静百度。

句柄,它是完全Windows挨次设计的根底。.句柄是任一不料的必然要的值。,即,任一值为四音节长。,在SIMI中支援勤勉挨次击中要害差别情人和差别要求,比如,任一窗口,扣住,图标,骨碌条,出口设备,管理或记录等。.勤勉挨次可以经过T要求中肯的情人的传达。,只是勒缰绳使停步故障单一的。伸出,挨次不克不及运用句柄读取记录击中要害传达.倘若在I/O记录中未运用句柄,碎屑。.句柄是用来制表不料被体系或运用的必然要的的窗口。,Windows运用浓厚的句柄来制表差不多情人。.

竟然句柄,我确信这点:它与剁碎的食物有些批准。,属于情人零碎,分派任一不料值来制表C的得其次名。

LPCWSTR是Unicode编码字母串的32位伸出。,要点的字母串是WChar。,故障炭。.

怪人的LPCWSTR是unicode字母串伸出,是什么Unicode?恕我的愚昧的。,我甚至unicode难道你什么都不变卖吗?)读定冠词。后头地才粗鲁的受胎个确信.相对地特殊之躺于规定unicode字母串时要在左边的加任一L,就像这么:

以及,我在VS2005后头地才变卖,默许条款下,编码办法为Unicode。,当运用比例函数时,默许下令Unicode典型(函数)。,代表ANSI典型(函数名加A) – 备忘录是任一编码为ANSI的字母串。,相应地,当下令默许Unicode典型时出错。,而运用FindWindowA后头地采取ansi办法才汇编经过.那时的我又把方才的下令办法顶替wnd=FindWindow(NULL,L无题 – 首要的,汇编出口:WCHARYT:总而言之,T,任一是WCOUT。,也有像WPRNTF这么的函数,喜剧的是不管哪种办法都没汇编过.后看法任一视频博客里说要在main函数里累积而成_tsetlocale(LC_ALL, LCHS;相应地可以运用WCUT。,Wprintf或者做不到。先疏忽它。,持续往前看。

其次个API函数:SendMessage函数.SendMessage函数能向委派句柄所对应的情人发送传达,示例挨次:

该挨次的功用是将G输出到点T的汇编者窗口中。

POINT执意表现同等的的datum的复数类型.GetCursorPos(&curpos)表现取眼前的鼠标的同等的.WindowFromPoint(curpos)表现实现预期的后果curpos处的情人的句柄.

WMI- CHAR表现出口刻。

从事,我以为写任一挨次来发送规范输出datum的复数给本人。

  这意义经过StEnMead函数将G发送到挨次窗口。,倘若成读取,它将跳出圈。,最初的,我发了其次条短信。\n,制造没跃读数。,那时的解释\0,或者不灵,也变为\r,在这场合总归成了。,原始输出键由A输出。\r啊,我一向以为是这么。\n呢…

那时的我查看了任一更风趣的事实:模仿老鼠的举措。

灵,WMYRButOnDon意义按下鼠标右键。,WMYRButOUP意义鼠标右键被增长。没大的公关,不外看起开必然要等我再单击一下鼠标左键才干让挨次持续管理.这么觉得用起来很不舒适,并且也没什么勤勉价钱为.后头有查看特意有任一函数mouse_event能模仿鼠标的点击.在附近的这么地函数的详细传达我看不太懂,就只用了任一最简略的勤勉:鼠标左击.再统一方才的SendMessage函数,生产了丝网印刷软件。,尽管不愿意功用很弱。,但当我满足的时分,我依然理解非常赞许地鼓动。我把我的信号写得很弱

// 刷屏软件 : 规定控制台勤勉挨次的进入点。
//
#include
#include
#include
#include<string.h>
#include""
#include
#include
#include
#include
#include
#include
#include
usingnamespace std;

void Home_Page()
{
    printf("1。运用说明。\n");
    printf("2。开端运转。\n");
    printf("三。停止历程");
}

void Left_Click()
{
    mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
    mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
}

void Software_Description()
{
    printf("这么地软件运用起来非常赞许地简略。,提供按立刻的浸地采取军事行动。");
    printf("或许有些用户以为软件太大脑受损了。,恕,我合法的吃或喝了这么地面。,这么地历程独一无二地是.n充分发挥潜在的能力。");
    printf("特殊留意:鉴于作者级成绩,请不要出售您的鼠标从前,所若干传达发送给你。,不然,它可能性发生不成预知的后果。");
    printf("也鉴于作者的等级成绩,眼前只支援英文教科书(Ansi刻集)的发送.\n");
    printf("倘若发送灵中有任一超过单词,提议运用下划线//衔接。");
    printf("联络作者:\n");
    system("pause");
}

void Main_Program()
{
    printf("请输出您要发送的灵(党):\n");
    string TexttobeSend;
    cin>>TexttobeSend;
    printf("请输出您想要每回发送的频率(以手写本为单位):\n");
    int DelayTime;
    cin>>DelayTime;
    printf("您想要发送多少次传达:\n");
    int SendTime;
    cin>>SendTime;
    printf("请将鼠标放在汇编者框中,在5秒内发送传达。");
    HWND InputBox;
    POINT curpos;
    Sleep(5000);
    GetCursorPos(&curpos);
    InputBox=WindowFromPoint(curpos);
    cerr<<"The Input Box has been engaged"<<endl;
    printf("请在5秒内把鼠标放在发送扣住上。再次,鉴于AUT,不要在管理前使不安鼠标.\n。");
    Sleep(5000);
    for (int i=1;i<=SendTime;i++)
    {
        for (int j=0;j<();j++)
            SendMessage(InputBox,WM_CHAR,WPARAM(TexttobeSend[j]),0);
        Left_Click();
        卧处(缓发时间)
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    int Command_Code;
    while (true)
    {
        Home_Page();
        cin>>Command_Code;
        switch(Command_Code)
        {
            case1:
                Software_Description();
                break;
            case2:
                Main_Program();
                break;
            case3:
                return0;
        }
        system("cls");
    }
    return0;
}

View Code

只是当你写信号时,你会看见任一成绩。,差别的头记录组编可能性产生影响汇编的挨次。,以及,汇编后的可管理记录最好的在我的数纸机上管理。,我用同窗们的电脑勘探找到了任一短少M的静态连结库。,我不完全地为什么。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Message *
Name*
Email *