Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 禁用Windows Mobile任务栏,但启用摄像头_.net_Vb.net_Windows Mobile_Camera - Fatal编程技术网

.net 禁用Windows Mobile任务栏,但启用摄像头

.net 禁用Windows Mobile任务栏,但启用摄像头,.net,vb.net,windows-mobile,camera,.net,Vb.net,Windows Mobile,Camera,我正在编写一个Windows Mobile应用程序,它禁用隐藏和禁用Windows任务栏,从而阻止用户访问Windows功能。然而,应用程序也需要能够拍照,这就是问题的根源。当任务栏启用时,设备上的其他按钮Home、Capture Photo、Up、Down等也将被禁用。不知何故,我不得不发送一条消息来启用“捕获照片”按钮,但我所有的尝试都被证明是徒劳的 我还使用了VisualStudio2008的远程间谍工具来跟踪消息并获取十六进制值 以下是我目前掌握的代码: 任何帮助都将不胜感激 提前谢谢

我正在编写一个Windows Mobile应用程序,它禁用隐藏和禁用Windows任务栏,从而阻止用户访问Windows功能。然而,应用程序也需要能够拍照,这就是问题的根源。当任务栏启用时,设备上的其他按钮Home、Capture Photo、Up、Down等也将被禁用。不知何故,我不得不发送一条消息来启用“捕获照片”按钮,但我所有的尝试都被证明是徒劳的

我还使用了VisualStudio2008的远程间谍工具来跟踪消息并获取十六进制值

以下是我目前掌握的代码:

任何帮助都将不胜感激

提前谢谢


Ian

当您需要相机正常工作时,您是否考虑过重新启用按钮?然后,在相机功能完成后再次禁用按钮

显影放射学

启用任务栏按钮 显示相机对话框 对话响应?。。用图片做东西。。 再次禁用任务栏按钮
为什么不调用摄影机函数,而不是尝试调用包装器的按钮单击?这显然是特定于某个设备的,所以获取该设备的SDK。我希望我能做到这一点。问题是,应用程序应该尽可能通用,因此使应用程序过于设备特定也不是一个选项。但是谢谢你的建议jp2code,

Imports System.Runtime.InteropServices
Imports Microsoft.WindowsCE.Forms
Imports Microsoft.WindowsMobile.Forms

