Imports System.Runtime.InteropServices

Public Class Monitor

    <DllImport("user32.dll", CharSet:=CharSet.Unicode, entrypoint:="SendMessageW")> _
Private Shared Function SendMessage(ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As IntPtr, ByVal lParam As Integer) As Integer
End Function Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Int32 '发送方的代码
Public Shared Sub SendMsg(ByVal message As String)
Dim hWnd As Integer
hWnd = FindWindow(vbNullString, "短信发送服务器")
If hWnd Then ' 有这个窗口
Dim ptr As IntPtr = Marshal.StringToHGlobalUni(message)
SendMessage(hWnd, &H1397, ptr, 0) ' 给类名为SmsServerMonitor的窗口发消息,消息标示为&H1397
Marshal.FreeHGlobal(ptr)
Else
Log.Write("未能找到窗口")
End If
End Sub End Class
Dim flag As Char = Chr(2) ' 正文开始

Dim msg As String = "100,1,15870727024," & Now.ToString & ",1," & flag & "success"

SendMsg(msg) ' ID为1的数据发送成功
' 接收SmsService发过来的消息消息标示为&H1397
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = &H1397 Then
Dim msg As String = System.Runtime.InteropServices.Marshal.PtrToStringUni(m.WParam) ' 消息格式:
'id,发送状态,手机号码,时间,优先级,内容 Dim flag As Char = Chr(2) ' 正文开始 Dim body() As String = msg.Split(flag) Dim header() As String = body(0).Split(",")
Dim Id As String = header(0)
Dim Status As String = header(1)
Dim Phone As String = header(2)
Dim SendTime As String = header(3)
Dim Priority As String = header(4)
Dim Content As String = body(1) Dim idxRow As Integer = dgvSmsLog.Rows.Add()
dgvSmsLog.Rows(idxRow).Cells(0).Value = Id
dgvSmsLog.Rows(idxRow).Cells(1).Value = Status
dgvSmsLog.Rows(idxRow).Cells(2).Value = Phone
dgvSmsLog.Rows(idxRow).Cells(3).Value = SendTime
dgvSmsLog.Rows(idxRow).Cells(4).Value = Priority
dgvSmsLog.Rows(idxRow).Cells(5).Value = Content Else
MyBase.WndProc(m)
End If
End Sub

使用SendMessage进行进程间通信的更多相关文章

  1. MFC sendmessage实现进程间通信

    用sendmessage实现进程间通信. 1.WM_COPYDATA实现进程间通信 实现方式是发送WM_COPYDATA消息. 发送程序: LRESULT copyDataResult; //copy ...

  2. C#使用SendMessage实现进程间通信的方法

    本文实例讲述了C#使用SendMessage实现进程间通信的方法.分享给大家供大家参考.具体分析如下: 为了深入理解消息机制,先来做一个测试项目 在新建项目的Form1的代码中,加入方法: ? 1 2 ...

  3. C#进程间通信--API传递参数(SendMessage)

    原文 C#进程间通信--API传递参数(SendMessage)  我们不仅可以传递系统已经定义好的消息,还可以传递自定义的消息(只需要发送消息端和接收消息端对自定义的消息值统一即可).下面的发送和接 ...

  4. 进程间通信,把字符串指针作为参数通过SendMessage传递给另一个进程,不起作用

    参数发送进程: CString csCmd=AfxGetApp()->m_lpCmdLine; if (!csCmd.IsEmpty()) { pWndPrev->SendMessage( ...

  5. VC进程间通信之消息传递PostMessge()或SendMessage()

    1.  进程内消息: (1). 仅仅传消息码 (2). 传送消息串 发送端: void CTestDlg::OnBnClickedButtonSend() { CString* msg = new C ...

  6. WM_COPYDATA实现的不同进程间通信

    进程间通信,通过SendMessage向另一进程发送WM_COPYDATA消息,实现不同进程间的消息通信. 需求:已写好一个工具软件,想在不更改当前的软件开发的前提下,实现为后面新开发的软件提供数据推 ...

  7. WM_COPYDATA进程间通信方案

    连续在两个公司使用WM_COPYDATA实现进程间通信了,整理一下 具体步骤: 一.   进程A通过ShellExecute启动进程B, 将用于通信的窗口句柄hWndA(已强转为int值)通过命令行参 ...

  8. CE 进程间通信

    WINCE下进程间通信常用的方式有:剪贴板(Clipboard),网络套接字(Socket),WM_COPYDATA消息,共享内存,管道(消息队列),注册表等 剪贴板 //////////////// ...

  9. [转]Windows进程间通信的各种方法

    http://www.cnblogs.com/songQQ/archive/2009/06/03/1495764.html 道相似,不过它传输数据是通过不可靠的数据报(如TCP/IP协议中的UDP包) ...

随机推荐

  1. systemd开机启动

    SUMMARY = "rvc_os temporary version" HOMEPAGE = "http://www.desay-svautomotive.com&qu ...

  2. MySQL--修改普通表为自增表

    =========================================================== 修改普通表为自增表 将普通表修改为自增表,可分为两种类型: 1.将现有列修改为自 ...

  3. solr学习一(一大堆的学习资料)

    这篇博客含有海量资料,学习solr必备字典 大概看完solr就基本上手了. solr原味资料:http://wiki.apache.org/solr/FrontPage (     http://wi ...

  4. PythonWeb开发教程(一),开发之前需要准备什么

    什么是web开发呢,其实就是开发一个网站了.那开发网站需要用到哪些知识呢 1.python基础,因为用python开发的,所以python指定要会,最起码你也得会条件判断,循环,函数,类这些知识: 2 ...

  5. 7 无线wifi传输视频开发

    转载,侵删 7 无线wifi传输视频开发 MT7601的驱动源码提供了两种:AP模式和STA模式源码.此时我使用USB作为AP热点,电脑作为STA模式,并使用ORTP实现无线传输视频 7.1.AP模式 ...

  6. 【转】每天一个linux命令(40):wc命令

    原文网址:http://www.cnblogs.com/peida/archive/2012/12/18/2822758.html Linux系统中的wc(Word Count)命令的功能为统计指定文 ...

  7. Dynamics CRM 2011 报表无法显示的问题总结

    一.一般打开报表会出现:该报表无法显示.(reProcessingAborted)和由于运行Microsoft SQL Server Reporting Services 的服务器上没有安装 Micr ...

  8. hadoop最新版本介绍之dkhadoop版本选择

    Hadoop对于从事互联网工作的朋友来说已经非常熟悉了,相信在我们身边有很多人正在转行从事hadoop开发的工作,理所当然也会有很多hadoop入门新手.Hadoop开发太过底层,技术难度远比我们想象 ...

  9. Python——collections模块、time模块、random模块、os模块、sys模块

    1. collections模块 (1)namedtuple # (1)点的坐标 from collections import namedtuple Point = namedtuple('poin ...

  10. 【appium】根据name定位元素

    目前没有尝试成功,等成功后补充 个人建议可以尝试先用view显示的文本作为name看是否能拿到该控件,按照我个人的经验一般都是会成功的,所以我很怀疑安卓上面控件的name是否就等于text.