找回密码
 加入
搜索
查看: 3779|回复: 13

[系统综合] MT_AutoIt编译过不去

  [复制链接]
发表于 2017-3-21 12:50:49 | 显示全部楼层 |阅读模式
MT_AutoIt编译过不去
/*=====================
        MT_AutoIt.dll

        By FredAI 12/2012
        Open source Multi-thread dll for AutoIt
*/

#include <Windows.h>

//Declare our struct for the _ThreadProc3 Threadproc function
typedef struct ThreadProc3Data {HWND hwnd;int top;} *PThreadProc3Data;

//Declare our 4 thread proc functions
DWORD WINAPI _ThreadProc1(LPVOID lpParameter);
DWORD WINAPI _ThreadProc2(LPVOID lpParameter);
DWORD WINAPI _ThreadProc3(LPVOID lpParameter);
DWORD WINAPI _ThreadProc4(LPVOID lpParameter);

//Declare the Thread creation function
HANDLE WINAPI _AutoItThreadCreate(
        int index,
        LPVOID lpParameter,
        SIZE_T dwStackSize,
        DWORD dwCreationFlags,
        LPDWORD lpThreadId
        );

BOOLEAN APIENTRY DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
{
        switch ( fdwReason )
   {
    case DLL_PROCESS_ATTACH:

      //  For optimization.

     DisableThreadLibraryCalls( hinstDLL );

      break;

    case DLL_PROCESS_DETACH:

      break;
   }
        return TRUE;
} // End of DllMain

DWORD WINAPI _ThreadProc1(LPVOID param)
{
        PWSTR wstr = (PWSTR)param;
        MessageBox(0,wstr,L"Thread message",MB_OK);
        return 0;
} // End of _ThreadProc1

DWORD WINAPI _ThreadProc2(LPVOID param)
{
        PWSTR wstr = (PWSTR)param;
        MessageBox(0,wstr,L"Thread message",MB_OK);
        return 0;
} // End of _ThreadProc1

DWORD WINAPI _ThreadProc3(LPVOID param)
{
        PThreadProc3Data thpd = (PThreadProc3Data) param;
        HWND desktopHwnd = GetDesktopWindow();
        HDC desktopDC = GetDC(desktopHwnd);
        int desktopwidth = GetDeviceCaps(desktopDC,HORZRES);
        HDC hdcpic = GetDC(thpd->hwnd);
        for (int i=0;i<desktopwidth;i++)
        {
                BitBlt(hdcpic, 0, 0, 240,180, desktopDC, i, thpd->top, SRCCOPY);
                //picgr.DrawImage(&desktopBmp,i,thpd->top,240,180);
                SleepEx(20,true);
                if (i == desktopwidth-240-1) i = 0;
        }
        return 0;
} // End of _ThreadProc1

DWORD WINAPI _ThreadProc4(LPVOID param)
{
        PWSTR wstr = (PWSTR)param;
        MessageBox(0,wstr,L"Thread message",MB_OK);
        return 0;
} // End of _ThreadProc1

HANDLE WINAPI _AutoItThreadCreate(int index, LPVOID lpParameter,
        SIZE_T dwStackSize,DWORD dwCreationFlags,LPDWORD lpThreadId)
{
        switch (index)
        {
        case 1:
                return CreateThread(NULL,dwStackSize,&_ThreadProc1,lpParameter,dwCreationFlags,lpThreadId);
        case 2:
                return CreateThread(NULL,dwStackSize,&_ThreadProc2,lpParameter,dwCreationFlags,lpThreadId);
        case 3:
                return CreateThread(NULL,dwStackSize,&_ThreadProc3,lpParameter,dwCreationFlags,lpThreadId);
        case 4:
                return CreateThread(NULL,dwStackSize,&_ThreadProc4,lpParameter,dwCreationFlags,lpThreadId);
        default:
                return 0;
        }
} // End of _AutoItThreadCreate
!!!!!
 楼主| 发表于 2017-3-21 12:52:29 | 显示全部楼层
好像是wstr类型错误
发表于 2017-3-21 14:28:33 | 显示全部楼层
看样子不是AU3语言的吧
 楼主| 发表于 2017-3-21 21:04:29 | 显示全部楼层
高手的多线程,挺好玩的,可惜dll编译不过去
发表于 2017-3-21 23:19:35 | 显示全部楼层
修改成 Release 再编译。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2017-3-22 09:04:31 | 显示全部楼层
谢谢
发表于 2017-3-22 10:11:38 | 显示全部楼层
回复 5# nmgwddj


    这个应该创建什么项目?控制台?MFC?WIN32?
发表于 2017-3-22 10:17:32 | 显示全部楼层
回复 7# haijie1223


    我下载的这个人的整个解决方案编译的:https://www.autoitscript.com/for ... ulti-thread-autoit/
发表于 2017-3-22 10:20:58 | 显示全部楼层
这是学习C++ ?
发表于 2017-3-22 10:23:21 | 显示全部楼层
回复 8# nmgwddj


    ok 谢谢
发表于 2017-3-22 10:30:13 | 显示全部楼层
回复 8# nmgwddj


    我用2015编译,体积是2010的两倍多。。。
发表于 2017-3-22 17:58:44 | 显示全部楼层
又是伪多线程?
还是测试多线程?
发表于 2017-3-23 08:40:54 | 显示全部楼层
还是c#简单些
发表于 2017-3-23 21:50:29 | 显示全部楼层
感觉是蛋疼的多线程,调用的是 C++,如果用C++在调用  au3COM控件  再操作源码还可以用下,但是怎么绝得还是蛋疼的事情,搞的好像是 个自己拼装的按键精灵,
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 10:55 , Processed in 0.090501 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表