//
//
//
//
//
//
//
//
//
//
软件Tags:
易语言外部托盘图标操作源码系统结构:初始化,取托盘句柄,取图标数,删除图标,隐藏图标,显示图标,取图标ID,取图标标题,取图标句柄,打开进程,写进程内存,结束操作,读外部指针数据,分配外部指针,销毁外部指针,FindWindowA,FindWindowExA,ImageList_Create,ImageList_Destroy,ImageList_AddIcon,GetClassNameA,SendMessageA,SendMessageA2,lstrcpynA,RtlMoveMemory,RtlMoveMemory2,GetWindowThreadProcessId,OpenProcess,WriteProcessMemory,CloseHandle,ReadProcessMemory,VirtualAllocEx,CreateFileMapping,MapViewOfFile,VirtualFreeEx,UnmapViewOfFile, ======窗口程序集1 || ||------__启动窗口_创建完毕 || ||------_按钮_刷新_被单击 || ||------_按钮_隐藏_被单击 || ||------_按钮_显示_被单击 || ||------_按钮_删除_被单击 || ||------_图形按钮1_被单击 || ||------__启动窗口_将被销毁 || || ======功能程序集 || ||------初始化 || ||------取托盘句柄 || ||------取图标数 || ||------删除图标 || ||------隐藏图标 || ||------显示图标 || ||------取图标ID || ||------取图标标题 || ||------取图标句柄 || ||------打开进程 || ||------写进程内存 || ||------结束操作 || ||------读外部指针数据 || ||------分配外部指针 || ||------销毁外部指针 || || ======调用的Dll || ||---[dll]------FindWindowA || ||---[dll]------FindWindowExA || ||---[dll]------ImageList_Create || ||---[dll]------ImageList_Destroy || ||---[dll]------ImageList_AddIcon || ||---[dll]------GetClassNameA || ||---[dll]------SendMessageA || ||---[dll]------SendMessageA2 || ||---[dll]------lstrcpynA || ||---[dll]------RtlMoveMemory || ||---[dll]------RtlMoveMemory2 || ||---[dll]------GetWindowThreadProcessId || ||---[dll]------OpenProcess || ||---[dll]------WriteProcessMemory || ||---[dll]------CloseHandle || ||---[dll]------ReadProcessMemory || ||---[dll]------VirtualAllocEx || ||---[dll]------CreateFileMapping || ||---[dll]------MapViewOfFile || ||---[dll]------VirtualFreeEx || ||---[dll]------UnmapViewOfFile 调用的DLL命令: .DLL命令FindWindowA,整数型,"user32","FindWindowA",公开,寻找窗口列表中第一个符合指定条件的顶级窗口(在vb里使用:FindWindow最常见的一个用途是获得ThunderRTMain类的隐藏窗口的句柄;该类是所有运行中vb执行程序的一部分。获得句柄后,可用api函数GetWindowText取得这个窗口的名称;该名也是应用程序的标题) 找到窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError .参数窗口类名,文本型,,指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,表示接收任何类 .参数窗口文本,文本型,,指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;或设为零,表示接收任何窗口标题示例Dimhw&,cnt&DimrttitleAs*256hw&=FindWindow("ThunderRT5Main",vbNullString)'ThunderRTMainunderVB4cnt=GetWindowText(hw&,rttitle,255)MsgBoxLeft,0,"RTMaintitle"; .DLL命令FindWindowExA,整数型,"user32","FindWindowExA",公开,在窗口列表中寻找与指定条件相符的第一个子窗口 找到的窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError .参数窗口句柄1,整数型,,在其中查找子的父窗口。如设为零,表示使用桌面窗口(通常说的顶级窗口都被认为是桌面的子窗口,所以也会对它们进行查找) .参数窗口句柄2,整数型,,从这个窗口后开始查找。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口。如设为零,表示从第一个子窗口开始搜索 .参数欲搜索的类名1,文本型,,欲搜索的类名。零表示忽略 .参数欲搜索的类名2,文本型,,欲搜索的类名。零表示忽略; .DLL命令ImageList_Create,整数型,"comctl32.dll","ImageList_Create" .参数cx,整数型,,宽度 .参数cy,整数型,,高度 .参数flags,整数型,,位深ILC_ .参数cInitial,整数型,,初始数量 .参数cGrow,整数型,,是否手动销毁 .DLL命令ImageList_Destroy,整数型,"comctl32.dll","ImageList_Destroy" .参数himl,整数型 .DLL命令ImageList_AddIcon,整数型,"comctl32.dll","ImageList_AddIcon" .参数himl,整数型 .参数hicon,整数型 .DLL命令GetClassNameA,整数型,"user32","GetClassNameA",,为指定的窗口取得类名以字节数表示的类名长度;排除最后的空中止字符。零表示出错。会设置GetLastError .参数窗口句柄,整数型,,欲获得类名的那个窗口的句柄 .参数缓冲区,文本型,,随同类名载入的缓冲区。预先至少必须分配nMaxCount+1个字符 .参数缓冲区长度,整数型,,由lpClassName提供的缓冲区长度; .DLL命令SendMessageA,整数型,"user32","SendMessageA" .参数窗口句柄,整数型,,要接收消息的那个窗口的句柄 .参数信息值,整数型,,消息的标识符 .参数参数一,整数型,,具体取决于消息 .参数参数二,整数型,,具体取决于消息; .DLL命令SendMessageA2,整数型,"user32","SendMessageA" .参数窗口句柄,整数型,,要接收消息的那个窗口的句柄 .参数信息值,整数型,,消息的标识符 .参数参数一,整数型,,具体取决于消息 .参数参数二,TBBUTTON,,具体取决于消息; .DLL命令lstrcpynA,整数型,"kernel32","lstrcpynA" .参数数据1,文本型,传址 .参数数据2,文本型,传址 .参数保留,整数型 .DLL命令RtlMoveMemory,,"kernel32.dll","RtlMoveMemory",,拷贝内存 .参数目标内容,TBBUTTON,传址 .参数源数据,字节集 .参数尺寸,整数型 .DLL命令RtlMoveMemory2,,"kernel32.dll","RtlMoveMemory",,拷贝内存 .参数目标内容,TRAYDATA,传址 .参数源数据,字节集 .参数尺寸,整数型 .DLL命令GetWindowThreadProcessId,整数型,"user32.dll","GetWindowThreadProcessId" .参数hwnd,整数型 .参数lpdwProcessId,整数型,传址 .DLL命令OpenProcess,整数型,"kernel32.dll","OpenProcess" .参数dwDesiredAccess,整数型 .参数bInheritHandle,逻辑型 .参数dwProcessId,整数型 .DLL命令WriteProcessMemory,整数型,"kernel32.dll","WriteProcessMemory" .参数hProcess,整数型 .参数lpBaseAddress,整数型 .参数lpBuffer,整数型 .参数nSize,整数型 .参数lpNumberOfBytesWritten,整数型 .DLL命令CloseHandle,整数型,"kernel32.dll","CloseHandle" .参数hObject,整数型 .DLL命令ReadProcessMemory,整数型,,"ReadProcessMemory" .参数hProcess,整数型 .参数lpBaseAddress,整数型 .参数lpBuffer,字节集,传址 .参数nSize,整数型 .参数lpNumberOfBytesWritten,整数型 .DLL命令VirtualAllocEx,整数型,"kernel32.dll","VirtualAllocEx" .参数hProcess,整数型 .参数lpAddress,整数型 .参数dwSize,整数型 .参数flAllocationType,整数型 .参数flProtect,整数型 .DLL命令CreateFileMapping,整数型,"kernel32.dll","CreateFileMappingA",,创建一个新的文件映射对象 .参数hFile,整数型 .参数lpFileMappigAttributes,整数型 .参数flProtect,整数型 .参数dwMaximumSizeHigh,整数型 .参数dwMaximumSizeLow,整数型 .参数lpName,整数型 .DLL命令MapViewOfFile,整数型,"kernel32.dll","MapViewOfFile",,将一个文件映射对象映射到当前应用程序的地址空间 .参数hFileMappingObject,整数型 .参数dwDesiredAccess,整数型 .参数dwFileOffsetHigh,整数型 .参数dwFileOffsetLow,整数型 .参数dwNumberOfBytesToMap,整数型 .DLL命令VirtualFreeEx,整数型,"kernel32.dll","VirtualFreeEx" .参数hProcess,整数型 .参数lpAddress,整数型 .参数dwSize,整数型 .参数flAllocationType,整数型 .DLL命令UnmapViewOfFile,整数型,"kernel32.dll","UnmapViewOfFile",,在当前应用程序的内存地址空间解除对一个文件映射对象的映射 .参数lpBaseAddress,整数型
