zoukankan      html  css  js  c++  java
  • 基于Andorid的接口开发

    接口程序开发原理:

    接口程序的开发原理是基于文本+消息机制的。

    文本:说要用到文本文件的读和写

    消息:说要用到 Windows 窗口消息的发与收

    Windows 系统允许不同的窗口或进程间使用消息交换数据,消息发送时可以带四个参数,第一个参数叫接收窗口句柄,也就是说是 Windows 给接受者分配的一个编号;第二个参数是类型标志,是用来给各种消息做分类的,比如说按键类为 10,窗口放大缩小及关闭为 16,在我们系统中约定 WX46与接口通信的消息固定为十进制的 1280(十六进制 0x500) ;第三和第四个参数都是你可以利用来传递信息的,不过在我们系统中第三个固定为 0,我们只用第四个参数来区分消息,我们管它也叫消息类型。

    Delphi 中发送消息的函数:PostMessage(ToHandle,1280,0,Msg.LParam)

    VB 中发送消息的函数:PostMessage(ToHandle, 1280, 0, ByVal lParam&)    

    PB 中发送消息的函数:send(ToHandle,1280,0,1)

    在 Delphi 中关闭 WX46:PostMessage(ToHandle,16,0,0)

    接口程序接收消息类似中断或事件的概念, 也就是说消息事件发生了, 就会自动执行消息的处理过程,这一点不同的语言区别比较大。

    Delphi 中是声明一个消息处理过程: Procedure Inter(var Msg :TMessage); message WMA_InterPro; 其中的 WMA_InterPro 为常数=1280

    PB 中是窗口的 OTHER 事件里进行消息判断。

    如何得到窗口的句柄:

    从上面的描述就可以看出来,建立消息连接联结首先是要得到的窗口句柄,包括自己的和对方的。 

    Delphi 中自己的窗口句柄:Form1.Handle

    VB 中是:frmMain.hWnd

    接口程序运行后就首先要将自己句柄做为字串参数运行 WX46.exe:

    Delphi6 下是:

    ShellExecute(Application.Handle, Nil,Pchar(ExtractFilePath(Application.ExeName) + 'WX46.exe'), Pchar(IntToStr(Form1.Handle)), Nil, SW_SHOWNORMAL); 而 WX46 运行后的第一个消息就是返回自己的窗口句柄给接口程序,所以接口可以用以下方式得到WX46句柄的:

      IF ToHandle =0 Then Begin

        ToHandle :=Msg.LParam;   

      End Else begin

      …….

      End;

    如果用以下方式获得 WX46 的窗口句柄的话,如果电脑中同时运行有两个相同标题的程序则可能就弄错了。

    pda_Handle = FindWindowA(pda_Class, "无线点菜机管理")

    例子:获取当前窗体句柄:

     tbContent.Text = this.Handle.ToString();

    消息(把当前窗体句柄传给对方接口窗体)并启动对方窗体

     Process.Start("WX_1017.exe", this.Handle.ToString());

    WX_1017.exe:对方窗体的可执行文件

    例子:

  • 相关阅读:
    消息队列 资源不足,无法执行操作
    内存级的缓存实际上引用
    Vs 2013 单步调试 .net framework 中遇到的问题
    Win7总是显示“软件应用无法兼容”的解决方法
    Win10系统文件受损怎么办
    教你win10系统如何一键修复系统
    Win10专业版如何提升游戏流畅度
    win7电脑任务管理器被停用如何解决
    win7系统移动硬盘打不开解决方法
    Java之集合(五)LinkedList
  • 原文地址:https://www.cnblogs.com/a1991322/p/2961652.html
Copyright © 2011-2022 走看看