如何制作android命令打印

时间:2016-06-22 07:58:41

标签: php android vb.net web-services

我有一个关于销售点的项目。我希望我的机器人为每次发生的销售打印发票。

我正在使用Android Studio for Android应用程序。我正在使用SQL服务器,桌面上的应用程序使用vb.net语言(visual studio 2012)。

this

那是我的结构。 如何使用计算机上连接的打印机制作Android打印发票?我在桌面应用程序上进行发票设计。谢谢!

1 个答案:

答案 0 :(得分:0)

当您使用网络服务似乎很自然地有一个打印发票的功能,只需告诉服务发票ID,例如/ service / print / invoice / 7 我建议你返回一个打印作业ID,这样你就可以从你的android(/ service / print / job_id / status)查询它的状态,甚至取消它(/ service / print / job_id / cancel)

在数据库中创建待处理的打印作业

我想你想知道的棘手的事情是如何与你的应用程序沟通你的web服务,因为你正在使用Windows我会建议你将订单作为Windows消息发送给你的应用程序。只需使用FindWindowEx(https://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396)找到您的应用程序窗口,如果该应用程序未运行,请启动它并等待您找到该窗口。 一旦您让窗口处理程序向其发送用户消息,用户消息就是其id超过WM_USER(https://msdn.microsoft.com/en-us/library/windows/desktop/ms644931(v=vs.85).aspx)的消息,例如使用WM_USER +1来检查挂起的打印作业。

用于发送消息使用PostMessage:

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> 


Private Shared Function PostMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Boolean
End Function

hWnd是您使用FindWindowEx检索的应用程序窗口的句柄(检查为非null) Msg y messageId,在这个例子中应该是WM_USER + 1 wParam和lParam是您可以作为参数发送的整数检查https://msdn.microsoft.com/en-us/library/windows/desktop/ms644944%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396以获取有关PostMessage的更多信息

在您的应用中只需覆盖WndProc,当您收到消息时,请检查其是否为打印发票消息(WM_USER +1 - &gt;&amp; H401)并从数据库执行待处理的打印作业。

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Select Case m.Msg
    Case &H401
        ExecutePendingPrintingJobsFromDB()
    Case Else
        MyBase.WndProc(m)
End Select
End Sub

您还可以为其他内容定义其他用户消息。

希望有所帮助。