我想开发一个应用程序,它不允许用户在打开时打开或跳转到另一个应用程序。它应该在3210。例如,如果我的应用程序是打开(正在运行)并且用户试图打开任何其他Windows应用程序(如“媒体播放器”),则不应该打开它。该应用程序甚至不应该允许“任务管理器”运行。应用程序在运行时应该完全阻止Windows环境。开发一个不会失去焦点的应用程序?
回答
一个很好的问题。 :)
是可以实现它在VB中?
答案是是!
容易吗?
绝对不是!
但是,这里有几条关于如何解决问题的提示。
1)禁用任务管理器
Sub DisableTaskManager()
Shell "REG add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableTaskMgr /t REG_DWORD /d 1 /f", vbNormalFocus
End Sub
Sub EnableTaskManager()
Shell "REG add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableTaskMgr /t REG_DWORD /d 0 /f", vbNormalFocus
End Sub
2)确保你的程序是始终在最前面
一)隐藏任务栏
Option Explicit
'~~> http://allapi.mentalis.org/apilist/FindWindow.shtml
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName _
As String) As Long
'~~> http://allapi.mentalis.org/apilist/SetWindowPos.shtml
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const SWP_HIDEWINDOW = &H80
Private Const SWP_SHOWWINDOW = &H40
'~~> Show/Hide Taskbar
Sub Sample()
'~~> To show the taskbar
ShowTskBar True
'~~> To hide the taskbar
ShowTskBar False
End Sub
Sub ShowTskBar(ShouldI As Boolean)
Dim Sid As Long
Sid = FindWindow("Shell_traywnd", "")
If ShouldI = True Then
If Sid > 0 Then _
Sid = SetWindowPos(Sid, 0, 0, 0, 0, 0, SWP_SHOWWINDOW)
Else
If Sid > 0 Then _
Sid = SetWindowPos(Sid, 0, 0, 0, 0, 0, SWP_HIDEWINDOW)
End If
End Sub
b)证明你在上面
'~~> http://www.allapi.net/apilist/SetWindowPos.shtml
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Private Sub Form_Activate()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, _
SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub
B应用常亮)显示在最大化模式
您的应用程序最大限度地提高您的形式,使得台式机只显示你的形式,因为它显示了在Kiosk应用程序。根据需要,您还可以禁用最小化按钮或标题栏。 在这种情况下,请记得添加一个按钮,以便用户可以单击该按钮以退出表格。
3)禁用开始菜单
此代码取决于您使用的Windows版本。在Google上搜索,你会发现很多例子。
同样,你必须照顾一些小的小事情,但这篇文章会给你一个良好的开端。如果您正在寻找在那么一个地方,一个完整的解决方案,我怀疑你永远不会得到它;)
HTH
逻辑思维+1。 – 2012-04-22 22:43:40
+1可怕的东西 – 2012-04-23 07:28:15
谢谢普拉迪普/ JFC :) – 2012-04-23 08:33:06
看看在Desktop APIi创建自己的“沙箱”,但非常小心,因为它很容易将自己锁定在主桌面之外。
另请参阅this question了解更多信息。
- 1. 防止另一个应用程序在VB.net中失去焦点
- 2. 我如何检测一个Flex应用程序失去焦点
- 3. WM_SETFOCUS,获取刚刚失去焦点的应用程序
- 4. Qt - 关注失去焦点的应用程序?
- 5. 当窗口关闭时,我的应用程序失去焦点
- 6. JPopupMenu不应该失去焦点
- 7. 应用程序失去焦点隐藏窗口
- 8. 当子菜单关闭时,WPF应用程序失去焦点
- 9. 如何检测应用程序何时失去焦点?
- 10. 当treeview项目失去焦点时会触发哪个事件
- 11. 层失去焦点
- 12. UIGestureRecognizer“失去焦点”?
- 13. TextBox失去焦点
- 14. java - 失去焦点
- 15. 失去焦点的一个jQuery计算开始
- 16. 失去焦点发布的Visual Studio 2013
- 17. Phonegap deviceready事件只在应用程序失去焦点时触发
- 18. c#检测应用程序的焦点丢失焦点
- 19. Delphi应用程序丢失焦点
- 20. 的Windows 10 UWP话筒丢失当应用程序失去焦点
- 21. Android的webview失去焦点
- 22. 失去焦点的按钮
- 23. 的UISearchBar失去焦点
- 24. 失去焦点的页面
- 25. wpf键盘焦点:菜单打开后失去焦点?
- 26. 反应Noob - onChange元素失去焦点
- 27. change()仅在失去焦点时才会触发
- 28. 在SAPUI5应用程序的输入字段失去它的焦点
- 29. Flex:失去组件焦点
- 30. 窗口失去焦点
好吧,祝你好运 – 2012-04-22 19:18:25
如果要创建就像那些在许多电子卖场发现一个Kiosk应用程序,你必须依靠组策略在Windows 7多在自己的应用程序的限制。 Google,“在Windows 7中禁用任务管理器” – 2012-04-22 19:23:51
这个过去被称为“系统模式窗口”。我说“习惯了”,因为从Win32开始,微软没有提供任何内置的方法来实现它,甚至试图做到这一点,他们极力阻止它。 (尽管他们有时试图为自己的产品做这件事)。 – RBarryYoung 2012-04-22 19:24:50