Public Class BarControl
  <DllImport("coredll.dll", EntryPoint:="GetForegroundWindow", SetLastError:=True)> _
  Private Shared Function GetForegroundWindow() As IntPtr
  End Function

  <DllImport("aygshell.dll", EntryPoint:="SHFullScreen", SetLastError:=True)> _
  Private Shared Function SHFullScreen(ByVal hwndRequester As IntPtr, _
                                       ByVal dwState As Integer) As Boolean
  End Function

  <DllImport("coredll.dll", EntryPoint:="EnableWindow")> _
  Private Shared Function EnableWindow(ByVal hwnd As IntPtr, _
                                       ByVal bEnable As Boolean) As Boolean
  End Function

  <DllImport("coredll.dll", EntryPoint:="FindWindow")> _
  Private Shared Function FindWindow(ByVal lpClassName As String, _
                                     ByVal lpWindowName As String) As IntPtr
  End Function

  <DllImport("coredll.dll", _
             EntryPoint:="GetForegroundWindow", _
             SetLastError:=True)> _
  Private Shared Function SendMessage(ByVal hWnd As IntPtr, _
                                      ByVal Msg As Integer, _
                                      ByVal wParam As Integer, _
                                      ByVal lParam As Integer) As IntPtr
  End Function

  Private Const SHFS_SHOWSTARTICON As Integer = &H10
  Private Const SHFS_HIDESTARTICON As Integer = &H20
  Private Const SHFS_HIDESIPBUTTON As Integer = &H8
  Private Const SHFS_SHOWSIPBUTTON As Integer = &H4
  Private Const SHFS_SHOWTASKBAR As Integer = &H1
  Private Const SHFS_HIDETASKBAR As Integer = &H2

  'Additional variables
  Private Const WM_ENABLE As Integer = &HA
  Private Const CAMERA_INDICATOR As Integer = &H800C 'WM_APP+12
  Private Const CAMERA_ENABLED As Integer = &H1
  Private Const CAMERA_DISABLED As Integer = &H0
  Private Const WM_USER As Integer = &H400
  Private Const WM_ACTIVATE_CAMERAVIEW As Integer = WM_USER + 1
  Private Const WM_CANCELMODE As Integer = &H1F

  Private Shared Function SetTaskBarEnabled(ByVal bEnabled As Boolean) As Boolean
    Dim hwnd As IntPtr = FindWindow("HHTaskBar", Nothing)

    If Not hwnd.Equals(IntPtr.Zero) Then
      If bEnabled Then
        Return EnableWindow(hwnd, True)
      Else
        Return EnableWindow(hwnd, False)
      End If
    End If
    Return True
  End Function

  Private Shared Function SetTaskbarVisible(ByVal visible As Boolean) As Boolean
    Dim hwnd As IntPtr = FindWindow("HHTaskBar", Nothing)

    If Not hwnd.Equals(IntPtr.Zero) Then
      If visible Then
        Return SHFullScreen(hwnd, SHFS_SHOWTASKBAR)
      Else
        Return SHFullScreen(hwnd, SHFS_HIDETASKBAR)
      End If
    End If
  End Function

  Private Shared Function SetStartButtonVisible(ByVal visible As Boolean) As Boolean
    Dim hwnd As IntPtr = GetForegroundWindow()

    If Not hwnd.Equals(IntPtr.Zero) Then
      If visible Then
        Return SHFullScreen(hwnd, SHFS_SHOWSTARTICON)
      Else
        Return SHFullScreen(hwnd, SHFS_HIDESTARTICON)
      End If
    End If
  End Function

  Private Shared Function SetSIPVisible(ByVal visible As Boolean) As Boolean
    Dim hwnd As IntPtr = GetForegroundWindow()

    If Not hwnd.Equals(IntPtr.Zero) Then
      If visible Then
        Return SHFullScreen(hwnd, SHFS_HIDESIPBUTTON)
      Else
        Return SHFullScreen(hwnd, SHFS_HIDESIPBUTTON)
      End If
    End If
  End Function

  Public Shared Sub ShowTaskBar()
    SetTaskBarEnabled(True)
    SetTaskbarVisible(True)
  End Sub

  Public Shared Sub HideTaskBar()
    SetTaskbarVisible(False)
    SetTaskBarEnabled(False)
  End Sub

  Public Shared Sub ShowSIP()
    SetSIPVisible(True)
  End Sub

  Public Shared Sub HideSIP()
    SetSIPVisible(False)
  End Sub

  Public Shared Sub HideStartButton()
    SetStartButtonVisible(False)
  End Sub

  Public Shared Sub ShowStartButton()
    SetStartButtonVisible(True)
  End Sub

  Public Sub MySendMessage(ByVal target As String, _
                           ByVal message As Integer, _
                           ByVal lParam As Integer, _
                           ByVal wParam As Integer)
    Dim hwnd As IntPtr = FindWindow(target, Nothing)
    Dim msg As Microsoft.WindowsCE.Forms.Message = Microsoft.WindowsCE.Forms.Message.Create(hwnd, message, lParam, wParam)
    MessageWindow.SendMessage(msg)
  End Sub

  'Enables / Disables the camera
  Private Sub btnDisableCam_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisableCam.Click
    MySendMessage("HHTaskBar", WM_ENABLE, 0, CAMERA_INDICATOR)
    'EnableWindow(WM_ACTIVATE_CAMERAVIEW, False)
    'MySendMessage("HHTaskBar", CAMERA_INDICATOR, WM_ENABLE, CAMERA_DISABLED)
    'MySendMessage("HHTaskBar", WM_ACTIVATE_CAMERAVIEW, WM_ENABLE, CAMERA_DISABLED)
    'MySendMessage("HHTaskBar", WM_CANCELMODE, 0, 0)
  End Sub

  Private Sub btnEnableCam_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnableCam.Click
    MySendMessage("HHTaskBar", WM_ENABLE, 1, CAMERA_INDICATOR)
    'EnableWindow(WM_ACTIVATE_CAMERAVIEW, True)
    'MySendMessage("HHTaskBar", WM_CANCELMODE, 1, 0)
    'MySendMessage("HHTaskBar", CAMERA_INDICATOR, WM_ENABLE, CAMERA_ENABLED)
  End Sub

End Class