`
deepfuture
  • 浏览: 4397556 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80021
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:69978
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103284
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:285605
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15001
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67489
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32095
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45963
社区版块
存档分类
最新评论

用WIN汇编开发桌面报时工具

阅读更多

用WIN汇编开发桌面报时工具

用WIN32汇编语言开发出来的WINDOWS程序具有执行效率高、占用空间小等特点。

一、  软件简介及相应开发工具

桌面报时工具主要完成以下两个功能:

1、     F12热键语音报时、语音整点报时。

2、  在屏幕中上方直接显示时间,并不被任何窗口挡住。

3、  程序运行后最小化为任务栏图标。

笔者以WIN汇编为开发语言,以MASM32为开发工具,因为它不但可以免费获取和使用,而且自带IDE编程环境,读者可访问其官方网站下载MASM32开发包,官方网站为:http://www.movsd.com/

二、设计思路

1、软件采用标准的自定义对话框架构实现。

2、采用微软的TTS语音引擎实现语音报时。 TTS基于COM,因此开发使用Microsoft SpeechSDK,直接调用SAPI实现语音朗读。

3、使用HOOK技术,截获F12按键进行语音报时。因此,笔者单独编写了一个DLL文件,捕捉F12按键。

由此可见,该报时工具虽小,但五脏俱全,涉及对话框消息循环、HOOK技术、COM接口、DLL文件编写、主要API的调用等技术。

三、实现代码

   1、主程序代码

     .586

     .model flat, stdcall

     option casemap :none  

 

;#########################################################################

;首先声明头文件

     include windows.inc

     include user32.inc

     include kernel32.inc

     include gdi32.inc

     include masm32.inc

     include shell32.inc

     include ole32.inc

     include d:\masm32\com\include\oaidl.inc

     include timersdll.inc

     

     includelib user32.lib

     includelib kernel32.lib

     includelibgdi32.lib

     includelib masm32.lib

     includelib shell32.lib

     includelib ole32.lib

     includelib timersdll.lib

;#########################################################################     

;声明宏(主要是控件ID和菜单ID)

IDC_ALARM equ 101

 IDC_CANCEL equ 102

 IDC_OK equ 103

 IDC_ABOUT equ 104

 IDC_CHECKBS equ 105

 IDC_CHECKSHOWTIMER equ 106

 IDR_MAINFRAME equ 107

 IDR_MAINMENU equ 108

 MENUID_SYSTEMSET equ 109

 MENUID_SPEAKTIMER equ 110

 MENUID_ABOUT equ 111

 MENUID_EXIT equ 112

 DIALOG_MAIN equ 1 

 IDT_TIMER equ 1

 WM_NOTIFYICONN equ WM_USER+0

 WM_CLOCKALARM equWM_USER+100h     

;#########################################################################

;Microsoft Speech SDK没有相应的适应于汇编语言的INC头文件,笔者在代码

;文件中直接声明TTS相关虚函数。

;定义ISpVoice的虚函数接口表(根据SDK中的sapi.h中ISpVoiceVtbl的C++定义改

;成MASM32定义)

ISpVoice STRUCT DWORD

QueryInterface comethod3 ?

AddRef comethod1 ?

Release  comethod1 ?

SetNotifySink comethod2 ?

SetNotifyWindowMessage  comethod5 ?

SetNotifyCallbackFunction  comethod4 ?

SetNotifyCallbackInterface  comethod4 ?

SetNotifyWin32Event comethod1 ?

WaitForNotifyEvent comethod1 ?

GetNotifyEventHandle  comethod1 ?

SetInterest  comethod3 ?

  GetEvents  comethod4 ?

  GetInfo comethod2 ?

  SetOutput  comethod3 ?

  GetOutputObjectToken comethod2 ?

  GetOutputStream comethod2 ?

  Pause comethod1 ?

  Resume comethod1 ?

  SetVoice comethod2 ?

  GetVoice comethod2 ?

  Speak  comethod4 ?

  SpeakStream comethod4 ?

  GetStatus  comethod3 ?

  Skip comethod4 ?

  SetPriority comethod2 ?

  GetPriority comethod2 ?

  SetAlertBoundary comethod2 ?

  GetAlertBoundary comethod2 ?

  SetRate comethod2 ?

  GetRate comethod2 ?

  SetVolume comethod2 ?

  GetVolume comethod2 ?

  WaitUntilDone comethod2 ?

  SetSyncSpeakTimeout comethod2 ?

  GetSyncSpeakTimeout comethod2 ?

  SpeakCompleteEvent comethod1 ?

  IsUISupported comethod5 ?

  DisplayUI comethod6 ?

ISpVoice ENDS

;#########################################################################

;可变数据段

   .data?

      szbufferprev db 20 dup(?)

      szbuffernow db 20 dup(?)

      hWinMain DWORD ?

      idTIMER DWORD ?

      CommandLine DWORD ?

      hInstance DWORD ?

      hicon HICON ?

      hmenu DWORD ?

      hlib DWORD ?

      timershowx DWORD ?

      timershowy DWORD ?

      showrect RECT <>

      

   ;常量数据段

   .data

      szClassName db "Timers_Class",0

            szdateformat  db"yyyy年MM月dd日",0

            sztimeformat db "hh点mm分ss秒",0

            stnidstatus NOTIFYICONDATA <>

             ;======

      isintpointalarmDWORD 1;0-表示整点不报时,1-整点报时

      isshowtimer DWORD 1;0-表示不显示,1-显示

      isintpoint  DWORD 0;0-表示不是整点,1-是整点

      ;======

             sztooltip db "桌面报时工具",0

             szabout db "桌面报时工具由WIN32汇编开发",0

      szmscap db "错误",0

      szmstext1 db "无法在桌面上显示!",0

      szmstext2 db "无法得到全屏DC!",0

      ;======

    

      szprevdate db 50 dup(?)

      szprevtime db 50 dup(?)

      sznowdate db 50 dup(?)

      sznowtime db 50 dup(?)

      

      szbegin db "桌面报时工具为您报时"

      sztext db 100 dup(?)

 

;#########################################################################

;代码段

    .code

_showtext  proto :DWORD

_ProcDlgMain proto :DWORD,:DWORD,:DWORD,:DWORD

_geterrno proto :DWORD,:DWORD

_speaktext proto :DWORD

_WinMain proto :DWORD,:DWORD,:DWORD,:DWORD

_statusicon  proto :DWORD

_configload proto :DWORD

start:

;程序的入口

       invoke GetModuleHandle, NULL

       mov hInstance, eax

 

       invoke GetCommandLine

       mov CommandLine, eax

 

       invoke _WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT

       invoke ExitProcess,eax

 

;#########################################################################

;得到当前时间子函数

_getnow proc

       invoke lstrcpy,addr szprevtime,addr sznowtime

       invoke lstrcpy,addr szprevdate,addr sznowdate

       invoke GetDateFormat,NULL,NULL,NULL,addr szdateformat,addrsznowdate,50

 

 invokeGetTimeFormat,LOCALE_USER_DEFAULT,TIME_FORCE24HOURFORMAT,NULL,addrsztimeformat,addr sznowtime,50

       invoke lstrcpy,addr sztext,addr sznowdate

    invokelstrcat,addr sztext,addr sznowtime

    

    invokeszLeft,addr szprevtime,addr szbufferprev,2

    invokeszLeft,addr sznowtime,addr szbuffernow,2

    invokelstrcmp,addr szbufferprev,addr szbuffernow

    testeax,eax

    je @f

    mov isintpoint,1

    @@:

    ret

_getnow endp

;#########################################################################

;显示时间子函数

;参数说明:lpsztex:要显示的文本的起始地址

_showtext proc  uses  ebxlpsztext:DWORD

    LOCAL@Desktopdc:HDC

    LOCAL@dwtextcolor,@dwbkcolor

    mov@dwtextcolor,00010000h

    mov@dwbkcolor,0000FF00h

    invokeGetWindowDC,NULL

    cmpeax,0

    jne@f

    invokeMessageBox,NULL,offset szmstext2,offset szmscap,MB_ICONERROR

    @@:

    mov@Desktopdc,eax

    invokelstrlen,lpsztext

    movebx,eax

    invokeSetBkColor,@Desktopdc,@dwbkcolor

    invokeSetTextColor,@Desktopdc,@dwtextcolor

    invokeTextOut,@Desktopdc,timershowx,timershowy,lpsztext,ebx

    cmpeax,0

    jne@f

    invokeMessageBox,NULL,offset szmstext1,offset szmscap,MB_ICONERROR

    @@:

    invokeReleaseDC,NULL,HDC

    ret

_showtext endp

;#########################################################################

_showtime proc

       invoke _showtext,offset sztext

     ret

_showtime endp

;#########################################################################



;语音朗读文本子函数

;参数说明: pszspeakansi:要朗读的文本起始地址

_speaktext proc uses edx ebx pszspeakansi:DWORD

       .data

          szspeaktext db 200dup(?),0

    szerrtext db "错误号:"

    szerrtextno db 20 dup(?),0

      ppVoice  DWORD ?

     

   

          CLSID_SpVoice GUID<96749377H,3391H,11D2H,<9EH,0E3H,00H,0C0H,4FH,79H,73H,96H>>

          IID_ISpVoice GUID<6C44DF74H,72B9H,4992H,<0A1H,0ECH,0EFH,99H,6EH,04H,22H,0D4H>>

      

 

  .code 

               

    invoke lstrlen,pszspeakansi

    mov ebx,eax

          invokeMultiByteToWideChar,CP_ACP,MB_PRECOMPOSED,pszspeakansi,-1,addrszspeaktext,ebx

      invoke CoInitialize,NULL

     ;#######################################################################

     ;使用pVoice接口

      invoke CoCreateInstance,addr CLSID_SpVoice,NULL,CLSCTX_ALL,addrIID_ISpVoice,addr ppVoice

     .IF_FAILED

         invoke _geterrno,eax,addr szerrtextno

         invoke MessageBox,NULL,addr szerrtext,addr szmscap,MB_ICONERROR

         jmp@f

     .endif

             mov eax,ppVoice

                      mov edx,[eax]

           invoke (ISpVoice PTR[edx]).SetVoice,ppVoice,NULL

           .IF_SUCCEEDED

                              mov eax,ppVoice

                              mov edx,[eax]

               invoke(ISpVoice PTR[edx]).SetRate,ppVoice,3

               .IF_FAILED

                 invoke _geterrno,eax,addr szerrtextno

                 invoke MessageBox,NULL,addr szerrtext,addr szmscap,MB_ICONERROR

              .endif

                    mov eax,ppVoice

                              mov edx,[eax]

               invoke(ISpVoice PTR[edx]).Speak,ppVoice,addr szspeaktext,0,NULL

               .IF_FAILED

                 invoke _geterrno,eax,addr szerrtextno

                 invoke MessageBox,NULL,addr szerrtext,addr szmscap,MB_ICONERROR

              .endif

           .endif

    

    mov eax,ppVoice

      mov edx,[eax]

      invoke (ISpVoice PTR[edx]).Release,ppVoice

    @@:

    call CoUninitialize

       ret

_speaktext endp

;#########################################################################

;对话框消息处理函数

_ProcMain proc uses ebx hWnd,uMsg,wParam,lParam

  LOCAL @stpos:POINT

  .if uMsg==WM_TIMER

      mov eax,wParam

     .if eax==IDT_TIMER

                call _getnow

                .if isshowtimer==1

                   call_showtime

               .endif

                .if isintpointalarm==1 &&isintpoint==1

                     invoke _speaktext,addr szbegin

                     mov isintpoint,0

         .endif

      .endif      

.elseif uMsg==WM_NOTIFYICONN

     moveax,wParam

     .if eax== IDR_MAINFRAME

                      mov eax,lParam

                      movzx eax,ax

                      .if eax== WM_RBUTTONUP

                         invoke GetCursorPos,addr @stpos

                         invokeTrackPopupMenu,hmenu,TPM_LEFTALIGN,@stpos.x,@stpos.y,NULL,hWnd,NULL

                 .endif

              .endif

.elseif uMsg==WM_CLOCKALARM

     invoke_speaktext,addr szbegin 

  .elseif uMsg==WM_COMMAND

    moveax,wParam

    movzxeax,ax

     .ifeax==MENUID_EXIT

                 invoke InvalidateRect,NULL,NULL,NULL

       invoke    UnInstallHook,hWnd

                invoke KillTimer,hWnd,idTIMER

                invoke _statusicon,NIM_DELETE

                            invoke DestroyWindow,hWnd

              .elseif eax==MENUID_SYSTEMSET

                            invoke _configload,0

                            invoke ShowWindow,hWinMain,SW_SHOWNORMAL

              .elseif eax==MENUID_ABOUT

                  invokeMessageBox,NULL,addr szabout,addr sztooltip,NULL

              .elseif eax==MENUID_SPEAKTIMER

        invoke_speaktext,addr szbegin

    .elseifeax==IDC_CANCEL

          invokeShowWindow,hWinMain,SW_HIDE      

              .elseif eax==IDC_OK

                      call _configsave

                      invokeShowWindow,hWinMain,SW_HIDE      

    .endif

      .elseif uMsg==WM_DESTROY

              invoke PostQuitMessage,NULL

.else

         invoke DefDlgProc,hWnd,uMsg,wParam,lParam

         ret

  .endif

  xor eax,eax

  ret

_ProcMain endp

;#########################################################################   ;取得COM接口错误号函数,可以根据错误号在winerror.h中查到错误类型

_geterrno proc szerrhex:DWORD,pszerrtext:DWORD

   push eax

   invokedw2hex,szerrhex,pszerrtext

   pop eax

   ret

_geterrno endp 

;#########################################################################   ; 状态栏图标操作

_statusicon  proc operation:DWORD

invoke Shell_NotifyIcon,operation,addr stnidstatus

ret

_statusiconendp     

;#########################################################################   ;主窗口消息循环

_WinMain proc hInst:DWORD,hPrevInst:DWORD,CmdLine:DWORD,CmdShow:DWORD

       LOCAL @stwc:WNDCLASSEX

       LOCAL @stmsg:MSG

       LOCAL @CommandLine:DWORD

       mov@stwc.cbSize,        sizeof WNDCLASSEX

       mov@stwc.style,         CS_HREDRAW or CS_VREDRAW

       mov@stwc.lpfnWndProc,   offset _ProcMain

       mov@stwc.cbClsExtra,    NULL

       mov@stwc.cbWndExtra,    DLGWINDOWEXTRA

       push hInst

       pop @stwc.hInstance

       mov @stwc.hbrBackground,  COLOR_BTNFACE+1

       mov @stwc.lpszMenuName,  NULL

       mov @stwc.lpszClassName,  offset szClassName

       invoke LoadIcon,hInst, IDR_MAINFRAME

       mov hicon,eax

       push hicon

       pop @stwc.hIcon

       push hicon

       pop @stwc.hIconSm

       invoke LoadCursor,NULL,IDC_ARROW

       mov @stwc.hCursor,eax

       invoke RegisterClassEx,addr @stwc

       invoke CreateDialogParam,hInst,DIALOG_MAIN,NULL,NULL,NULL

       mov   hWinMain,eax

       invoke LoadMenu,hInst,IDR_MAINMENU

       mov hmenu,eax

       invoke GetSubMenu,hmenu,0

       mov hmenu,eax

       mov stnidstatus.cbSize,sizeof NOTIFYICONDATA

         push hWinMain

         pop stnidstatus.hwnd

         mov stnidstatus.uID,IDR_MAINFRAME

         push hicon

         pop  stnidstatus.hIcon

         mov stnidstatus.uFlags,NIF_ICON or NIF_TIP or NIF_MESSAGE

         mov stnidstatus.uCallbackMessage,WM_NOTIFYICONN

       invoke lstrcpy,addr stnidstatus.szTip,addr sztooltip

       invoke ShowWindow,hWinMain,SW_HIDE

       invoke UpdateWindow,hWinMain

       invoke _configload,1

    .while TRUE

         invoke GetMessage,addr @stmsg,NULL,0,0

         .BREAK .IF eax==0

            invokeIsDialogMessage,hWinMain,addr @stmsg

            .ifeax==FALSE

                    invoke TranslateMessage,addr @stmsg

                           invoke DispatchMessage,addr @stmsg

              .endif

     .endw 

      moveax,@stmsg.wParam

      ret       

_WinMain endp

;#########################################################################   ;加载配置

_configload proc isfirstrun:DWORD

.code

.if isfirstrun==1 ;第一次运行,需要读取文件和初始化

       ;初始化

       invoke GetDateFormat,NULL,NULL,NULL,addr szdateformat,addrsznowdate,50

    invokeGetTimeFormat,LOCALE_USER_DEFAULT,TIME_FORCE24HOURFORMAT,NULL,addrsztimeformat,addr sznowtime,50

     invoke SetTimer,hWinMain,IDT_TIMER,1000,NULL      

  mov idTIMER,eax

       invoke _statusicon,NIM_ADD;创建状态栏图标

        invokeInstallHook,hWinMain,WM_CLOCKALARM;安装热键钩子

        invoke GetSystemMetrics,SM_CXSCREEN

    shreax,1

    movtimershowx, eax

    movtimershowy, 1

.endif

 .if isintpointalarm==0

              invokeCheckDlgButton,hWinMain,IDC_CHECKBS,BST_UNCHECKED

 .else

           invoke CheckDlgButton,hWinMain,IDC_CHECKBS,BST_CHECKED

 .endif

 .if isshowtimer==0

              invokeCheckDlgButton,hWinMain,IDC_CHECKSHOWTIMER,BST_UNCHECKED

 .else

                 invoke CheckDlgButton,hWinMain,IDC_CHECKSHOWTIMER,BST_CHECKED

 .endif

  ret

_configload endp

;#########################################################################   ;保存配置

_configsave proc

 invoke IsDlgButtonChecked,hWinMain,IDC_CHECKBS

 .if eax==BST_CHECKED

        mov isintpointalarm,1

 .else

                   mov isintpointalarm,0

 .endif

 invokeIsDlgButtonChecked,hWinMain,IDC_CHECKSHOWTIMER 

 .if eax==BST_CHECKED

                     mov isshowtimer,1

 .else

                     mov isshowtimer,0

                     invoke InvalidateRect,NULL,NULL,NULL

 .endif

       ret

_configsave endp

;#########################################################################   end start

2、  DLL文件代码

.586

 .model flat, stdcall

 option casemap:none  

 

;#########################################################################

 

 include windows.inc

 include user32.inc

 include kernel32.inc

 

 includelib user32.lib

 includelib kernel32.lib

.data?

  hHook DWORD ?

  hMainWnd DWORD ?

  hWmessage DWORD ?

.data

   hInstance DWORD 0

   sztooltip db "桌面报时工具",0

;#########################################################################  

.code

;#########################################################################

;DLL入口

  DllEntry prochInst:HINSTANCE,reason:DWORD,userreserved:DWORD

            push hInst

     pop hInstance

              mov eax,TRUE

     ret

  DllEntry endp

;#########################################################################

;键盘消息处理函数

KeyProc proc uses ebx dwCode:DWORD,wParam:DWORD,lParam:DWORD

  invokeCallNextHookEx,hHook,dwCode,wParam,lParam

  .if dwCode == HC_ACTION&&wParam==VK_F12

        mov ebx,1

        shl ebx,30

        test lParam,ebx

        jne @f

        invoke SendMessage,hMainWnd,hWmessage,0,0

        @@:

  .endif

  xor eax,eax

  ret

KeyProc endp

;#########################################################################

;安装HOOK函数

InstallHook proc hwnd:DWORD,dwmessage:DWORD

   push hwnd

   pop hMainWnd

   push dwmessage

   pop hWmessage

   invokeSetWindowsHookEx,WH_KEYBOARD,addr KeyProc,hInstance,NULL

   mov hHook,eax

   ret

InstallHook endp

;#########################################################################

;卸载HOOK函数

UnInstallHook proc hwnd:DWORD

  invoke UnhookWindowsHookEx,hHook

  ret

UnInstallHook endp

;#########################################################################  

end DllEntry

3、  DLL导出文件内容(声明DLL的外部函数)

KeyProc  proto :DWORD,:DWORD,:DWORD

InstallHook proto :DWORD,:DWORD

UnInstallHook proto :DWORD

 

0
0
分享到:
评论

相关推荐

    【9493】基于springboot+vue的美食信息推荐系统的设计与实现.zip

    技术选型 【后端】:Java 【框架】:springboot 【前端】:vue 【JDK版本】:JDK1.8 【服务器】:tomcat7+ 【数据库】:mysql 5.7+ 项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧! 在当今快速发展的信息技术领域,技术选型是决定一个项目成功与否的重要因素之一。基于以下的技术栈,我们为您带来了一份完善且经过实践验证的项目资源,让您在学习和提升编程技能的道路上事半功倍。以下是该项目的技术选型和其组件的详细介绍。 在后端技术方面,我们选择了Java作为编程语言。Java以其稳健性、跨平台性和丰富的库支持,在企业级应用中处于领导地位。项目采用了流行的Spring Boot框架,这个框架以简化Java企业级开发而闻名。Spring Boot提供了简洁的配置方式、内置的嵌入式服务器支持以及强大的生态系统,使开发者能够更高效地构建和部署应用。 前端技术方面,我们使用了Vue.js,这是一个用于构建用户界面的渐进式JavaScript框架。Vue以其易上手、灵活和性能出色而受到开发者的青睐,它的组件化开发思想也有助于提高代码的复用性和可维护性。 项目的编译和运行环境选择了JDK 1.8。尽管Java已经推出了更新的版本,但JDK 1.8依旧是一种成熟且稳定的选择,广泛应用于各类项目中,确保了兼容性和稳定性。 在服务器方面,本项目部署在Tomcat 7+之上。Tomcat是Apache软件基金会下的一个开源Servlet容器,也是应用最为广泛的Java Web服务器之一。其稳定性和可靠的性能表现为Java Web应用提供了坚实的支持。 数据库方面,我们采用了MySQL 5.7+。MySQL是一种高效、可靠且使用广泛的关系型数据库管理系统,5.7版本在性能和功能上都有显著的提升。 值得一提的是,该项目包含了前后台的完整源码,并经过严格调试,确保可以顺利运行。通过项目的学习和实践,您将能更好地掌握从后端到前端的完整开发流程,提升自己的编程技能。欢迎参考博主的详细文章或私信获取更多信息,利用这一宝贵资源来推进您的技术成长之路!

    (源码)基于Spring、Struts和Hibernate的OA系统.zip

    # 基于Spring、Struts和Hibernate的OA系统 ## 项目简介 本项目是一个基于Spring、Struts和Hibernate框架的办公自动化(OA)系统。该系统主要用于企业内部的日常办公管理,包括用户登录、组织管理、权限管理等功能。系统前端使用现成的模板和JavaScript、jQuery技术,后端通过Struts、Hibernate和Spring框架实现业务逻辑和数据持久化。 ## 项目的主要特性和功能 ### 登录模块 防止多设备登录系统能够检测到同一账号在不同设备上的登录情况,并在检测到异地登录时通知用户并强制下线。 WebSocket支持使用WebSocket技术实现实时通知功能。 ### 组织管理模块 部门管理支持部门的增删改查操作,包括查看部门信息、职位信息和员工数量。 用户管理支持用户的增删改查操作,包括指定用户所在部门、职位和角色。 角色管理支持角色的增删改查操作,包括查看角色权限和修改角色权限。

    基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)

    基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目),该项目是个人毕设项目,答辩评审分达到98分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高

    open3d python 给点云每个点设置不同的颜色

    open3d python 给点云每个点设置不同的颜色

    【电磁】基于matlab具有Mur吸收边界的区域的二维FDTD【含Matlab源码 9136期】.mp4

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    HengCe-18900-2024-2030中国室内木门市场现状研究分析与发展前景预测报告-样本.docx

    HengCe-18900-2024-2030中国室内木门市场现状研究分析与发展前景预测报告-样本.docx

    (源码)基于ASP.NET Web API的供应链管理系统.zip

    # 基于ASP.NET Web API的供应链管理系统 ## 项目简介 供应链管理系统(SCM)是一个基于ASP.NET Web API框架开发的企业级应用,旨在帮助企业高效管理供应链中的各个环节。系统涵盖了供应商管理、采购管理、库存管理、订单管理等多个模块,通过API接口实现数据的增删改查操作,确保供应链的顺畅运作。 ## 项目的主要特性和功能 1. 供应商管理 供应商信息的增删改查操作。 供应商联系人管理。 供应商评级和分类管理。 2. 采购管理 采购订单的创建、编辑和删除。 采购产品的状态管理。 采购合同的生成和管理。 3. 库存管理 库存产品的入库和出库管理。 库存状态的实时监控。 4. 订单管理 订单的创建、编辑和删除。 订单状态的跟踪和管理。 5. 用户管理 用户登录和权限管理。 用户角色的分配和管理。

    基于SpringBoot的“学生考勤管理系统”的设计与实现(源码+数据库+文档+PPT).zip

    系统主要包括首页,个人中心,学生管理,教师管理,班级信息管理,课程信息管理,签到信息管理,考勤信息管理,请假信息管理,考勤统计管理等功能模块。

    维特协议标准精度示例程序c.zip

    c语言

    DICOM文件+DX放射平片-数字X射线图像DICOM测试文件

    DICOM文件+DX放射平片—数字X射线图像DICOM测试文件,文件为.dcm类型DICOM图像文件文件,仅供需要了解DICOM或相关DICOM开发的技术人员当作测试数据或研究使用,请勿用于非法用途。

    C#ASP.NET仓储管理系统源码数据库 SQL2008源码类型 WebForm

    ASP.NET仓储管理系统源码 一、 程序说明 该程序大部分使用于生产制造厂,其中结合了制造厂的采购,销售,生产等. 开源部分是仓库系统后台管理系 统, 在给客户实施的过程中利用到了很多硬件设备, 设计到Wince系统,Android系统等PDA设备,各种打印 机,条码打印机,感应设备等,而且这些可能在整个项目中占据主导,而后台管理系统只是辅助作用的。 该程序使用的.NET MVC开发,大量使用到了jQuery,以及Bootstrap。 数据库使用了SQL Server.

    【小程序毕业设计】面向文艺影视社群的微信小程序源码(完整前后端+mysql+说明文档).zip

    环境说明: 开发语言:Java/php JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea 小程序框架:uniapp/原生小程序 开发工具:HBuilder X/微信开发者

    Skia-macOS-Release-arm64.zip

    Skia-macOS-Release-arm64.zip aseprite 安装所需依赖安装包

    中国品牌日研究特辑-数字经济时代下中国品牌高质量发展之用户趋势.pdf

    中国品牌日研究特辑-数字经济时代下中国品牌高质量发展之用户趋势.pdf

    生成xcinsphfs0exefsromfscertifateticket转储从任天堂Switch游戏卡和安装的SDe.zip

    c语言

    一个基于qt开发的包含各种基础图像处理技术的桌面应用,图像处理算法基于halcon,有直接调用halcon脚本和执行halcon

    一个基于qt开发的包含各种基础图像处理技术的桌面应用,图像处理算法基于halcon,有直接调用halcon脚本和执行halcon C++代码方式。 导入图片,预处理,滤波,边缘检测,阈值分割,形态学变换,图像增强,图像变换,

    【9312】基于Springboot+vue的精品水果线上销售网站的设计与实现.zip

    技术选型 【后端】:Java 【框架】:springboot 【前端】:vue 【JDK版本】:JDK1.8 【服务器】:tomcat7+ 【数据库】:mysql 5.7+ 项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧! 在当今快速发展的信息技术领域,技术选型是决定一个项目成功与否的重要因素之一。基于以下的技术栈,我们为您带来了一份完善且经过实践验证的项目资源,让您在学习和提升编程技能的道路上事半功倍。以下是该项目的技术选型和其组件的详细介绍。 在后端技术方面,我们选择了Java作为编程语言。Java以其稳健性、跨平台性和丰富的库支持,在企业级应用中处于领导地位。项目采用了流行的Spring Boot框架,这个框架以简化Java企业级开发而闻名。Spring Boot提供了简洁的配置方式、内置的嵌入式服务器支持以及强大的生态系统,使开发者能够更高效地构建和部署应用。 前端技术方面,我们使用了Vue.js,这是一个用于构建用户界面的渐进式JavaScript框架。Vue以其易上手、灵活和性能出色而受到开发者的青睐,它的组件化开发思想也有助于提高代码的复用性和可维护性。 项目的编译和运行环境选择了JDK 1.8。尽管Java已经推出了更新的版本,但JDK 1.8依旧是一种成熟且稳定的选择,广泛应用于各类项目中,确保了兼容性和稳定性。 在服务器方面,本项目部署在Tomcat 7+之上。Tomcat是Apache软件基金会下的一个开源Servlet容器,也是应用最为广泛的Java Web服务器之一。其稳定性和可靠的性能表现为Java Web应用提供了坚实的支持。 数据库方面,我们采用了MySQL 5.7+。MySQL是一种高效、可靠且使用广泛的关系型数据库管理系统,5.7版本在性能和功能上都有显著的提升。 值得一提的是,该项目包含了前后台的完整源码,并经过严格调试,确保可以顺利运行。通过项目的学习和实践,您将能更好地掌握从后端到前端的完整开发流程,提升自己的编程技能。欢迎参考博主的详细文章或私信获取更多信息,利用这一宝贵资源来推进您的技术成长之路!

    C#固定资产管理系统源码(带条码打印)数据库 SQL2008源码类型 WinForm

    固定资产管理系统源码(带条码打印) 功能介绍 1.基本信息管理:包括资产分类,基本资料,资产编号规则,保存列间距和选择资产显示列等功能; 2.固定资产管理:包括资产增加,资产更新,资产删除,资产清理,资产清理查询和资产折旧核算 3.数据维护管理:包系统数据初始化,系统数据备份/恢复等功能; 4.系统维护管理:包括本单位信息和操作员管理等功能; 5.系统辅助工具:包括计算器和记事本等功能; 6.条码打印:对条码进行打印等功能;

    【Unity车辆控制插件】Realistic Car Controller轻松创建逼真的汽车模拟或赛车游戏

    文件名:Realistic Car Controller v3.95.unitypackage Realistic Car Controller 是一款在 Unity 中用于实现高度真实感的车辆控制和物理效果的插件。它提供了一整套车轮物理、动力学、碰撞检测以及其他重要功能,能够帮助开发者轻松创建逼真的汽车模拟或赛车游戏。以下是该插件的一些主要特点和功能: 主要特点: 真实的物理模拟: 提供高度精确的车轮物理,能够模拟真实的轮胎与地面之间的互动。 支持复杂的悬挂系统,可以根据地形变化调整汽车的行驶方式。 引擎、转向、刹车和加速等系统都基于真实物理算法,提供更真实的驾驶体验。 多种驾驶模式: 提供不同的控制方式,适合不同类型的游戏。包括传统的赛车游戏控制、模拟驾驶以及更轻松的街机式驾驶控制。 支持手动和自动变速器,用户可以自由设置。 高级车体控制: 支持不同类型的汽车(如运动型、SUV、卡车等)定制,可以调整每辆车的重量、引擎力量、车轮配置等参数。 车辆能够根据不同的地面情况(如草地、雪地、泥地等)表现出不同的牵引力和滑移效果。 细致的视觉效果: 支持实时反射..

    CrystalDiskInfo9-4-4.exe

    CrystalDiskInfo CrystalDiskInfo9_4_4.exe 监测查看硬盘健康状况 各类硬盘均可 仅适用于Windows

Global site tag (gtag.js) - Google Analytics